diff --git a/crates/oxc_linter/fixtures/import/cycles/typescript/ts-depth-type-and-value-imports.ts b/crates/oxc_linter/fixtures/import/cycles/typescript/ts-depth-type-and-value-imports.ts new file mode 100644 index 000000000..38056d729 --- /dev/null +++ b/crates/oxc_linter/fixtures/import/cycles/typescript/ts-depth-type-and-value-imports.ts @@ -0,0 +1,5 @@ +// @ts-ignore +import { foo } from './ts-value'; + +// @ts-ignore +import type { foo as FooType } from '../depth-zero'; diff --git a/crates/oxc_linter/fixtures/import/cycles/typescript/ts-value.ts b/crates/oxc_linter/fixtures/import/cycles/typescript/ts-value.ts new file mode 100644 index 000000000..3329a7d97 --- /dev/null +++ b/crates/oxc_linter/fixtures/import/cycles/typescript/ts-value.ts @@ -0,0 +1 @@ +export const foo = 'foo'; diff --git a/crates/oxc_linter/src/rules/import/no_cycle.rs b/crates/oxc_linter/src/rules/import/no_cycle.rs index 87a3ca01b..268bb9e4f 100644 --- a/crates/oxc_linter/src/rules/import/no_cycle.rs +++ b/crates/oxc_linter/src/rules/import/no_cycle.rs @@ -147,10 +147,15 @@ impl NoCycle { for module_record_ref in &module_record.loaded_modules { let resolved_absolute_path = &module_record_ref.resolved_absolute_path; - let was_imported_as_type = - &module_record_ref.import_entries.iter().all(|entry| entry.is_type); - if self.ignore_types && *was_imported_as_type { - continue; + if self.ignore_types { + let was_imported_as_type = &module_record + .import_entries + .iter() + .filter(|entry| entry.module_request.name() == module_record_ref.key()) + .all(|entry| entry.is_type); + if *was_imported_as_type { + continue; + } } if !state.traversed.insert(resolved_absolute_path.clone()) { continue; @@ -229,6 +234,10 @@ fn test() { r#"import { foo } from "./typescript/ts-types-depth-two";"#, Some(json!([{"ignoreTypes":true}])), ), + ( + r#"import { foo } from "./typescript/ts-depth-type-and-value-imports";"#, + Some(json!([{"ignoreTypes":true}])), + ), // Flow not supported // (r#"import { bar } from "./flow-types""#, None), // (r#"import { bar } from "./flow-types-only-importing-type""#, None),