From 64f92e9cb46a9bd0d619d2b48fbf5027b5396480 Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY Date: Wed, 4 Dec 2024 19:18:19 +0800 Subject: [PATCH] fix(oxc_transform): oxc dot define is postfix of some MemberExpr (#7640) Closed https://github.com/oxc-project/oxc/issues/7598 --- .../src/plugins/replace_global_defines.rs | 2 +- .../integrations/plugins/replace_global_defines.rs | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/crates/oxc_transformer/src/plugins/replace_global_defines.rs b/crates/oxc_transformer/src/plugins/replace_global_defines.rs index d647bbdc6..6f3293f8a 100644 --- a/crates/oxc_transformer/src/plugins/replace_global_defines.rs +++ b/crates/oxc_transformer/src/plugins/replace_global_defines.rs @@ -538,7 +538,7 @@ impl<'a> ReplaceGlobalDefines<'a> { }; } - true + current_part_member_expression.is_none() } } diff --git a/crates/oxc_transformer/tests/integrations/plugins/replace_global_defines.rs b/crates/oxc_transformer/tests/integrations/plugins/replace_global_defines.rs index f57edd967..f7ddd2c78 100644 --- a/crates/oxc_transformer/tests/integrations/plugins/replace_global_defines.rs +++ b/crates/oxc_transformer/tests/integrations/plugins/replace_global_defines.rs @@ -71,6 +71,20 @@ fn dot_with_overlap() { test("import.meta.env.NODE_ENV", "import.meta.env.NODE_ENV", config.clone()); } +#[test] +fn dot_define_is_member_expr_postfix() { + let config = ReplaceGlobalDefinesConfig::new(&[ + ("__OBJ__", r#"{"process":{"env":{"SOMEVAR":"foo"}}}"#), + ("process.env.SOMEVAR", "\"SOMEVAR\""), + ]) + .unwrap(); + test( + "console.log(__OBJ__.process.env.SOMEVAR)", + "console.log({ 'process': { 'env': { 'SOMEVAR': 'foo' } } }.process.env.SOMEVAR);\n", + config.clone(), + ); +} + #[test] fn dot_nested() { let config = ReplaceGlobalDefinesConfig::new(&[("process", "production")]).unwrap();