aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2019-10-28 19:56:42 +0800
committerGitHub <noreply@github.com>2019-10-28 19:56:42 +0800
commitf38e31bd1ee117fc8adb0d13982b5ec16e761f52 (patch)
treefc1b28e3d86cc912b0287c5007579f4a774e5726
parent24e8b479775d9d264c5f8ae33bcfef204a3ff969 (diff)
downloadtracifyjs-f38e31bd1ee117fc8adb0d13982b5ec16e761f52.tar.gz
tracifyjs-f38e31bd1ee117fc8adb0d13982b5ec16e761f52.zip
fix corner case in `evaluate` (#3540)
fixes #3539
-rw-r--r--lib/compress.js1
-rw-r--r--test/compress/numbers.js16
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 442df59d..7c5558bd 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -2901,6 +2901,7 @@ merge(Compressor.prototype, {
}
if (isNaN(result)) return compressor.find_parent(AST_With) ? this : result;
if (compressor.option("unsafe_math")
+ && result
&& typeof result == "number"
&& (this.operator == "+" || this.operator == "-")) {
var digits = Math.max(0, decimals(left), decimals(right));
diff --git a/test/compress/numbers.js b/test/compress/numbers.js
index 63a100b7..79fccfb4 100644
--- a/test/compress/numbers.js
+++ b/test/compress/numbers.js
@@ -765,3 +765,19 @@ issue_3536: {
}
expect_stdout: "number 99 11 121"
}
+
+issue_3539: {
+ options = {
+ evaluate: true,
+ unsafe_math: true,
+ }
+ input: {
+ var a = -0 + -"";
+ console.log(0/a, 1/a, -1/a);
+ }
+ expect: {
+ var a = -0;
+ console.log(0/a, 1/a, -1/a);
+ }
+ expect_stdout: "NaN -Infinity Infinity"
+}