Skip to content

Commit 6de3ef6

Browse files
authored
fix(es/minifier): Fix missing variable (#10478)
**Description:** This PR fixes the member expression usage bug. **Related issue:** - Closes #10412
1 parent 1cb3843 commit 6de3ef6

File tree

4 files changed

+66
-1
lines changed

4 files changed

+66
-1
lines changed

crates/swc_ecma_minifier/src/compress/optimize/unused.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,10 +182,12 @@ impl Optimizer<'_> {
182182
}
183183

184184
if let Some(v) = self.data.vars.get(&i.to_id()) {
185+
let is_used_in_member =
186+
v.property_mutation_count > 0 || v.flags.contains(VarUsageInfoFlags::USED_AS_REF);
185187
if v.ref_count == 0
186188
&& v.usage_count == 0
187189
&& !v.flags.contains(VarUsageInfoFlags::REASSIGNED)
188-
&& v.property_mutation_count == 0
190+
&& !is_used_in_member
189191
{
190192
self.changed = true;
191193
report_change!(
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
"arguments": false,
3+
"arrows": true,
4+
"booleans": true,
5+
"booleans_as_integers": false,
6+
"collapse_vars": true,
7+
"comparisons": true,
8+
"computed_props": true,
9+
"conditionals": true,
10+
"dead_code": true,
11+
"directives": true,
12+
"drop_console": false,
13+
"drop_debugger": true,
14+
"evaluate": true,
15+
"expression": false,
16+
"hoist_funs": false,
17+
"hoist_props": true,
18+
"hoist_vars": false,
19+
"if_return": true,
20+
"join_vars": true,
21+
"keep_classnames": false,
22+
"keep_fargs": true,
23+
"keep_fnames": false,
24+
"keep_infinity": false,
25+
"loops": true,
26+
"negate_iife": true,
27+
"properties": true,
28+
"reduce_funcs": false,
29+
"reduce_vars": false,
30+
"side_effects": true,
31+
"switches": true,
32+
"typeofs": true,
33+
"unsafe": false,
34+
"unsafe_arrows": false,
35+
"unsafe_comps": false,
36+
"unsafe_Function": false,
37+
"unsafe_math": false,
38+
"unsafe_symbols": false,
39+
"unsafe_methods": false,
40+
"unsafe_proto": false,
41+
"unsafe_regexp": false,
42+
"unsafe_undefined": false,
43+
"unused": true
44+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
(function (e, i) {
2+
// "_" rename to another name also reproduce
3+
var _ = (((i = {})[n.NONE] = { platform: a.NONE }), i);
4+
5+
e.getPlatform = function () {
6+
// "_" should not be removed
7+
console.log(_[t.toString()]);
8+
};
9+
})();
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
!function(e, i) {
2+
// "_" rename to another name also reproduce
3+
var _ = ((i = {})[n.NONE] = {
4+
platform: a.NONE
5+
}, i);
6+
e.getPlatform = function() {
7+
// "_" should not be removed
8+
console.log(_[t.toString()]);
9+
};
10+
}();

0 commit comments

Comments
 (0)