getDefaultExportInfo: Use getImmediateAliasedSymbol instead of getAliasedSymbol (#26364)

This commit is contained in:
Andy 2018-08-10 14:35:18 -07:00 committed by GitHub
parent 9ba224d3b0
commit 4bb740218d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 6 deletions

View file

@ -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!) };
}
}

View 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;`,
]);