Fixes #13236
Change-Id: If902ac66718e0a0790fab9835921ce4ef980965b
Reviewed-on: https://go-review.googlesource.com/21183
Run-TryBot: Rob Pike <r@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
if !ok || id.Obj == nil {
return true
}
+ if f.pkg.types[id].Type == nil {
+ // Not referring to a variable
+ return true
+ }
if key != nil && id.Obj == key.Obj || val != nil && id.Obj == val.Obj {
f.Bad(id.Pos(), "range variable", id.Name, "captured by func literal")
}
_ = f // ERROR "range variable f captured by func literal"
}()
}
+ type T struct {
+ v int
+ }
+ for _, v := range s {
+ go func() {
+ _ = T{v: 1}
+ _ = []int{v: 1} // ERROR "range variable v captured by func literal"
+ }()
+ }
}