diff --git a/crates/oxc_ecmascript/src/side_effects/may_have_side_effects.rs b/crates/oxc_ecmascript/src/side_effects/may_have_side_effects.rs index 81f948848e..0636fa9587 100644 --- a/crates/oxc_ecmascript/src/side_effects/may_have_side_effects.rs +++ b/crates/oxc_ecmascript/src/side_effects/may_have_side_effects.rs @@ -400,7 +400,7 @@ impl MayHaveSideEffects for ClassElement<'_> { impl MayHaveSideEffects for ChainElement<'_> { fn may_have_side_effects(&self, is_global_reference: &impl IsGlobalReference) -> bool { match self { - ChainElement::CallExpression(_) => true, + ChainElement::CallExpression(e) => e.may_have_side_effects(is_global_reference), ChainElement::TSNonNullExpression(e) => { e.expression.may_have_side_effects(is_global_reference) } diff --git a/crates/oxc_minifier/tests/ecmascript/may_have_side_effects.rs b/crates/oxc_minifier/tests/ecmascript/may_have_side_effects.rs index 6d1fffc5bc..078f6684eb 100644 --- a/crates/oxc_minifier/tests/ecmascript/may_have_side_effects.rs +++ b/crates/oxc_minifier/tests/ecmascript/may_have_side_effects.rs @@ -657,6 +657,8 @@ fn test_call_like_expressions() { test("/* #__PURE__ */ foo(...`${bar}`)", true); test("/* #__PURE__ */ foo(...`${bar()}`)", true); test("/* #__PURE__ */ (() => { foo() })()", false); + test("foo?.()", true); + test("/* #__PURE__ */ foo?.()", false); test("new Foo()", true); test("/* #__PURE__ */ new Foo()", false);