// errorcheck -0 -l -m

// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Issue 21709: range expression overly escapes.

package p

type S struct{}

func (s *S) Inc() {} // ERROR "s does not escape"
var N int

func F1() {
	// BAD: s should not escape
	var s S // ERROR "moved to heap: s"
	for i := 0; i < N; i++ {
		fs := []func(){ // ERROR "\[\]func\(\) literal does not escape"
			s.Inc, // ERROR "s.Inc does not escape"
		}
		for _, f := range fs {
			f()
		}
	}
}

func F2() {
	// BAD: s should not escape
	var s S // ERROR "moved to heap: s"
	for i := 0; i < N; i++ {
		for _, f := range []func(){ // ERROR "\[\]func\(\) literal does not escape"
			s.Inc, // ERROR "s.Inc does not escape"
		} {
			f()
		}
	}
}
