This test shows we prefer rangeable funcs in range statements.

-- flags --
-ignore_extra_diags

-- range_func.go --
package rangefunc

func iterNot(func(int)) {}
func iter0(func() bool) {}
func iter1(func(int) bool) {}
func iter2(func(int, int) bool)

func _() {
	for range i { //@rank(re"() {", "iter0", "iterNot"),rank(re"() {", "iter1", "iterNot"),rank(re"() {", "iter2", "iterNot")
	}

	for k := range i { //@rank(re"() {", "iter1", "iterNot"),rank(re"() {", "iter1", "iter0"),rank(re"() {", "iter2", "iter0")
	}

	for k, v := range i { //@rank(re"() {", "iter2", "iterNot"),rank(re"() {", "iter2", "iter0"),rank(re"() {", "iter2", "iter1")
	}
}
