diff --git a/tsc/internal/fourslash/tests/documentSymbolTopLevelImports_test.go b/tsc/internal/fourslash/tests/documentSymbolTopLevelImports_test.go new file mode 100644 index 0000000000000..b41d058c4f9cf --- /dev/null +++ b/tsc/internal/fourslash/tests/documentSymbolTopLevelImports_test.go @@ -0,0 +1,22 @@ +package fourslash_test + +import ( + "testing" + + "github.com/microsoft/TypeScript/tsc/internal/fourslash" + "github.com/microsoft/TypeScript/tsc/internal/testutil" +) + +func TestDocumentSymbolTopLevelImports(t *testing.T) { + t.Parallel() + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `import DefaultComponent from "./component"; +import * as utils from "./utils"; +import { value, original as renamed } from "./values"; +import type { Options } from "./types"; + +const local = 1;` + f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content) + defer done() + f.VerifyBaselineDocumentSymbol(t) +} diff --git a/tsc/internal/ls/symbols.go b/tsc/internal/ls/symbols.go index c9a6d4e27fa42..70e726f81ad5a 100644 --- a/tsc/internal/ls/symbols.go +++ b/tsc/internal/ls/symbols.go @@ -147,6 +147,9 @@ func (l *LanguageService) getDocumentSymbolsForChildren(ctx context.Context, nod if ctx.Err() != nil { return true } + if node.Parent.Kind == ast.KindSourceFile && ast.IsImportOrImportEqualsDeclaration(node) { + return false + } if node.Flags&ast.NodeFlagsReparsed == 0 { if jsdocs := node.JSDoc(file); len(jsdocs) > 0 { for _, jsdoc := range jsdocs { diff --git a/tsc/testdata/baselines/reference/fourslash/documentSymbols/documentSymbolTopLevelImports.baseline b/tsc/testdata/baselines/reference/fourslash/documentSymbols/documentSymbolTopLevelImports.baseline new file mode 100644 index 0000000000000..b793e5ad54858 --- /dev/null +++ b/tsc/testdata/baselines/reference/fourslash/documentSymbols/documentSymbolTopLevelImports.baseline @@ -0,0 +1,11 @@ +// === Document Symbols === +// === /documentSymbolTopLevelImports.ts === +// import DefaultComponent from "./component"; +// import * as utils from "./utils"; +// import { value, original as renamed } from "./values"; +// import type { Options } from "./types"; +// +// const <|[|{| name: local, kind: Variable |}local|] = 1|>; + +// === Details === +(Variable) local diff --git a/tsc/testdata/baselines/reference/fourslash/documentSymbols/navigationBarImports.baseline b/tsc/testdata/baselines/reference/fourslash/documentSymbols/navigationBarImports.baseline index 3c9221113f190..7e6f2febaf51e 100644 --- a/tsc/testdata/baselines/reference/fourslash/documentSymbols/navigationBarImports.baseline +++ b/tsc/testdata/baselines/reference/fourslash/documentSymbols/navigationBarImports.baseline @@ -1,11 +1,4 @@ // === Document Symbols === -// === /navigationBarImports.ts === -// import <|[|{| name: a, kind: Variable |}a|]|>, {<|[|{| name: b, kind: Variable |}b|]|>} from "m"; -// <|import [|{| name: c, kind: Variable |}c|] = require("m");|> -// import <|* as [|{| name: d, kind: Variable |}d|]|> from "m"; + // === Details === -(Variable) a -(Variable) b -(Variable) c -(Variable) d diff --git a/tsc/testdata/baselines/reference/fourslash/documentSymbols/navigationBarItemsExports.baseline b/tsc/testdata/baselines/reference/fourslash/documentSymbols/navigationBarItemsExports.baseline index fab8b1a03e99d..5db94382ecbad 100644 --- a/tsc/testdata/baselines/reference/fourslash/documentSymbols/navigationBarItemsExports.baseline +++ b/tsc/testdata/baselines/reference/fourslash/documentSymbols/navigationBarItemsExports.baseline @@ -4,11 +4,10 @@ // // export { <|b as [|{| name: B, kind: Variable |}B|]|> } from "a" // -// <|export import [|{| name: e, kind: Variable |}e|] = require("a");|> +// export import e = require("a"); // // export * from "a"; // no bindings here // === Details === (Variable) a (Variable) B -(Variable) e diff --git a/tsc/testdata/baselines/reference/fourslash/documentSymbols/navigationBarItemsImports.baseline b/tsc/testdata/baselines/reference/fourslash/documentSymbols/navigationBarItemsImports.baseline index 5d2b303fd6554..7e6f2febaf51e 100644 --- a/tsc/testdata/baselines/reference/fourslash/documentSymbols/navigationBarItemsImports.baseline +++ b/tsc/testdata/baselines/reference/fourslash/documentSymbols/navigationBarItemsImports.baseline @@ -1,23 +1,4 @@ // === Document Symbols === -// === /navigationBarItemsImports.ts === -// import <|[|{| name: d1, kind: Variable |}d1|]|> from "a"; -// -// import { <|[|{| name: a, kind: Variable |}a|]|> } from "a"; -// -// import { <|b as [|{| name: B, kind: Variable |}B|]|> } from "a" -// -// import <|[|{| name: d2, kind: Variable |}d2|]|>, { <|[|{| name: c, kind: Variable |}c|]|>, <|d as [|{| name: D, kind: Variable |}D|]|> } from "a" -// -// <|import [|{| name: e, kind: Variable |}e|] = require("a");|> -// -// import <|* as [|{| name: ns, kind: Variable |}ns|]|> from "a"; + // === Details === -(Variable) d1 -(Variable) a -(Variable) B -(Variable) d2 -(Variable) c -(Variable) D -(Variable) e -(Variable) ns