From 4abad556bed9fbb98ceba918e178375ee79f15ee Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 4 Mar 2022 10:43:04 -0800 Subject: [PATCH] Prevent crash on code fixes on default keyword (#48028) --- src/services/codefixes/importFixes.ts | 7 ++++--- tests/cases/fourslash/addAllMissingImportsNoCrash2.ts | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 tests/cases/fourslash/addAllMissingImportsNoCrash2.ts diff --git a/src/services/codefixes/importFixes.ts b/src/services/codefixes/importFixes.ts index c3e6087839b..485fc027279 100644 --- a/src/services/codefixes/importFixes.ts +++ b/src/services/codefixes/importFixes.ts @@ -847,9 +847,10 @@ namespace ts.codefix { const checker = program.getTypeChecker(); const compilerOptions = program.getCompilerOptions(); const symbolName = getSymbolName(sourceFile, checker, symbolToken, compilerOptions); - // "default" is a keyword and not a legal identifier for the import, so we don't expect it here - Debug.assert(symbolName !== InternalSymbolName.Default, "'default' isn't a legal identifier and couldn't occur here"); - + // "default" is a keyword and not a legal identifier for the import, but appears as an identifier. + if (symbolName === InternalSymbolName.Default) { + return undefined; + } const isValidTypeOnlyUseSite = isValidTypeOnlyAliasUseSite(symbolToken); const useRequire = shouldUseRequire(sourceFile, program); const exportInfo = getExportInfos(symbolName, isJSXTagName(symbolToken), getMeaningFromLocation(symbolToken), cancellationToken, sourceFile, program, useAutoImportProvider, host, preferences); diff --git a/tests/cases/fourslash/addAllMissingImportsNoCrash2.ts b/tests/cases/fourslash/addAllMissingImportsNoCrash2.ts new file mode 100644 index 00000000000..9e1dfaa1fa8 --- /dev/null +++ b/tests/cases/fourslash/addAllMissingImportsNoCrash2.ts @@ -0,0 +1,8 @@ +/// + +// @Filename: file1.ts +//// export { /**/default }; + +goTo.marker(); + +verify.not.codeFixAllAvailable("fixMissingImport");