diff --git a/lib/util/visit-import.js b/lib/util/visit-import.js index c44e2fe6..7379f852 100644 --- a/lib/util/visit-import.js +++ b/lib/util/visit-import.js @@ -37,9 +37,9 @@ module.exports = function visitImport( return { [[ "ExportAllDeclaration", - "ExportDefaultDeclaration", "ExportNamedDeclaration", "ImportDeclaration", + "ImportExpression", ]](node) { const sourceNode = node.source const name = sourceNode && stripImportPathParams(sourceNode.value) diff --git a/tests/lib/rules/file-extension-in-import.js b/tests/lib/rules/file-extension-in-import.js index 45701d26..a584b31d 100644 --- a/tests/lib/rules/file-extension-in-import.js +++ b/tests/lib/rules/file-extension-in-import.js @@ -238,5 +238,22 @@ new RuleTester({ options: ["never"], errors: [{ messageId: "forbidExt", data: { ext: ".cjs" } }], }, + + // import() + { + filename: fixture("test.js"), + code: "function f() { import('./a') }", + output: "function f() { import('./a.js') }", + parserOptions: { ecmaVersion: 2020 }, + errors: [{ messageId: "requireExt", data: { ext: ".js" } }], + }, + { + filename: fixture("test.js"), + code: "function f() { import('./a.js') }", + output: "function f() { import('./a') }", + options: ["never"], + parserOptions: { ecmaVersion: 2020 }, + errors: [{ messageId: "forbidExt", data: { ext: ".js" } }], + }, ], }) diff --git a/tests/lib/rules/no-extraneous-import.js b/tests/lib/rules/no-extraneous-import.js index 611b1c21..fe399909 100644 --- a/tests/lib/rules/no-extraneous-import.js +++ b/tests/lib/rules/no-extraneous-import.js @@ -85,5 +85,13 @@ ruleTester.run("no-extraneous-import", rule, { code: "import bbb from 'bbb'", errors: ['"bbb" is extraneous.'], }, + + // import() + { + filename: fixture("dependencies/a.js"), + code: "function f() { import('bbb') }", + parserOptions: { ecmaVersion: 2020 }, + errors: ['"bbb" is extraneous.'], + }, ], }) diff --git a/tests/lib/rules/no-missing-import.js b/tests/lib/rules/no-missing-import.js index fef51990..b1f19ac7 100644 --- a/tests/lib/rules/no-missing-import.js +++ b/tests/lib/rules/no-missing-import.js @@ -210,5 +210,13 @@ ruleTester.run("no-missing-import", rule, { code: "import a from './A.js';", errors: ['"./A.js" is not found.'], }, + + // import() + { + filename: fixture("test.js"), + code: "function f() { import('no-exist-package-0') }", + parserOptions: { ecmaVersion: 2020 }, + errors: ['"no-exist-package-0" is not found.'], + }, ], }) diff --git a/tests/lib/rules/no-unpublished-import.js b/tests/lib/rules/no-unpublished-import.js index c82a159b..c79c6fda 100644 --- a/tests/lib/rules/no-unpublished-import.js +++ b/tests/lib/rules/no-unpublished-import.js @@ -244,5 +244,13 @@ ruleTester.run("no-unpublished-import", rule, { env: { node: true }, errors: ['"../2/a.js" is not published.'], }, + + // import() + { + filename: fixture("2/test.js"), + code: "function f() { import('./ignore1.js') }", + parserOptions: { ecmaVersion: 2020 }, + errors: ['"./ignore1.js" is not published.'], + }, ], })