From f74c1f3e5a117c22aa87a2754715066cb8dfe0fe Mon Sep 17 00:00:00 2001 From: magic-akari Date: Sat, 12 Oct 2024 15:05:49 +0800 Subject: [PATCH] fix(es/lints): Correct the false positive error of TS2309 (#9635) **Related issue:** - Closes https://github.com/swc-project/swc/issues/9632 --- .changeset/wicked-windows-occur.md | 6 ++++++ crates/swc_ecma_lints/src/rules/duplicate_exports.rs | 4 +++- crates/swc_ecma_lints/tests/pass/issue-9632/1/input.ts | 9 +++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 .changeset/wicked-windows-occur.md create mode 100644 crates/swc_ecma_lints/tests/pass/issue-9632/1/input.ts diff --git a/.changeset/wicked-windows-occur.md b/.changeset/wicked-windows-occur.md new file mode 100644 index 000000000000..49e23d989eb9 --- /dev/null +++ b/.changeset/wicked-windows-occur.md @@ -0,0 +1,6 @@ +--- +swc_core: patch +swc_ecma_lints: patch +--- + +fix(es/lints): Correct the false positive error of TS2309 diff --git a/crates/swc_ecma_lints/src/rules/duplicate_exports.rs b/crates/swc_ecma_lints/src/rules/duplicate_exports.rs index fca3ffdd2fb1..942990e04a3b 100644 --- a/crates/swc_ecma_lints/src/rules/duplicate_exports.rs +++ b/crates/swc_ecma_lints/src/rules/duplicate_exports.rs @@ -1,4 +1,4 @@ -use std::collections::hash_map::Entry; +use std::{collections::hash_map::Entry, mem}; use swc_atoms::JsWord; use swc_common::{collections::AHashMap, errors::HANDLER, Span}; @@ -82,7 +82,9 @@ impl Visit for DuplicateExports { fn visit_ts_module_decl(&mut self, d: &TsModuleDecl) { if !d.declare { + let old = mem::take(self); d.visit_children_with(self); + *self = old; } } diff --git a/crates/swc_ecma_lints/tests/pass/issue-9632/1/input.ts b/crates/swc_ecma_lints/tests/pass/issue-9632/1/input.ts new file mode 100644 index 000000000000..ab9852c08aa8 --- /dev/null +++ b/crates/swc_ecma_lints/tests/pass/issue-9632/1/input.ts @@ -0,0 +1,9 @@ +import * as meta from "./meta.js"; + +function nameof(obj: unknown) { } + +namespace nameof { + export import version = meta.version; +} + +export = nameof; \ No newline at end of file