From 3f77e1eae12a6043088e49f5f98705b189d70c34 Mon Sep 17 00:00:00 2001 From: Andy Date: Fri, 1 Jun 2018 10:28:00 -0700 Subject: [PATCH] Support import completion for merged declaration exports (#24539) (#24572) --- src/services/completions.ts | 2 +- ...nsImport_default_fromMergedDeclarations.ts | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/completionsImport_default_fromMergedDeclarations.ts diff --git a/src/services/completions.ts b/src/services/completions.ts index d8b0bbc138d..c274dd810b7 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -628,7 +628,7 @@ namespace ts.Completions { } const { moduleSymbol } = symbolOriginInfo; - const exportedSymbol = skipAlias(symbol.exportSymbol || symbol, checker); + const exportedSymbol = checker.getMergedSymbol(skipAlias(symbol.exportSymbol || symbol, checker)); const { moduleSpecifier, codeAction } = codefix.getImportCompletionAction( exportedSymbol, moduleSymbol, diff --git a/tests/cases/fourslash/completionsImport_default_fromMergedDeclarations.ts b/tests/cases/fourslash/completionsImport_default_fromMergedDeclarations.ts new file mode 100644 index 00000000000..ca4c993d511 --- /dev/null +++ b/tests/cases/fourslash/completionsImport_default_fromMergedDeclarations.ts @@ -0,0 +1,31 @@ +/// + +// @module: esnext + +// @Filename: /a.ts +////declare module "m" { +//// export default class M {} +////} + +// @Filename: /b.ts +////declare module "m" { +//// export default interface M {} +////} + +// @Filename: /c.ts +/////**/ + +goTo.marker(""); +verify.completionListContains({ name: "M", source: "m" }, "class M", "", "class", /*spanIndex*/ undefined, /*hasAction*/ true, { + includeCompletionsForModuleExports: true, + sourceDisplay: "m", +}); + +verify.applyCodeActionFromCompletion("", { + name: "M", + source: "m", + description: `Import 'M' from module "m"`, + newFileContent: `import M from "m"; + +`, +});