From 27eedbc302dea6a2af558bbf6bc8865fd2410837 Mon Sep 17 00:00:00 2001 From: Richard van Velzen Date: Tue, 17 May 2016 22:34:38 +0200 Subject: [PATCH] Never produce -0 when evaluating expressions (like -"") Fix for #1085. The major case was already there, but more expressions can result in -0. --- lib/compress.js | 6 +++--- test/compress/evaluate.js | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 test/compress/evaluate.js 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, '-""'); + } +} -- 2.34.1