diff --git a/internal/lsp/cache/load.go b/internal/lsp/cache/load.go index d875119d96..1068784c71 100644 --- a/internal/lsp/cache/load.go +++ b/internal/lsp/cache/load.go @@ -222,13 +222,13 @@ func (s *snapshot) setMetadata(ctx context.Context, pkgPath packagePath, pkg *pa continue } - switch m.forTest { - case "": + switch { + case m.forTest == "": // A normal package. s.workspacePackages[m.id] = pkgPath - case m.pkgPath: - // The test variant of some workspace package. To load it, we need to - // load the non-test variant with -test. + case m.forTest == m.pkgPath, m.forTest+"_test" == m.pkgPath: + // The test variant of some workspace package or its x_test. + // To load it, we need to load the non-test variant with -test. s.workspacePackages[m.id] = m.forTest default: // A test variant of some intermediate package. We don't care about it. diff --git a/internal/lsp/testdata/lsp/primarymod/godef/a/a_x_test.go b/internal/lsp/testdata/lsp/primarymod/godef/a/a_x_test.go index 85f21cc766..4631eba2c0 100644 --- a/internal/lsp/testdata/lsp/primarymod/godef/a/a_x_test.go +++ b/internal/lsp/testdata/lsp/primarymod/godef/a/a_x_test.go @@ -5,4 +5,5 @@ import ( ) func TestA2(t *testing.T) { //@TestA2,godef(TestA2, TestA2) + Nonexistant() //@diag("Nonexistant", "compiler", "undeclared name: Nonexistant", "error") } diff --git a/internal/lsp/testdata/lsp/summary.txt.golden b/internal/lsp/testdata/lsp/summary.txt.golden index 7469015615..26df609c26 100644 --- a/internal/lsp/testdata/lsp/summary.txt.golden +++ b/internal/lsp/testdata/lsp/summary.txt.golden @@ -7,7 +7,7 @@ DeepCompletionsCount = 5 FuzzyCompletionsCount = 8 RankedCompletionsCount = 120 CaseSensitiveCompletionsCount = 4 -DiagnosticsCount = 43 +DiagnosticsCount = 44 FoldingRangesCount = 2 FormatCount = 6 ImportCount = 8