From adf3635a1f7f482e7785565b7545e40eb7f6e5d1 Mon Sep 17 00:00:00 2001 From: Andy Date: Fri, 16 Mar 2018 14:00:33 -0700 Subject: [PATCH] For import fix, for "foo/index" module, use "foo" as default export name, not "index" (#22651) --- src/services/codefixes/importFixes.ts | 9 +++++---- .../fourslash/importNameCodeFixDefaultExport3.ts | 12 ++++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 tests/cases/fourslash/importNameCodeFixDefaultExport3.ts diff --git a/src/services/codefixes/importFixes.ts b/src/services/codefixes/importFixes.ts index 5368a36346..b0366a5898 100644 --- a/src/services/codefixes/importFixes.ts +++ b/src/services/codefixes/importFixes.ts @@ -802,21 +802,22 @@ namespace ts.codefix { } export function moduleSymbolToValidIdentifier(moduleSymbol: Symbol, target: ScriptTarget): string { - return moduleSpecifierToValidIdentifier(removeFileExtension(getBaseFileName(moduleSymbol.name)), target); + return moduleSpecifierToValidIdentifier(removeFileExtension(stripQuotes(moduleSymbol.name)), target); } export function moduleSpecifierToValidIdentifier(moduleSpecifier: string, target: ScriptTarget): string { + const baseName = getBaseFileName(removeSuffix(moduleSpecifier, "/index")); let res = ""; let lastCharWasValid = true; - const firstCharCode = moduleSpecifier.charCodeAt(0); + const firstCharCode = baseName.charCodeAt(0); if (isIdentifierStart(firstCharCode, target)) { res += String.fromCharCode(firstCharCode); } else { lastCharWasValid = false; } - for (let i = 1; i < moduleSpecifier.length; i++) { - const ch = moduleSpecifier.charCodeAt(i); + for (let i = 1; i < baseName.length; i++) { + const ch = baseName.charCodeAt(i); const isValid = isIdentifierPart(ch, target); if (isValid) { let char = String.fromCharCode(ch); diff --git a/tests/cases/fourslash/importNameCodeFixDefaultExport3.ts b/tests/cases/fourslash/importNameCodeFixDefaultExport3.ts new file mode 100644 index 0000000000..4334745e21 --- /dev/null +++ b/tests/cases/fourslash/importNameCodeFixDefaultExport3.ts @@ -0,0 +1,12 @@ +/// + +// @Filename: /foo-bar/index.ts +////export default 0; + +// @Filename: /b.ts +////[|foo/**/Bar|] + +goTo.file("/b.ts"); +verify.importFixAtPosition([`import fooBar from "./foo-bar"; + +fooBar`]);