45 lines
1.0 KiB
Go
45 lines
1.0 KiB
Go
//args: -Eexportloopref
|
|
package testdata
|
|
|
|
func dummyFunction() {
|
|
var array [4]*int
|
|
var slice []*int
|
|
var ref *int
|
|
var str struct{ x *int }
|
|
|
|
println("loop expecting 10, 11, 12, 13")
|
|
for i, p := range []int{10, 11, 12, 13} {
|
|
printp(&p)
|
|
slice = append(slice, &p) // ERROR : "exporting a pointer for the loop variable p"
|
|
array[i] = &p // ERROR : "exporting a pointer for the loop variable p"
|
|
if i%2 == 0 {
|
|
ref = &p // ERROR : "exporting a pointer for the loop variable p"
|
|
str.x = &p // ERROR : "exporting a pointer for the loop variable p"
|
|
}
|
|
var vStr struct{ x *int }
|
|
var vArray [4]*int
|
|
var v *int
|
|
if i%2 == 0 {
|
|
v = &p
|
|
vArray[1] = &p
|
|
vStr.x = &p
|
|
}
|
|
_ = v
|
|
}
|
|
|
|
println(`slice expecting "10, 11, 12, 13" but "13, 13, 13, 13"`)
|
|
for _, p := range slice {
|
|
printp(p)
|
|
}
|
|
println(`array expecting "10, 11, 12, 13" but "13, 13, 13, 13"`)
|
|
for _, p := range array {
|
|
printp(p)
|
|
}
|
|
println(`captured value expecting "12" but "13"`)
|
|
printp(ref)
|
|
}
|
|
|
|
func printp(p *int) {
|
|
println(*p)
|
|
}
|