aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2021-03-02 09:33:28 +0000
committerGitHub <noreply@github.com>2021-03-02 17:33:28 +0800
commit23b51287aa31630c5454fecb5991fd18f7528366 (patch)
tree7d03497d5b40bc5274dcdbd71cf62d4647e7d0e2
parent74dee5c445b1424866ef78ac9b06c507ef92959c (diff)
downloadtracifyjs-23b51287aa31630c5454fecb5991fd18f7528366.tar.gz
tracifyjs-23b51287aa31630c5454fecb5991fd18f7528366.zip
fix corner case in `evaluate` (#4716)
fixes #4715
-rw-r--r--lib/compress.js1
-rw-r--r--test/compress/exponentiation.js39
2 files changed, 40 insertions, 0 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 393e3197..ad4c6809 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -3523,6 +3523,7 @@ merge(Compressor.prototype, {
case "*":
case "/":
case "%":
+ case "**":
return true;
default:
return false;
diff --git a/test/compress/exponentiation.js b/test/compress/exponentiation.js
index b6cfde51..5de3c964 100644
--- a/test/compress/exponentiation.js
+++ b/test/compress/exponentiation.js
@@ -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"
+}