1// errorcheck -0 -l -m
2
3// Copyright 2017 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7// Issue 21709: range expression overly escapes.
8
9package p
10
11type S struct{}
12
13func (s *S) Inc() {} // ERROR "s does not escape"
14var N int
15
16func F1() {
17	var s S
18	for i := 0; i < N; i++ {
19		fs := []func(){ // ERROR "\[\]func\(\){...} does not escape"
20			s.Inc, // ERROR "s.Inc does not escape"
21		}
22		for _, f := range fs {
23			f()
24		}
25	}
26}
27
28func F2() {
29	var s S
30	for i := 0; i < N; i++ {
31		for _, f := range []func(){ // ERROR "\[\]func\(\){...} does not escape"
32			s.Inc, // ERROR "s.Inc does not escape"
33		} {
34			f()
35		}
36	}
37}
38