diff --git a/src/services/completions.ts b/src/services/completions.ts index 522950e87ef4b..9f1a7cf068860 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -633,7 +633,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 0000000000000..ca4c993d511e5 --- /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"; + +`, +});