1// Package a is a package for testing go to definition. 2package a //@mark(aPackage, "a "),hover("a ", aPackage) 3 4import ( 5 "fmt" 6 "go/types" 7 "sync" 8) 9 10var ( 11 // x is a variable. 12 x string //@x,hover("x", x) 13) 14 15// Constant block. When I hover on h, I should see this comment. 16const ( 17 // When I hover on g, I should see this comment. 18 g = 1 //@g,hover("g", g) 19 20 h = 2 //@h,hover("h", h) 21) 22 23// z is a variable too. 24var z string //@z,hover("z", z) 25 26type A string //@mark(AString, "A") 27 28func AStuff() { //@AStuff 29 x := 5 30 Random2(x) //@godef("dom2", Random2) 31 Random() //@godef("()", Random) 32 33 var err error //@err 34 fmt.Printf("%v", err) //@godef("err", err) 35 36 var y string //@string,hover("string", string) 37 _ = make([]int, 0) //@make,hover("make", make) 38 39 var mu sync.Mutex 40 mu.Lock() //@Lock,hover("Lock", Lock) 41 42 var typ *types.Named //@mark(typesImport, "types"),hover("types", typesImport) 43 typ.Obj().Name() //@Name,hover("Name", Name) 44} 45 46type A struct { 47} 48 49func (_ A) Hi() {} //@mark(AHi, "Hi") 50 51type S struct { 52 Field int //@mark(AField, "Field") 53 R // embed a struct 54 H // embed an interface 55} 56 57type R struct { 58 Field2 int //@mark(AField2, "Field2") 59} 60 61func (_ R) Hey() {} //@mark(AHey, "Hey") 62 63type H interface { 64 Goodbye() //@mark(AGoodbye, "Goodbye") 65} 66 67type I interface { 68 B() //@mark(AB, "B") 69 J 70} 71 72type J interface { 73 Hello() //@mark(AHello, "Hello") 74} 75