From: Richard van Velzen Date: Tue, 17 May 2016 20:34:38 +0000 (+0200) Subject: Never produce -0 when evaluating expressions (like -"") X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=27eedbc302dea6a2af558bbf6bc8865fd2410837;p=UglifyJS.git Never produce -0 when evaluating expressions (like -"") Fix for #1085. The major case was already there, but more expressions can result in -0. --- 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, '-""'); + } +}