diff --git a/src/services/codefixes/importFixes.ts b/src/services/codefixes/importFixes.ts index 73cedc883b..a7f0e2e081 100644 --- a/src/services/codefixes/importFixes.ts +++ b/src/services/codefixes/importFixes.ts @@ -237,12 +237,12 @@ namespace ts.codefix { return parent as ImportDeclaration; case SyntaxKind.ExternalModuleReference: return (parent as ExternalModuleReference).parent; - case SyntaxKind.ImportEqualsDeclaration: - return parent as ImportEqualsDeclaration; - default: - Debug.assert(parent.kind === SyntaxKind.ExportDeclaration); + case SyntaxKind.ExportDeclaration: + case SyntaxKind.CallExpression: // For "require()" calls // Ignore these, can't add imports to them. return undefined; + default: + Debug.fail(); } } diff --git a/tests/cases/fourslash/completionsImport_require.ts b/tests/cases/fourslash/completionsImport_require.ts new file mode 100644 index 0000000000..e0a6b00d46 --- /dev/null +++ b/tests/cases/fourslash/completionsImport_require.ts @@ -0,0 +1,42 @@ +/// + +// @allowJs: true + +// @Filename: /a.ts +////export const foo = 0; + +// @Filename: /b.js +////const a = require("./a"); +////fo/*b*/ + +// @Filename: /c.js +////const a = import("./a"); +////fo/*c*/ + +goTo.marker("b"); +verify.completionListContains({ name: "foo", source: "/a" }, "const foo: 0", "", "const", /*spanIndex*/ undefined, /*hasAction*/ true, { includeExternalModuleExports: true }); + +verify.applyCodeActionFromCompletion("b", { + name: "foo", + source: "/a", + description: `Import 'foo' from "./a".`, + // TODO: GH#18445 + newFileContent: `import { foo } from "./a";\r +\r +const a = require("./a"); +fo`, +}); + +goTo.marker("c"); +verify.completionListContains({ name: "foo", source: "/a" }, "const foo: 0", "", "const", /*spanIndex*/ undefined, /*hasAction*/ true, { includeExternalModuleExports: true }); + +verify.applyCodeActionFromCompletion("c", { + name: "foo", + source: "/a", + description: `Import 'foo' from "./a".`, + // TODO: GH#18445 + newFileContent: `import { foo } from "./a";\r +\r +const a = import("./a"); +fo`, +});