getDefaultExportInfo: Use getImmediateAliasedSymbol
instead of getAliasedSymbol
(#26364)
This commit is contained in:
parent
9ba224d3b0
commit
4bb740218d
|
@ -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!) };
|
||||
}
|
||||
}
|
||||
|
||||
|
|
40
tests/cases/fourslash/importNameCodeFix_reExportDefault.ts
Normal file
40
tests/cases/fourslash/importNameCodeFix_reExportDefault.ts
Normal file
|
@ -0,0 +1,40 @@
|
|||
/// <reference path="fourslash.ts" />
|
||||
|
||||
// @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;`,
|
||||
]);
|
Loading…
Reference in a new issue