Fix crash in organizeImports

Fixes: #29236
This commit is contained in:
Klaus Meinhardt
2019-01-03 16:20:46 +01:00
parent b8def16e92
commit 6a9ad0e2eb
2 changed files with 13 additions and 8 deletions

View File

@@ -28,12 +28,12 @@ namespace ts.OrganizeImports {
organizeImportsWorker(topLevelExportDecls, coalesceExports);
for (const ambientModule of sourceFile.statements.filter(isAmbientModule)) {
const ambientModuleBody = getModuleBlock(ambientModule as ModuleDeclaration)!; // TODO: GH#18217
if (!ambientModule.body) { continue; }
const ambientModuleImportDecls = ambientModuleBody.statements.filter(isImportDeclaration);
const ambientModuleImportDecls = ambientModule.body.statements.filter(isImportDeclaration);
organizeImportsWorker(ambientModuleImportDecls, coalesceAndOrganizeImports);
const ambientModuleExportDecls = ambientModuleBody.statements.filter(isExportDeclaration);
const ambientModuleExportDecls = ambientModule.body.statements.filter(isExportDeclaration);
organizeImportsWorker(ambientModuleExportDecls, coalesceExports);
}
@@ -81,11 +81,6 @@ namespace ts.OrganizeImports {
}
}
function getModuleBlock(moduleDecl: ModuleDeclaration): ModuleBlock | undefined {
const body = moduleDecl.body;
return body && !isIdentifier(body) ? (isModuleBlock(body) ? body : getModuleBlock(body)) : undefined;
}
function removeUnusedImports(oldImports: ReadonlyArray<ImportDeclaration>, sourceFile: SourceFile, program: Program) {
const typeChecker = program.getTypeChecker();
const jsxNamespace = typeChecker.getJsxNamespace();

View File

@@ -274,6 +274,16 @@ export const Other = 1;
assert.isEmpty(changes);
});
it("doesn't crash on shorthand ambient module", () => {
const testFile = {
path: "/a.ts",
content: "declare module '*';",
};
const languageService = makeLanguageService(testFile);
const changes = languageService.organizeImports({ type: "file", fileName: testFile.path }, testFormatSettings, emptyOptions);
assert.isEmpty(changes);
});
testOrganizeImports("Renamed_used",
{
path: "/test.ts",