diff --git a/crates/oxc_linter/fixtures/import/oxc/indirect-export.js b/crates/oxc_linter/fixtures/import/oxc/indirect-export.js new file mode 100644 index 000000000..345b2d126 --- /dev/null +++ b/crates/oxc_linter/fixtures/import/oxc/indirect-export.js @@ -0,0 +1,2 @@ +import { a } from '../named-exports' +export { a } \ No newline at end of file diff --git a/crates/oxc_linter/src/rules/import/namespace.rs b/crates/oxc_linter/src/rules/import/namespace.rs index d3c01b8de..8264f3e48 100644 --- a/crates/oxc_linter/src/rules/import/namespace.rs +++ b/crates/oxc_linter/src/rules/import/namespace.rs @@ -198,7 +198,13 @@ fn get_module_request_name(name: &str, module_record: &ModuleRecord) -> Option name_span.name().as_str() == name, + ExportImportName::Name(name_span) => { + return name_span.name().as_str() == name + && module_record.import_entries.iter().any(|entry| { + entry.local_name.name().as_str() == name + && entry.import_name.is_namespace_object() + }) + } _ => false, }) { @@ -443,6 +449,7 @@ fn test() { (r#"import * as a from "./deep-es7/a"; console.log(a.b.c.d.e.f)"#, None), (r#"import * as a from "./deep-es7/a"; var {b:{c:{d:{e}}}} = a"#, None), (r#"import { b } from "./deep-es7/a"; var {c:{d:{e}}} = b"#, None), + (r"import { a } from './oxc/indirect-export'; console.log(a.nothing)", None), ]; let fail = vec![