-- flags -- -ignore_extra_diags -- go.mod -- module unimported.test go 1.18 -- unimported/export_test.go -- package unimported var TestExport int //@item(testexport, "TestExport", "var (from \"unimported.test/unimported\")", "var") -- signature/signature.go -- package signature func Foo() {} -- foo/foo.go -- package foo type StructFoo struct{ F int } -- baz/baz.go -- package baz import ( f "unimported.test/foo" ) var FooStruct f.StructFoo -- unimported/unimported.go -- package unimported func _() { http //@complete("p", http, httptest, httptrace, httputil) // container/ring is extremely unlikely to be imported by anything, so shouldn't have type information. ring.Ring //@complete(re"R()ing", ringring) signature.Foo //@complete("Foo", signaturefoo) context.Bac //@complete(" //", contextBackground) } // Create markers for unimported std lib packages. Only for use by this test. /* http */ //@item(http, "http", "\"net/http\"", "package") /* httptest */ //@item(httptest, "httptest", "\"net/http/httptest\"", "package") /* httptrace */ //@item(httptrace, "httptrace", "\"net/http/httptrace\"", "package") /* httputil */ //@item(httputil, "httputil", "\"net/http/httputil\"", "package") /* ring.Ring */ //@item(ringring, "Ring", "(from \"container/ring\")", "var") /* signature.Foo */ //@item(signaturefoo, "Foo", "func (from \"unimported.test/signature\")", "func") /* context.Background */ //@item(contextBackground, "Background", "func (from \"context\")", "func") // Now that we no longer type-check imported completions, // we don't expect the context.Background().Err method (see golang/go#58663). /* context.Background().Err */ //@item(contextBackgroundErr, "Background().Err", "func (from \"context\")", "method") -- unimported/unimported_cand_type.go -- package unimported import ( _ "context" "unimported.test/baz" ) func _() { foo.StructFoo{} //@item(litFooStructFoo, "foo.StructFoo{}", "struct{...}", "struct") // We get the literal completion for "foo.StructFoo{}" even though we haven't // imported "foo" yet. baz.FooStruct = f //@snippet(" //", litFooStructFoo, "foo.StructFoo{$0\\}") } -- unimported/x_test.go -- package unimported_test import ( "testing" ) func TestSomething(t *testing.T) { _ = unimported.TestExport //@complete("TestExport", testexport) }