For import fix, for "foo/index" module, use "foo" as default export name, not "index" (#22651)

This commit is contained in:
Andy 2018-03-16 14:00:33 -07:00 committed by GitHub
parent 3b6ae8536f
commit adf3635a1f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 4 deletions

View file

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

View file

@ -0,0 +1,12 @@
/// <reference path="fourslash.ts" />
// @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`]);