Basic test of references within a single package.

-- go.mod --
module example.com
go 1.12

-- a/a.go --
package a

type i int //@loc(decli, "i"), refs("i", decli, argi, returni, embeddedi)

func _(_ i) []bool { //@loc(argi, "i")
	return nil
}

func _(_ []byte) i { //@loc(returni, "i")
	return 0
}

var q string //@loc(declq, "q"), refs("q", declq, assignq, bobq)

var Q string //@loc(declQ, "Q"), refs("Q", declQ)

func _() {
	q = "hello" //@loc(assignq, "q")
	bob := func(_ string) {}
	bob(q) //@loc(bobq, "q")
}

type e struct {
	i //@loc(embeddedi, "i"), refs("i", embeddedi, embeddediref)
}

func _() {
	_ = e{}.i //@loc(embeddediref, "i")
}
