diff --git a/crates/oxc_linter/src/rules/import/no_unresolved.rs b/crates/oxc_linter/src/rules/import/no_unresolved.rs index eabe73a6e..a995c141c 100644 --- a/crates/oxc_linter/src/rules/import/no_unresolved.rs +++ b/crates/oxc_linter/src/rules/import/no_unresolved.rs @@ -55,6 +55,10 @@ impl Rule for NoUnresolved { } for requested_module in requested_modules { + // ignore type-only imports and exports + if requested_module.is_type() { + continue; + } ctx.diagnostic(NoUnresolvedDiagnostic(requested_module.span())); } } @@ -102,6 +106,9 @@ fn test() { r"require(foo)", // Unsupported extensions r#"import "./test.png""#, + // ignore type-only imports and exports + r"import type { m } from 'mod'", + r"export type * from 'mod'", ]; let fail = vec![ @@ -128,7 +135,7 @@ fn test() { ]; Tester::new(NoUnresolved::NAME, pass, fail) - .change_rule_path("index.js") + .change_rule_path("index.ts") .with_import_plugin(true) .test_and_snapshot(); } diff --git a/crates/oxc_linter/src/snapshots/no_unresolved.snap b/crates/oxc_linter/src/snapshots/no_unresolved.snap index ce636baa6..dff9994ad 100644 --- a/crates/oxc_linter/src/snapshots/no_unresolved.snap +++ b/crates/oxc_linter/src/snapshots/no_unresolved.snap @@ -3,55 +3,55 @@ source: crates/oxc_linter/src/tester.rs expression: no_unresolved --- ⚠ eslint-plugin-import(no-unresolved): Ensure imports point to a file/module that can be resolved - ╭─[index.js:1:24] + ╭─[index.ts:1:24] 1 │ import reallyfake from "./reallyfake/module" · ───────────────────── ╰──── ⚠ eslint-plugin-import(no-unresolved): Ensure imports point to a file/module that can be resolved - ╭─[index.js:1:17] + ╭─[index.ts:1:17] 1 │ import bar from './baz'; · ─────── ╰──── ⚠ eslint-plugin-import(no-unresolved): Ensure imports point to a file/module that can be resolved - ╭─[index.js:1:17] + ╭─[index.ts:1:17] 1 │ import bar from './baz'; · ─────── ╰──── ⚠ eslint-plugin-import(no-unresolved): Ensure imports point to a file/module that can be resolved - ╭─[index.js:1:17] + ╭─[index.ts:1:17] 1 │ import bar from './empty-folder'; · ──────────────── ╰──── ⚠ eslint-plugin-import(no-unresolved): Ensure imports point to a file/module that can be resolved - ╭─[index.js:1:22] + ╭─[index.ts:1:22] 1 │ import { DEEP } from 'in-alternate-root'; · ─────────────────── ╰──── ⚠ eslint-plugin-import(no-unresolved): Ensure imports point to a file/module that can be resolved - ╭─[index.js:1:21] + ╭─[index.ts:1:21] 1 │ export { foo } from "./does-not-exist" · ────────────────── ╰──── ⚠ eslint-plugin-import(no-unresolved): Ensure imports point to a file/module that can be resolved - ╭─[index.js:1:15] + ╭─[index.ts:1:15] 1 │ export * from "./does-not-exist" · ────────────────── ╰──── ⚠ eslint-plugin-import(no-unresolved): Ensure imports point to a file/module that can be resolved - ╭─[index.js:1:22] + ╭─[index.ts:1:22] 1 │ export * as bar from "./does-not-exist" · ────────────────── ╰──── × Unexpected token - ╭─[index.js:1:8] + ╭─[index.ts:1:8] 1 │ export bar from "./does-not-exist" · ─── ╰────