-------- @referrers package-decl --------
references to package main ("referrers")
	var _ renamed.T

-------- @referrers type --------
references to type s struct{f int}
	_ = s{}.f // @referrers ref-field "f"
	var s2 s

-------- @referrers ref-package --------
references to package lib
	_ = (lib.Type).Method // ref from external test package
	_ = (lib.Type).Method // ref from internal test package
	const c = lib.Const // @describe ref-const "Const"
	lib.Func()          // @describe ref-func "Func"
	lib.Type // @definition embedded-other-pkg "Type"
	lib.Var++           // @describe ref-var "Var"
	var _ lib.Const    // @definition qualified-const "Const"
	var _ lib.Func     // @definition qualified-func "Func"
	var _ lib.Nonesuch // @definition qualified-nomember "Nonesuch"
	var _ lib.Outer // @describe lib-outer "Outer"
	var _ lib.Type     // @definition qualified-type "Type"
	var _ lib.Type // @describe ref-pkg "lib"
	var _ lib.Var      // @definition qualified-var "Var"
	var _ lib2.Type    // @definition qualified-type-renaming "Type"
	var t lib.Type      // @describe ref-type "Type"
	var v lib.Type = lib.Const // @referrers ref-package "lib"
	var v lib.Type = lib.Const // @referrers ref-package "lib"
	var v lib.Type = lib.Const // @referrers ref-package "lib"
	var v lib.Type = lib.Const // @referrers ref-package "lib"
	var x lib.T           // @definition lexical-pkgname "lib"
type _ lib.T
var _ lib.Var // @what pkg "lib"

-------- @referrers ref-method --------
references to func (lib.Type).Method(x *int) *int
	_ = (lib.Type).Method // ref from external test package
	_ = (lib.Type).Method // ref from internal test package
	_ = v.Method
	_ = v.Method
	_ = v.Method               // @referrers ref-method "Method"
	_ = v.Method               // @referrers ref-method "Method"
	p := t.Method(&a)   // @describe ref-method "Method"

-------- @referrers ref-local --------
references to var v lib.Type
	_ = v.Method
	_ = v.Method               // @referrers ref-method "Method"
	v++
	v++ //@referrers ref-local "v"

-------- @referrers ref-field --------
references to field f int
	_ = s{}.f // @referrers ref-field "f"
	s2.f = 1

-------- @referrers unexported-from-test --------
references to var notexported int
	_ = notexported

-------- @referrers ref-type-U --------
references to type U int
open testdata/src/referrers/nosuchfile.y: no such file or directory (+ 1 more refs in this file)

