fix corner case in `evaluate` (#4716)
authorAlex Lam S.L <alexlamsl@gmail.com>
Tue, 2 Mar 2021 09:33:28 +0000 (09:33 +0000)
committerGitHub <noreply@github.com>
Tue, 2 Mar 2021 09:33:28 +0000 (17:33 +0800)
fixes #4715

lib/compress.js
test/compress/exponentiation.js

index 393e319..ad4c680 100644 (file)
@@ -3523,6 +3523,7 @@ merge(Compressor.prototype, {
               case "*":
               case "/":
               case "%":
+              case "**":
                 return true;
               default:
                 return false;
index b6cfde5..5de3c96 100644 (file)
@@ -84,3 +84,42 @@ issue_4664: {
     expect_stdout: "function 1073741824 object"
     node_version: ">=8"
 }
+
+issue_4715: {
+    options = {
+        evaluate: true,
+    }
+    input: {
+        A = 1;
+        console.log((-0) ** A + 0);
+        console.log((-0) ** A - 0);
+        console.log((-0) ** A * 1);
+        console.log((-0) ** A / 1);
+        console.log(Math.pow(-0, A) + 0);
+        console.log(Math.pow(-0, A) - 0);
+        console.log(Math.pow(-0, A) * 1);
+        console.log(Math.pow(-0, A) / 1);
+    }
+    expect: {
+        A = 1;
+        console.log((-0) ** A + 0);
+        console.log((-0) ** A);
+        console.log((-0) ** A * 1);
+        console.log((-0) ** A);
+        console.log(Math.pow(-0, A) + 0);
+        console.log(+Math.pow(-0, A));
+        console.log(+Math.pow(-0, A));
+        console.log(+Math.pow(-0, A));
+    }
+    expect_stdout: [
+        "0",
+        "-0",
+        "-0",
+        "-0",
+        "0",
+        "-0",
+        "-0",
+        "-0",
+    ]
+    node_version: ">=8"
+}