| // 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() { |
| 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() { |
| 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() |
| } |
| } |
| } |