Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201105173854-bc9fc8d8c4bc / go / pointer / testdata / rtti.go
1 package main
2
3 // Regression test for guru crash
4 // https://code.google.com/p/go/issues/detail?id=6605
5 //
6 // Using reflection, methods may be called on types that are not the
7 // operand of any ssa.MakeInterface instruction.  In this example,
8 // (Y).F is called by deriving the type Y from *Y.  Prior to the fix,
9 // no RTTI (or method set) for type Y was included in the program, so
10 // the F() call would crash.
11
12 import "reflect"
13
14 var a int
15
16 type X struct{}
17
18 func (X) F() *int {
19         return &a
20 }
21
22 type I interface {
23         F() *int
24 }
25
26 func main() {
27         type Y struct{ X }
28         print(reflect.Indirect(reflect.ValueOf(new(Y))).Interface().(I).F()) // @pointsto main.a
29 }