fix corner cases in `unused` & `varify` (#4368)
authorAlex Lam S.L <alexlamsl@gmail.com>
Fri, 11 Dec 2020 20:45:35 +0000 (20:45 +0000)
committerGitHub <noreply@github.com>
Fri, 11 Dec 2020 20:45:35 +0000 (04:45 +0800)
fixes #4365

lib/compress.js
test/compress/const.js

index 27b080b..cc601bf 100644 (file)
@@ -7284,7 +7284,7 @@ merge(Compressor.prototype, {
     });
 
     function is_safe_lexical(def) {
-        return def.orig.length < (def.orig[0] instanceof AST_SymbolLambda ? 3 : 2);
+        return def.name != "arguments" && def.orig.length < (def.orig[0] instanceof AST_SymbolLambda ? 3 : 2);
     }
 
     function may_overlap(compressor, def) {
index c269f8c..4eea197 100644 (file)
@@ -1347,3 +1347,31 @@ issue_4305_2: {
     }
     expect_stdout: true
 }
+
+issue_4365_1: {
+    options = {
+        toplevel: true,
+        unused: true,
+    }
+    input: {
+        const arguments = 42;
+    }
+    expect: {
+        const arguments = 42;
+    }
+    expect_stdout: true
+}
+
+issue_4365_2: {
+    options = {
+        toplevel: true,
+        varify: true,
+    }
+    input: {
+        const arguments = 42;
+    }
+    expect: {
+        const arguments = 42;
+    }
+    expect_stdout: true
+}