From 6f72e9a23b5c6d338b2025d5f4cf23748c2b8caa Mon Sep 17 00:00:00 2001 From: CPunisher <1343316114@qq.com> Date: Fri, 21 Nov 2025 13:01:40 +0800 Subject: [PATCH 1/4] (AI) add #[cfg(swc_ast_unknown)] --- .cargo/config.toml | 5 ++ Cargo.lock | 46 ++++++++----------- .../mut-cjs-exports/src/local_export_strip.rs | 11 +++++ contrib/mut-cjs-exports/src/utils.rs | 4 ++ packages/emotion/transform/src/lib.rs | 4 ++ packages/formatjs/transform/src/lib.rs | 2 + packages/prefresh/transform/src/lib.rs | 4 ++ .../transform/src/utils/analyzer.rs | 4 ++ .../transform/src/utils/mod.rs | 8 ++++ .../top_level_binding_collector.rs | 2 + .../visitors/transpile_css_prop/transpile.rs | 16 +++++++ .../transform/src/import_analyzer.rs | 4 ++ .../swc-sdk/transform/src/import_analyzer.rs | 4 ++ .../transform-imports/transform/src/lib.rs | 6 +++ 14 files changed, 93 insertions(+), 27 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index a2482365a..d72472bab 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -27,3 +27,8 @@ rustflags = ["-C", "target-feature=-crt-static", "-C", "link-arg=-lgcc"] [target.armv7-unknown-linux-gnueabihf] linker = "arm-linux-gnueabihf-gcc" + +[target.'cfg(target_arch = "wasm32")'] +rustflags = [ + "--cfg=swc_ast_unknown" +] diff --git a/Cargo.lock b/Cargo.lock index 177053634..6213c0883 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1351,10 +1351,11 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -3018,9 +3019,9 @@ dependencies = [ [[package]] name = "swc_ecma_minifier" -version = "36.0.3" +version = "36.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e07508fefa4a1aedd7937da5829a49d15553a461b696bb0590705b0abd7416c" +checksum = "33a8f18102ea39542276af77f0efe27f514fb561c784278d19ba489e2cddf308" dependencies = [ "arrayvec", "bitflags", @@ -4178,34 +4179,22 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" -dependencies = [ - "bumpalo", - "log", "once_cell", - "proc-macro2", - "quote", - "syn 2.0.87", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4213,22 +4202,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ + "bumpalo", "proc-macro2", "quote", "syn 2.0.87", - "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +dependencies = [ + "unicode-ident", +] [[package]] name = "widestring" diff --git a/contrib/mut-cjs-exports/src/local_export_strip.rs b/contrib/mut-cjs-exports/src/local_export_strip.rs index 57440aa47..8d8e400d0 100644 --- a/contrib/mut-cjs-exports/src/local_export_strip.rs +++ b/contrib/mut-cjs-exports/src/local_export_strip.rs @@ -117,6 +117,8 @@ impl VisitMut for LocalExportStrip { _ => list.push(module_decl.into()), }; } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), }; } @@ -186,6 +188,8 @@ impl VisitMut for LocalExportStrip { ModuleExportName::Str(_) => { unreachable!(r#"`export {{ "foo" }}` without src is invalid"#) } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), }; if let Some(exported) = exported { @@ -198,6 +202,8 @@ impl VisitMut for LocalExportStrip { }, span, ), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), }; (export_name, ExportItem::new(export_name_span, orig)) @@ -205,7 +211,10 @@ impl VisitMut for LocalExportStrip { (orig.sym.clone(), ExportItem::new(orig.span, orig)) } } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), })) + } /// ```javascript @@ -236,6 +245,8 @@ impl VisitMut for LocalExportStrip { } } DefaultDecl::TsInterfaceDecl(_) => {} + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } diff --git a/contrib/mut-cjs-exports/src/utils.rs b/contrib/mut-cjs-exports/src/utils.rs index 390f73b99..853826c2a 100644 --- a/contrib/mut-cjs-exports/src/utils.rs +++ b/contrib/mut-cjs-exports/src/utils.rs @@ -133,6 +133,8 @@ pub(crate) fn key_from_export_name(n: &ModuleExportName) -> (Atom, Span) { }, s.span, ), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } @@ -143,6 +145,8 @@ pub(crate) fn local_ident_from_export_name(n: ModuleExportName) -> Ident { Some(s) => s.clone(), None => panic!("non-utf8 export name: {:?}", s.value), }, + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), }; match Ident::verify_symbol(&name) { diff --git a/packages/emotion/transform/src/lib.rs b/packages/emotion/transform/src/lib.rs index eb3cfa7c8..cba8630e8 100644 --- a/packages/emotion/transform/src/lib.rs +++ b/packages/emotion/transform/src/lib.rs @@ -291,6 +291,8 @@ impl<'a, C: Comments> EmotionTransformer<'a, C> { ModuleExportName::Str(v) => { v.value.as_str() == Some(exported.name.as_str()) } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), }, _ => named.local.as_ref() == exported.name, }; @@ -312,6 +314,8 @@ impl<'a, C: Comments> EmotionTransformer<'a, C> { self.import_packages .insert(namespace.local.to_id(), PackageMeta::Namespace(c.clone())); } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } } diff --git a/packages/formatjs/transform/src/lib.rs b/packages/formatjs/transform/src/lib.rs index 836613315..0e10e15e7 100644 --- a/packages/formatjs/transform/src/lib.rs +++ b/packages/formatjs/transform/src/lib.rs @@ -89,6 +89,8 @@ fn get_message_descriptor_key_from_jsx(name: &JSXAttrName) -> &str { match name { JSXAttrName::Ident(name) | JSXAttrName::JSXNamespacedName(JSXNamespacedName { name, .. }) => &name.sym, + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } // NOTE: Do not support evaluatePath() diff --git a/packages/prefresh/transform/src/lib.rs b/packages/prefresh/transform/src/lib.rs index d11798881..a80abfe8c 100644 --- a/packages/prefresh/transform/src/lib.rs +++ b/packages/prefresh/transform/src/lib.rs @@ -105,6 +105,8 @@ impl VisitMut for PrefreshPlugin { let name = match imported { ModuleExportName::Ident(ident) => &ident.sym, ModuleExportName::Str(s) => &s.value.to_atom_lossy(), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), }; if name == "createContext" { self.local.insert(spec.local.to_id()); @@ -116,6 +118,8 @@ impl VisitMut for PrefreshPlugin { ImportSpecifier::Namespace(spec) => { self.lib_local.insert(spec.local.to_id()); } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } } diff --git a/packages/styled-components/transform/src/utils/analyzer.rs b/packages/styled-components/transform/src/utils/analyzer.rs index f73e63aa7..b00b9ae17 100644 --- a/packages/styled-components/transform/src/utils/analyzer.rs +++ b/packages/styled-components/transform/src/utils/analyzer.rs @@ -80,6 +80,8 @@ impl Visit for Analyzer<'_> { ModuleExportName::Str(v) => { v.value.as_str().expect("non-utf8 export name") } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), }) .unwrap_or(&*s.local.sym); self.state @@ -92,6 +94,8 @@ impl Visit for Analyzer<'_> { ImportSpecifier::Namespace(s) => { self.state.imported_local_ns = Some(s.local.to_id()); } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } } diff --git a/packages/styled-components/transform/src/utils/mod.rs b/packages/styled-components/transform/src/utils/mod.rs index 8c9700fdb..83682c8bf 100644 --- a/packages/styled-components/transform/src/utils/mod.rs +++ b/packages/styled-components/transform/src/utils/mod.rs @@ -16,6 +16,8 @@ pub(crate) fn get_prop_key_as_expr(p: &Prop) -> Cow { Prop::Getter(p) => prop_name_to_expr(&p.key), Prop::Setter(p) => prop_name_to_expr(&p.key), Prop::Method(p) => prop_name_to_expr(&p.key), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } @@ -26,6 +28,8 @@ pub(crate) fn prop_name_to_expr(p: &PropName) -> Cow { PropName::Num(p) => Cow::Owned(Expr::Lit(Lit::Num(p.clone()))), PropName::BigInt(p) => Cow::Owned(Expr::Lit(Lit::BigInt(p.clone()))), PropName::Computed(e) => Cow::Borrowed(&e.expr), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } @@ -37,6 +41,8 @@ pub(crate) fn get_prop_name(p: &Prop) -> Option<&PropName> { Prop::Getter(p) => Some(&p.key), Prop::Setter(p) => Some(&p.key), Prop::Method(p) => Some(&p.key), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } @@ -48,6 +54,8 @@ pub(crate) fn get_prop_name2(p: &Prop) -> PropName { Prop::Getter(p) => p.key.clone(), Prop::Setter(p) => p.key.clone(), Prop::Method(p) => p.key.clone(), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } diff --git a/packages/styled-components/transform/src/visitors/transpile_css_prop/top_level_binding_collector.rs b/packages/styled-components/transform/src/visitors/transpile_css_prop/top_level_binding_collector.rs index 81f9f1f89..3e39874b2 100644 --- a/packages/styled-components/transform/src/visitors/transpile_css_prop/top_level_binding_collector.rs +++ b/packages/styled-components/transform/src/visitors/transpile_css_prop/top_level_binding_collector.rs @@ -37,6 +37,8 @@ impl Visit for TopLevelBindingCollector { ObjectPatProp::Assign(a) => self.add(&a.key.to_id()), ObjectPatProp::KeyValue(k) => k.value.visit_with(self), ObjectPatProp::Rest(_) => {} + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } } diff --git a/packages/styled-components/transform/src/visitors/transpile_css_prop/transpile.rs b/packages/styled-components/transform/src/visitors/transpile_css_prop/transpile.rs index cc4c49bc1..12efcf778 100644 --- a/packages/styled-components/transform/src/visitors/transpile_css_prop/transpile.rs +++ b/packages/styled-components/transform/src/visitors/transpile_css_prop/transpile.rs @@ -323,6 +323,8 @@ impl VisitMut for TranspileCssProp<'_> { } } JSXAttrOrSpread::SpreadElement(_) => {} + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } @@ -337,6 +339,8 @@ impl VisitMut for TranspileCssProp<'_> { } } JSXAttrOrSpread::SpreadElement(_) => {} + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } true }); @@ -418,6 +422,8 @@ fn get_name_expr(name: &JSXElementName) -> Box { obj: get_name_expr_jsx_object(&n.obj), prop: MemberProp::Ident(n.prop.clone()), })), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } match name { @@ -430,6 +436,8 @@ fn get_name_expr(name: &JSXElementName) -> Box { JSXElementName::JSXNamespacedName(..) => { unimplemented!("get_name_expr for JSXNamespacedName") } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } @@ -542,6 +550,8 @@ impl PropertyReducer<'_> { acc.push(property); } } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } acc @@ -563,6 +573,8 @@ fn set_value_of_prop(prop: &mut Prop, value: Box) { Prop::Getter(_p) => todo!(), Prop::Setter(_p) => todo!(), Prop::Method(_p) => todo!(), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } @@ -574,6 +586,8 @@ fn take_prop_value(prop: &mut Prop) -> Box { Prop::Getter(_p) => todo!(), Prop::Setter(_p) => todo!(), Prop::Method(_p) => todo!(), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } @@ -627,6 +641,8 @@ fn get_name_of_jsx_obj(el: &JSXObject) -> Atom { JSXObject::JSXMemberExpr(e) => { format!("{}{}", get_name_of_jsx_obj(&e.obj), e.prop.sym).into() } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } diff --git a/packages/swc-magic/transform/src/import_analyzer.rs b/packages/swc-magic/transform/src/import_analyzer.rs index 7ed3f2d3a..79efa648c 100644 --- a/packages/swc-magic/transform/src/import_analyzer.rs +++ b/packages/swc-magic/transform/src/import_analyzer.rs @@ -75,6 +75,8 @@ impl Visit for Analyzer<'_> { .insert(s.local.to_id(), import.src.value.clone()); continue; } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), }; self.data @@ -88,5 +90,7 @@ fn orig_name(n: &ModuleExportName) -> Atom { match n { ModuleExportName::Ident(v) => v.sym.clone(), ModuleExportName::Str(v) => v.value.as_atom().expect("non-utf8 export name").clone(), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } diff --git a/packages/swc-sdk/transform/src/import_analyzer.rs b/packages/swc-sdk/transform/src/import_analyzer.rs index a6666bcf6..9d71be7b3 100644 --- a/packages/swc-sdk/transform/src/import_analyzer.rs +++ b/packages/swc-sdk/transform/src/import_analyzer.rs @@ -136,6 +136,8 @@ impl VisitMut for Analyzer<'_> { .insert(s.local.to_id(), (import.src.value.clone(), s.local.span)); continue; } + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), }; self.data @@ -160,5 +162,7 @@ fn orig_name(n: &ModuleExportName) -> Atom { match n { ModuleExportName::Ident(v) => v.sym.clone(), ModuleExportName::Str(v) => v.value.to_atom_lossy().into_owned(), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), } } diff --git a/packages/transform-imports/transform/src/lib.rs b/packages/transform-imports/transform/src/lib.rs index ace9be7b8..32eb9b2a9 100644 --- a/packages/transform-imports/transform/src/lib.rs +++ b/packages/transform-imports/transform/src/lib.rs @@ -179,6 +179,8 @@ impl Rewriter<'_> { let name_str = match name_str { ModuleExportName::Ident(x) => Cow::Borrowed(x.as_ref()), ModuleExportName::Str(x) => x.value.to_string_lossy(), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), }; let new_path = self.new_path(Some(name_str.as_ref())); @@ -213,6 +215,8 @@ impl Rewriter<'_> { let name_str = match &ns_spec.name { ModuleExportName::Ident(x) => Cow::Borrowed(x.as_ref()), ModuleExportName::Str(x) => x.value.to_string_lossy(), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), }; let new_path = self.new_path(Some(name_str.as_ref())); let specifier = ExportSpecifier::Namespace(ns_spec.clone()); @@ -255,6 +259,8 @@ impl Rewriter<'_> { .map(|x| match x { ModuleExportName::Ident(x) => Cow::Borrowed(x.as_ref()), ModuleExportName::Str(x) => x.value.to_string_lossy(), + #[cfg(swc_ast_unknown)] + _ => panic!("unknown node"), }) .unwrap_or_else(|| Cow::Borrowed(named_spec.local.as_ref())); From b0427ae48cc7176d680473cb193b69e678d2cdd2 Mon Sep 17 00:00:00 2001 From: CPunisher <1343316114@qq.com> Date: Fri, 21 Nov 2025 14:03:56 +0800 Subject: [PATCH 2/4] Lints ignore #[cfg(swc_ast_unknown)] --- contrib/mut-cjs-exports/Cargo.toml | 3 +++ packages/emotion/transform/Cargo.toml | 3 +++ packages/formatjs/transform/Cargo.toml | 3 +++ packages/prefresh/transform/Cargo.toml | 3 +++ packages/styled-components/transform/Cargo.toml | 3 +++ packages/swc-magic/transform/Cargo.toml | 3 +++ packages/swc-sdk/transform/Cargo.toml | 3 +++ packages/transform-imports/transform/Cargo.toml | 3 +++ 8 files changed, 24 insertions(+) diff --git a/contrib/mut-cjs-exports/Cargo.toml b/contrib/mut-cjs-exports/Cargo.toml index 2e2c110ef..cbdd558b2 100644 --- a/contrib/mut-cjs-exports/Cargo.toml +++ b/contrib/mut-cjs-exports/Cargo.toml @@ -28,3 +28,6 @@ swc_core = { workspace = true, features = [ [dev-dependencies] swc_core = { workspace = true, features = ["testing_transform", "ecma_parser"] } testing = { workspace = true } + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(swc_ast_unknown)'] } \ No newline at end of file diff --git a/packages/emotion/transform/Cargo.toml b/packages/emotion/transform/Cargo.toml index 83fcc20d9..216a3b098 100644 --- a/packages/emotion/transform/Cargo.toml +++ b/packages/emotion/transform/Cargo.toml @@ -38,3 +38,6 @@ swc_ecma_parser = { workspace = true } swc_ecma_transforms_react = { workspace = true } swc_ecma_transforms_testing = { workspace = true } testing = { workspace = true } + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(swc_ast_unknown)'] } \ No newline at end of file diff --git a/packages/formatjs/transform/Cargo.toml b/packages/formatjs/transform/Cargo.toml index c29b6fff0..1d79159ed 100644 --- a/packages/formatjs/transform/Cargo.toml +++ b/packages/formatjs/transform/Cargo.toml @@ -32,3 +32,6 @@ swc_icu_messageformat_parser = { features = [ [dev-dependencies] pretty_assertions = { workspace = true } + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(swc_ast_unknown)'] } \ No newline at end of file diff --git a/packages/prefresh/transform/Cargo.toml b/packages/prefresh/transform/Cargo.toml index 61128414f..4ada09546 100644 --- a/packages/prefresh/transform/Cargo.toml +++ b/packages/prefresh/transform/Cargo.toml @@ -25,3 +25,6 @@ swc_ecma_parser = { workspace = true } swc_ecma_transforms_base = { workspace = true } swc_ecma_transforms_testing = { workspace = true } testing = { workspace = true } + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(swc_ast_unknown)'] } \ No newline at end of file diff --git a/packages/styled-components/transform/Cargo.toml b/packages/styled-components/transform/Cargo.toml index 13da7476f..ea0dcfa74 100644 --- a/packages/styled-components/transform/Cargo.toml +++ b/packages/styled-components/transform/Cargo.toml @@ -36,3 +36,6 @@ swc_ecma_parser = { workspace = true } swc_ecma_transforms = { workspace = true } swc_ecma_transforms_testing = { workspace = true } testing = { workspace = true } + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(swc_ast_unknown)'] } \ No newline at end of file diff --git a/packages/swc-magic/transform/Cargo.toml b/packages/swc-magic/transform/Cargo.toml index 5f79a8c18..d57f75624 100644 --- a/packages/swc-magic/transform/Cargo.toml +++ b/packages/swc-magic/transform/Cargo.toml @@ -27,3 +27,6 @@ swc_ecma_parser = { workspace = true } swc_ecma_transforms_base = { workspace = true } swc_ecma_transforms_testing = { workspace = true } testing = { workspace = true } + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(swc_ast_unknown)'] } \ No newline at end of file diff --git a/packages/swc-sdk/transform/Cargo.toml b/packages/swc-sdk/transform/Cargo.toml index d41c4b2ef..97c1381a7 100644 --- a/packages/swc-sdk/transform/Cargo.toml +++ b/packages/swc-sdk/transform/Cargo.toml @@ -28,3 +28,6 @@ swc_ecma_parser = { workspace = true } swc_ecma_transforms_base = { workspace = true } swc_ecma_transforms_testing = { workspace = true } testing = { workspace = true } + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(swc_ast_unknown)'] } \ No newline at end of file diff --git a/packages/transform-imports/transform/Cargo.toml b/packages/transform-imports/transform/Cargo.toml index 52b291538..61d90f34d 100644 --- a/packages/transform-imports/transform/Cargo.toml +++ b/packages/transform-imports/transform/Cargo.toml @@ -31,3 +31,6 @@ swc_ecma_visit = { workspace = true } swc_ecma_parser = { workspace = true } swc_ecma_transforms_testing = { workspace = true } testing = { workspace = true } + +[lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(swc_ast_unknown)'] } \ No newline at end of file From 38ef3eaa9fa0269b94a6c2e32f3d350d8b40e4e7 Mon Sep 17 00:00:00 2001 From: CPunisher <1343316114@qq.com> Date: Fri, 21 Nov 2025 14:34:07 +0800 Subject: [PATCH 3/4] Manually add cfg --- .cargo/config.toml | 10 ++++++---- .github/workflows/CI.yml | 4 ++++ contrib/mut-cjs-exports/package.json | 4 ++-- packages/emotion/package.json | 4 ++-- packages/formatjs/package.json | 4 ++-- packages/jest/package.json | 4 ++-- packages/loadable-components/package.json | 4 ++-- packages/noop/package.json | 2 +- packages/prefresh/package.json | 4 ++-- packages/react-remove-properties/package.json | 4 ++-- packages/relay/package.json | 4 ++-- packages/remove-console/package.json | 4 ++-- packages/styled-components/package.json | 4 ++-- packages/swc-confidential/package.json | 4 ++-- packages/swc-magic/package.json | 2 +- packages/swc-sdk/package.json | 2 +- packages/transform-imports/package.json | 4 ++-- 17 files changed, 37 insertions(+), 31 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index d72472bab..f732dc19c 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -28,7 +28,9 @@ rustflags = ["-C", "target-feature=-crt-static", "-C", "link-arg=-lgcc"] [target.armv7-unknown-linux-gnueabihf] linker = "arm-linux-gnueabihf-gcc" -[target.'cfg(target_arch = "wasm32")'] -rustflags = [ - "--cfg=swc_ast_unknown" -] +# We have not adapt this cfg for swc_ecma_minifier, which styled_jsx depends on. +# So we have to manually enable it for all crates except styled jsx. +# [target.'cfg(target_arch = "wasm32")'] +# rustflags = [ +# "--cfg=swc_ast_unknown" +# ] diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 7c3487676..9f353fb40 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -102,6 +102,10 @@ jobs: run: | cargo test --all --color always + - name: Run cargo check (swc_ast_unknown) + run: | + RUSTFLAGS='--cfg swc_ast_unknown' cargo check --workspace --exclude swc_plugin_styled_jsx --exclude styled_jsx + cargo-publish: name: "Publish" runs-on: ubuntu-latest diff --git a/contrib/mut-cjs-exports/package.json b/contrib/mut-cjs-exports/package.json index afa2a86f7..03a3a3ce3 100644 --- a/contrib/mut-cjs-exports/package.json +++ b/contrib/mut-cjs-exports/package.json @@ -16,8 +16,8 @@ "commonjs" ], "scripts": { - "build": "cargo build --release --target wasm32-unknown-unknown && cp ../../target/wasm32-unknown-unknown/release/swc_mut_cjs_exports.wasm .", - "build:debug": "cargo build --target wasm32-unknown-unknown && cp ../../target/wasm32-unknown-unknown/debug/swc_mut_cjs_exports.wasm ./swc_mut_cjs_exports_debug.wasm", + "build": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release --target wasm32-unknown-unknown && cp ../../target/wasm32-unknown-unknown/release/swc_mut_cjs_exports.wasm .", + "build:debug": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --target wasm32-unknown-unknown && cp ../../target/wasm32-unknown-unknown/debug/swc_mut_cjs_exports.wasm ./swc_mut_cjs_exports_debug.wasm", "test": "pnpm run build:debug && jest", "prepack": "pnpm run build" }, diff --git a/packages/emotion/package.json b/packages/emotion/package.json index b09232893..84eafcc08 100644 --- a/packages/emotion/package.json +++ b/packages/emotion/package.json @@ -5,8 +5,8 @@ "main": "swc_plugin_emotion.wasm", "scripts": { "prepack": "pnpm run build", - "build": "cargo build --release -p swc_plugin_emotion --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_emotion.wasm .", - "build:debug": "cargo build -p swc_plugin_emotion --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_emotion.wasm .", + "build": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_emotion --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_emotion.wasm .", + "build:debug": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build -p swc_plugin_emotion --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_emotion.wasm .", "test": "pnpm run build:debug && vitest run --testTimeout=0" }, "homepage": "https://swc.rs", diff --git a/packages/formatjs/package.json b/packages/formatjs/package.json index de9679cf6..6e7e6fd8b 100644 --- a/packages/formatjs/package.json +++ b/packages/formatjs/package.json @@ -9,8 +9,8 @@ "main": "swc_plugin_formatjs.wasm", "scripts": { "prepack": "pnpm run build", - "build": "cargo build --release -p swc_plugin_formatjs --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_formatjs.wasm .", - "build:debug": "cargo build -p swc_plugin_formatjs --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_formatjs.wasm .", + "build": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_formatjs --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_formatjs.wasm .", + "build:debug": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build -p swc_plugin_formatjs --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_formatjs.wasm .", "test": "pnpm run build:debug && vitest run --testTimeout=0" }, "homepage": "https://swc.rs", diff --git a/packages/jest/package.json b/packages/jest/package.json index 9bb3d6c48..415445e89 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -9,8 +9,8 @@ "main": "swc_plugin_jest.wasm", "scripts": { "prepack": "pnpm run build", - "build": "cargo build --release -p swc_plugin_jest --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_jest.wasm .", - "build:debug": "cargo build -p swc_plugin_jest --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_jest.wasm .", + "build": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_jest --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_jest.wasm .", + "build:debug": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build -p swc_plugin_jest --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_jest.wasm .", "test": "pnpm run build:debug && vitest run --testTimeout=0" }, "homepage": "https://swc.rs", diff --git a/packages/loadable-components/package.json b/packages/loadable-components/package.json index d1e9a3698..4b7370fcd 100644 --- a/packages/loadable-components/package.json +++ b/packages/loadable-components/package.json @@ -9,8 +9,8 @@ "main": "swc_plugin_loadable_components.wasm", "scripts": { "prepack": "pnpm run build", - "build": "cargo build --release -p swc_plugin_loadable_components --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_loadable_components.wasm .", - "build:debug": "cargo build -p swc_plugin_loadable_components --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_loadable_components.wasm .", + "build": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_loadable_components --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_loadable_components.wasm .", + "build:debug": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build -p swc_plugin_loadable_components --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_loadable_components.wasm .", "test": "pnpm run build:debug && vitest run --testTimeout=0" }, "homepage": "https://swc.rs", diff --git a/packages/noop/package.json b/packages/noop/package.json index 40eb5f139..afb7094ae 100644 --- a/packages/noop/package.json +++ b/packages/noop/package.json @@ -8,7 +8,7 @@ "description": "Noop SWC plugin, for debugging", "main": "swc_plugin_noop.wasm", "scripts": { - "prepack": "cargo build --release -p swc_plugin_noop --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_noop.wasm ." + "prepack": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_noop --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_noop.wasm ." }, "homepage": "https://swc.rs", "repository": { diff --git a/packages/prefresh/package.json b/packages/prefresh/package.json index 1a0499458..de995fc47 100644 --- a/packages/prefresh/package.json +++ b/packages/prefresh/package.json @@ -9,8 +9,8 @@ "main": "swc_plugin_prefresh.wasm", "scripts": { "prepack": "pnpm run build", - "build": "cargo build --release -p swc_plugin_prefresh --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_prefresh.wasm .", - "build:debug": "cargo build -p swc_plugin_prefresh --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_prefresh.wasm .", + "build": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_prefresh --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_prefresh.wasm .", + "build:debug": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build -p swc_plugin_prefresh --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_prefresh.wasm .", "test": "pnpm run build:debug && vitest run --testTimeout=0" }, "homepage": "https://swc.rs", diff --git a/packages/react-remove-properties/package.json b/packages/react-remove-properties/package.json index 5320115c7..df363c2f0 100644 --- a/packages/react-remove-properties/package.json +++ b/packages/react-remove-properties/package.json @@ -9,8 +9,8 @@ "main": "swc_plugin_react_remove_properties.wasm", "scripts": { "prepack": "pnpm run build", - "build": "cargo build --release -p swc_plugin_react_remove_properties --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_react_remove_properties.wasm .", - "build:debug": "cargo build -p swc_plugin_react_remove_properties --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_react_remove_properties.wasm .", + "build": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_react_remove_properties --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_react_remove_properties.wasm .", + "build:debug": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build -p swc_plugin_react_remove_properties --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_react_remove_properties.wasm .", "test": "pnpm run build:debug && vitest run --testTimeout=0" }, "homepage": "https://swc.rs", diff --git a/packages/relay/package.json b/packages/relay/package.json index cda7e8eea..ca4a375f3 100644 --- a/packages/relay/package.json +++ b/packages/relay/package.json @@ -10,8 +10,8 @@ "types": "./types.d.ts", "scripts": { "prepack": "pnpm run build", - "build": "cargo build --release -p swc_plugin_relay --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_relay.wasm .", - "build:debug": "cargo build -p swc_plugin_relay --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_relay.wasm .", + "build": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_relay --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_relay.wasm .", + "build:debug": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build -p swc_plugin_relay --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_relay.wasm .", "test": "pnpm run build:debug && vitest run --testTimeout=0" }, "homepage": "https://swc.rs", diff --git a/packages/remove-console/package.json b/packages/remove-console/package.json index be6f1583d..a796554ca 100644 --- a/packages/remove-console/package.json +++ b/packages/remove-console/package.json @@ -9,8 +9,8 @@ "main": "swc_plugin_remove_console.wasm", "scripts": { "prepack": "pnpm run build", - "build": "cargo build --release -p swc_plugin_remove_console --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_remove_console.wasm .", - "build:debug": "cargo build -p swc_plugin_remove_console --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_remove_console.wasm .", + "build": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_remove_console --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_remove_console.wasm .", + "build:debug": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build -p swc_plugin_remove_console --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_remove_console.wasm .", "test": "pnpm run build:debug && vitest run --testTimeout=0" }, "homepage": "https://swc.rs", diff --git a/packages/styled-components/package.json b/packages/styled-components/package.json index e9551a0de..e5a34606b 100644 --- a/packages/styled-components/package.json +++ b/packages/styled-components/package.json @@ -9,8 +9,8 @@ "main": "swc_plugin_styled_components.wasm", "scripts": { "prepack": "pnpm run build", - "build": "cargo build --release -p swc_plugin_styled_components --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_styled_components.wasm .", - "build:debug": "cargo build -p swc_plugin_styled_components --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_styled_components.wasm .", + "build": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_styled_components --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_styled_components.wasm .", + "build:debug": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build -p swc_plugin_styled_components --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_styled_components.wasm .", "test": "pnpm run build:debug && vitest run --testTimeout=0" }, "homepage": "https://swc.rs", diff --git a/packages/swc-confidential/package.json b/packages/swc-confidential/package.json index 1145be0dd..ed8f50aba 100644 --- a/packages/swc-confidential/package.json +++ b/packages/swc-confidential/package.json @@ -9,8 +9,8 @@ "main": "swc_plugin_swc_confidential.wasm", "scripts": { "prepack": "pnpm run build", - "build": "cargo build --release -p swc_plugin_swc_confidential --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_swc_confidential.wasm .", - "build:debug": "cargo build -p swc_plugin_swc_confidential --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_swc_confidential.wasm .", + "build": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_swc_confidential --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_swc_confidential.wasm .", + "build:debug": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build -p swc_plugin_swc_confidential --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_swc_confidential.wasm .", "test": "pnpm run build:debug && vitest run --testTimeout=0" }, "homepage": "https://swc.rs", diff --git a/packages/swc-magic/package.json b/packages/swc-magic/package.json index 12b39d80a..c5ff75047 100644 --- a/packages/swc-magic/package.json +++ b/packages/swc-magic/package.json @@ -8,7 +8,7 @@ "description": "SWC plugin for swc-magic", "main": "swc_plugin_swc_magic.wasm", "scripts": { - "prepack": "cargo build --release -p swc_plugin_swc_magic --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_swc_magic.wasm ." + "prepack": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_swc_magic --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_swc_magic.wasm ." }, "homepage": "https://swc.rs", "repository": { diff --git a/packages/swc-sdk/package.json b/packages/swc-sdk/package.json index c511bfb3c..046424b15 100644 --- a/packages/swc-sdk/package.json +++ b/packages/swc-sdk/package.json @@ -8,7 +8,7 @@ "description": "SWC plugin for swc-sdk", "main": "swc_plugin_swc_sdk.wasm", "scripts": { - "prepack": "cargo build --release -p swc_plugin_swc_sdk --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_swc_sdk.wasm ." + "prepack": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_swc_sdk --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_swc_sdk.wasm ." }, "homepage": "https://swc.rs", "repository": { diff --git a/packages/transform-imports/package.json b/packages/transform-imports/package.json index cee908d1d..966577e36 100644 --- a/packages/transform-imports/package.json +++ b/packages/transform-imports/package.json @@ -9,8 +9,8 @@ "main": "swc_plugin_transform_imports.wasm", "scripts": { "prepack": "pnpm run build", - "build": "cargo build --release -p swc_plugin_transform_imports --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_transform_imports.wasm .", - "build:debug": "cargo build -p swc_plugin_transform_imports --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_transform_imports.wasm .", + "build": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build --release -p swc_plugin_transform_imports --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/release/swc_plugin_transform_imports.wasm .", + "build:debug": "RUSTFLAGS='--cfg swc_ast_unknown' cargo build -p swc_plugin_transform_imports --target wasm32-wasip1 && cp ../../target/wasm32-wasip1/debug/swc_plugin_transform_imports.wasm .", "test": "pnpm run build:debug && vitest run --testTimeout=0" }, "homepage": "https://swc.rs", From 66fee0e4d30bacbe66ce89d00f279ae6bc0620d6 Mon Sep 17 00:00:00 2001 From: CPunisher <1343316114@qq.com> Date: Fri, 21 Nov 2025 14:55:06 +0800 Subject: [PATCH 4/4] Fix CI --- .github/workflows/CI.yml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9f353fb40..6566bde05 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -62,6 +62,25 @@ jobs: run: | pnpm test + cargo-check: + name: "Check (swc_ast_unknown)" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + + - uses: Swatinem/rust-cache@v2 + with: + shared-key: "cargo-check" + cache-on-failure: true + + - name: Run cargo check + env: + RUSTFLAGS: "--cfg swc_ast_unknown" + run: | + cargo check --workspace --exclude swc_plugin_styled_jsx --exclude styled_jsx + cargo-test: strategy: fail-fast: false @@ -102,10 +121,6 @@ jobs: run: | cargo test --all --color always - - name: Run cargo check (swc_ast_unknown) - run: | - RUSTFLAGS='--cfg swc_ast_unknown' cargo check --workspace --exclude swc_plugin_styled_jsx --exclude styled_jsx - cargo-publish: name: "Publish" runs-on: ubuntu-latest @@ -132,6 +147,7 @@ jobs: done: needs: - npm-test + - cargo-check - cargo-test if: >- ${{ always() }}