From c0e5c80e53fa0b589a8bb06e50ad9d7a7426cc29 Mon Sep 17 00:00:00 2001 From: Andy Date: Fri, 9 Nov 2018 12:48:10 -0800 Subject: [PATCH] Add exports of current module to getSymbolsInScope (#28442) --- src/compiler/checker.ts | 5 ++++- .../cases/fourslash/completionsExportImport.ts | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/completionsExportImport.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 4f04c6f8e82..4f11d2ac8d2 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -27698,8 +27698,11 @@ namespace ts { } switch (location.kind) { + case SyntaxKind.SourceFile: + if (!isExternalOrCommonJsModule(location)) break; + // falls through case SyntaxKind.ModuleDeclaration: - copySymbols(getSymbolOfNode(location as ModuleDeclaration).exports!, meaning & SymbolFlags.ModuleMember); + copySymbols(getSymbolOfNode(location as ModuleDeclaration | SourceFile).exports!, meaning & SymbolFlags.ModuleMember); break; case SyntaxKind.EnumDeclaration: copySymbols(getSymbolOfNode(location as EnumDeclaration).exports!, meaning & SymbolFlags.EnumMember); diff --git a/tests/cases/fourslash/completionsExportImport.ts b/tests/cases/fourslash/completionsExportImport.ts new file mode 100644 index 00000000000..d9468708652 --- /dev/null +++ b/tests/cases/fourslash/completionsExportImport.ts @@ -0,0 +1,17 @@ +/// + +////declare global { +//// namespace N { +//// const foo: number; +//// } +////} +////export import foo = N.foo; +/////**/ + +verify.completions({ + marker: "", + exact: [ + { name: "foo", kind: "alias", kindModifiers: "export", text: "(alias) const foo: number\nimport foo = N.foo" }, + ...completion.globalsPlus([{ name: "N", kind: "module", kindModifiers: "declare", text: "namespace N" }]), + ], +});