From 47f213756f11cec476970b8f8ac9a21869697b41 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Fri, 10 Aug 2018 10:46:57 -0700 Subject: [PATCH] getDefaultExportInfo: Use `getImmediateAliasedSymbol` instead of `getAliasedSymbol` --- src/services/codefixes/importFixes.ts | 9 ++--- .../importNameCodeFix_reExportDefault.ts | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 tests/cases/fourslash/importNameCodeFix_reExportDefault.ts diff --git a/src/services/codefixes/importFixes.ts b/src/services/codefixes/importFixes.ts index f8d1976ab77ea..030b9286741e3 100644 --- a/src/services/codefixes/importFixes.ts +++ b/src/services/codefixes/importFixes.ts @@ -414,8 +414,6 @@ namespace ts.codefix { } function getDefaultExportInfo(defaultExport: Symbol, moduleSymbol: Symbol, program: Program): { readonly symbolForMeaning: Symbol, readonly name: string } | undefined { - const checker = program.getTypeChecker(); - const localSymbol = getLocalSymbolForExportDefault(defaultExport); if (localSymbol) return { symbolForMeaning: localSymbol, name: localSymbol.name }; @@ -423,12 +421,11 @@ namespace ts.codefix { if (name !== undefined) return { symbolForMeaning: defaultExport, name }; if (defaultExport.flags & SymbolFlags.Alias) { - const aliased = checker.getAliasedSymbol(defaultExport); - return getDefaultExportInfo(aliased, Debug.assertDefined(aliased.parent), program); + const aliased = program.getTypeChecker().getImmediateAliasedSymbol(defaultExport); + return aliased && getDefaultExportInfo(aliased, Debug.assertDefined(aliased.parent), program); } else { - const moduleName = moduleSymbolToValidIdentifier(moduleSymbol, program.getCompilerOptions().target!); - return moduleName === undefined ? undefined : { symbolForMeaning: defaultExport, name: moduleName }; + return { symbolForMeaning: defaultExport, name: moduleSymbolToValidIdentifier(moduleSymbol, program.getCompilerOptions().target!) }; } } diff --git a/tests/cases/fourslash/importNameCodeFix_reExportDefault.ts b/tests/cases/fourslash/importNameCodeFix_reExportDefault.ts new file mode 100644 index 0000000000000..29e587845a29f --- /dev/null +++ b/tests/cases/fourslash/importNameCodeFix_reExportDefault.ts @@ -0,0 +1,40 @@ +/// + +// @Filename: /user.ts +////foo; + +// @Filename: /user2.ts +////unnamed; + +// @Filename: /reExportNamed.ts +////export { default } from "./named"; + +// @Filename: /reExportUnnamed.ts +////export { default } from "./unnamed"; + +// @Filename: /named.ts +////function foo() {} +////export default foo; + +// @Filename: /unnamed.ts +////export default 0; + +goTo.file("/user.ts"); +verify.importFixAtPosition([ +`import foo from "./named"; + +foo;`, +`import foo from "./reExportNamed"; + +foo;`, +]); + +goTo.file("/user2.ts"); +verify.importFixAtPosition([ +`import unnamed from "./unnamed"; + +unnamed;`, +`import unnamed from "./reExportUnnamed"; + +unnamed;`, +]);