Skip to content

Commit e335a36

Browse files
author
Andy
authored
Change 'if' in combined switch case to two separate cases (#28444)
1 parent c0e5c80 commit e335a36

File tree

1 file changed

+18
-21
lines changed

1 file changed

+18
-21
lines changed

src/services/refactors/convertExport.ts

+18-21
Original file line numberDiff line numberDiff line change
@@ -166,38 +166,35 @@ namespace ts.refactor {
166166
}
167167

168168
function changeNamedToDefaultImport(importingSourceFile: SourceFile, ref: Identifier, changes: textChanges.ChangeTracker): void {
169-
const { parent } = ref;
169+
const parent = ref.parent as PropertyAccessExpression | ImportSpecifier | ExportSpecifier;
170170
switch (parent.kind) {
171171
case SyntaxKind.PropertyAccessExpression:
172172
// `a.foo` --> `a.default`
173173
changes.replaceNode(importingSourceFile, ref, createIdentifier("default"));
174174
break;
175-
case SyntaxKind.ImportSpecifier:
176-
case SyntaxKind.ExportSpecifier: {
177-
const spec = parent as ImportSpecifier | ExportSpecifier;
178-
if (spec.kind === SyntaxKind.ImportSpecifier) {
179-
// `import { foo } from "./a";` --> `import foo from "./a";`
180-
// `import { foo as bar } from "./a";` --> `import bar from "./a";`
181-
const defaultImport = createIdentifier(spec.name.text);
182-
if (spec.parent.elements.length === 1) {
183-
changes.replaceNode(importingSourceFile, spec.parent, defaultImport);
184-
}
185-
else {
186-
changes.delete(importingSourceFile, spec);
187-
changes.insertNodeBefore(importingSourceFile, spec.parent, defaultImport);
188-
}
175+
case SyntaxKind.ImportSpecifier: {
176+
// `import { foo } from "./a";` --> `import foo from "./a";`
177+
// `import { foo as bar } from "./a";` --> `import bar from "./a";`
178+
const defaultImport = createIdentifier(parent.name.text);
179+
if (parent.parent.elements.length === 1) {
180+
changes.replaceNode(importingSourceFile, parent.parent, defaultImport);
189181
}
190182
else {
191-
// `export { foo } from "./a";` --> `export { default as foo } from "./a";`
192-
// `export { foo as bar } from "./a";` --> `export { default as bar } from "./a";`
193-
// `export { foo as default } from "./a";` --> `export { default } from "./a";`
194-
// (Because `export foo from "./a";` isn't valid syntax.)
195-
changes.replaceNode(importingSourceFile, spec, makeExportSpecifier("default", spec.name.text));
183+
changes.delete(importingSourceFile, parent);
184+
changes.insertNodeBefore(importingSourceFile, parent.parent, defaultImport);
196185
}
197186
break;
198187
}
188+
case SyntaxKind.ExportSpecifier: {
189+
// `export { foo } from "./a";` --> `export { default as foo } from "./a";`
190+
// `export { foo as bar } from "./a";` --> `export { default as bar } from "./a";`
191+
// `export { foo as default } from "./a";` --> `export { default } from "./a";`
192+
// (Because `export foo from "./a";` isn't valid syntax.)
193+
changes.replaceNode(importingSourceFile, parent, makeExportSpecifier("default", parent.name.text));
194+
break;
195+
}
199196
default:
200-
Debug.failBadSyntaxKind(parent);
197+
Debug.assertNever(parent);
201198
}
202199

203200
}

0 commit comments

Comments
 (0)