aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard van Velzen <rvanvelzen@experty.com>2016-05-17 22:34:38 +0200
committerRichard van Velzen <rvanvelzen@experty.com>2016-05-17 22:34:38 +0200
commit27eedbc302dea6a2af558bbf6bc8865fd2410837 (patch)
tree27d3abe863c857d77c162ec9f7196d2acc6179f2
parent5f464b41e2ba95f4d81da262a260488d326eb633 (diff)
downloadtracifyjs-27eedbc302dea6a2af558bbf6bc8865fd2410837.tar.gz
tracifyjs-27eedbc302dea6a2af558bbf6bc8865fd2410837.zip
Never produce -0 when evaluating expressions (like -"")
Fix for #1085. The major case was already there, but more expressions can result in -0.
-rw-r--r--lib/compress.js6
-rw-r--r--test/compress/evaluate.js9
2 files changed, 12 insertions, 3 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 6436796f..e8c42c04 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -1029,9 +1029,9 @@ merge(Compressor.prototype, {
case "void": return void ev(e, compressor);
case "~": return ~ev(e, compressor);
case "-":
- e = ev(e, compressor);
- if (e === 0) throw def;
- return -e;
+ e = -ev(e, compressor);
+ if (e === -0) throw def;
+ return e;
case "+": return +ev(e, compressor);
}
throw def;
diff --git a/test/compress/evaluate.js b/test/compress/evaluate.js
new file mode 100644
index 00000000..9aa6b3d3
--- /dev/null
+++ b/test/compress/evaluate.js
@@ -0,0 +1,9 @@
+negative_zero: {
+ options = { evaluate: true }
+ input: {
+ assert.sameValue(-"", -0, '-""');
+ }
+ expect: {
+ assert.sameValue(-"", -0, '-""');
+ }
+}