// Package a is a package for testing go to definition. package a //@mark(aPackage, "a "),hover("a ", aPackage) import ( "fmt" "go/types" "sync" ) var ( // x is a variable. x string //@x,hover("x", x) ) // Constant block. When I hover on h, I should see this comment. const ( // When I hover on g, I should see this comment. g = 1 //@g,hover("g", g) h = 2 //@h,hover("h", h) ) // z is a variable too. var z string //@z,hover("z", z) type A string //@mark(AString, "A") func AStuff() { //@AStuff x := 5 Random2(x) //@godef("dom2", Random2) Random() //@godef("()", Random) var err error //@err fmt.Printf("%v", err) //@godef("err", err) var y string //@string,hover("string", string) _ = make([]int, 0) //@make,hover("make", make) var mu sync.Mutex mu.Lock() //@Lock,hover("Lock", Lock) var typ *types.Named //@mark(typesImport, "types"),hover("types", typesImport) typ.Obj().Name() //@Name,hover("Name", Name) } type A struct { } func (_ A) Hi() {} //@mark(AHi, "Hi") type S struct { Field int //@mark(AField, "Field") R // embed a struct H // embed an interface } type R struct { Field2 int //@mark(AField2, "Field2") } func (_ R) Hey() {} //@mark(AHey, "Hey") type H interface { Goodbye() //@mark(AGoodbye, "Goodbye") } type I interface { B() //@mark(AB, "B") J } type J interface { Hello() //@mark(AHello, "Hello") }