package unimported

func _() {
	http //@unimported("p", nethttp)
	// 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)

	context.Bac //@unimported(" //", contextBackground, contextBackgroundErr)
}

// Create markers for unimported std lib packages. Only for use by this test.
/* http */ //@item(nethttp, "http", "\"net/http\"", "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")

/* context.Background */ //@item(contextBackground, "Background", "func() context.Context (from \"context\")", "func")
/* context.Background().Err */ //@item(contextBackgroundErr, "Background().Err", "func() error (from \"context\")", "method")
