GoPLS Viewer

Home|gopls/go/pointer/testdata/another.go
1//go:build ignore
2// +build ignore
3
4package main
5
6var unknown bool
7
8type S string
9
10func incr(x intint { return x + 1 }
11
12func main() {
13    var i interface{}
14    i = 1
15    if unknown {
16        i = S("foo")
17    }
18    if unknown {
19        i = (func(intint))(nil// NB type compares equal to that below.
20    }
21    // Look, the test harness can handle equal-but-not-String-equal
22    // types because we parse types and using a typemap.
23    if unknown {
24        i = (func(x inty int))(nil)
25    }
26    if unknown {
27        i = incr
28    }
29    print(i// @types int | S | func(int, int) | func(int) int
30
31    // NB, an interface may never directly alias any global
32    // labels, even though it may contain pointers that do.
33    print(i)                 // @pointsto makeinterface:func(x int) int | makeinterface:func(x int, y int) | makeinterface:func(int, int) | makeinterface:int | makeinterface:command-line-arguments.S
34    print(i.(func(intint)) // @pointsto command-line-arguments.incr
35
36    print() // regression test for crash
37}
38
MembersX
unknown
S
incr
incr.x
main
Members
X