-------- @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 (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 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)

