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 806c917d58e20..81f948848eff5 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 @@ -89,6 +89,7 @@ impl MayHaveSideEffects for TemplateLiteral<'_> { // If the expression is a Symbol or ToPrimitive returns a Symbol, an error is thrown. // ToPrimitive returns the value as-is for non-Object values, so we can use it instead of ToString here. e.to_primitive(is_global_reference).is_symbol() != Some(false) + || e.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 d8b3d4717baf8..6d1fffc5bc9ca 100644 --- a/crates/oxc_minifier/tests/ecmascript/may_have_side_effects.rs +++ b/crates/oxc_minifier/tests/ecmascript/may_have_side_effects.rs @@ -354,6 +354,7 @@ fn test_template_literal() { test("`${{ [s]() { console.log('sideeffect') } }}`", true); // assuming s is Symbol.toPrimitive test("`${a}`", true); // a maybe a symbol test("`${a()}`", true); + test("`${a() === b}`", true); } #[test]