package unimported

func _() {
	//@unimported("", bytes, context, cryptoslashrand, time, unsafe, externalpackage)
	// container/ring is extremely unlikely to be imported by anything, so shouldn't have type information.
	ring.Ring //@unimported("Ring", ringring)
	signature.Foo //@unimported("Foo", signaturefoo)
}

// Create markers for unimported std lib packages. Only for use by this test.
/* bytes */ //@item(bytes, "bytes", "\"bytes\"", "package")
/* context */ //@item(context, "context", "\"context\"", "package")
/* rand */ //@item(cryptoslashrand, "rand", "\"crypto/rand\"", "package")
/* time */ //@item(time, "time", "\"time\"", "package")
/* unsafe */ //@item(unsafe, "unsafe", "\"unsafe\"", "package")
/* pkg */ //@item(externalpackage, "pkg", "\"example.com/extramodule/pkg\"", "package")

/* ring.Ring */ //@item(ringring, "Ring", "(from \"container/ring\")", "var")

/* signature.Foo */ //@item(signaturefoo, "Foo", "func(a string, b int) (c bool) (from \"golang.org/x/tools/internal/lsp/signature\")", "func")