From: philippsimon Date: Mon, 14 Mar 2016 11:21:25 +0000 (+0100) Subject: Fix: Uglified Number.prototype functions on big numbers X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=ee6c9fabb7dc00b8bbc9e60859767acc585cd0fa;p=UglifyJS.git Fix: Uglified Number.prototype functions on big numbers --- diff --git a/lib/output.js b/lib/output.js index dceece34..a8c45a0f 100644 --- a/lib/output.js +++ b/lib/output.js @@ -596,8 +596,12 @@ function OutputStream(options) { PARENS(AST_Number, function(output){ var p = output.parent(); - if (this.getValue() < 0 && p instanceof AST_PropAccess && p.expression === this) - return true; + if (p instanceof AST_PropAccess && p.expression === this) { + var value = this.getValue(); + if (value < 0 || /^0/.test(make_num(value))) { + return true; + } + } }); PARENS([ AST_Assign, AST_Conditional ], function (output){ @@ -1026,7 +1030,7 @@ function OutputStream(options) { var expr = self.expression; expr.print(output); if (expr instanceof AST_Number && expr.getValue() >= 0) { - if (!/[xa-f.]/i.test(output.last())) { + if (!/[xa-f.)]/i.test(output.last())) { output.print("."); } } diff --git a/test/compress/numbers.js b/test/compress/numbers.js new file mode 100644 index 00000000..8e32ad02 --- /dev/null +++ b/test/compress/numbers.js @@ -0,0 +1,19 @@ +hex_numbers_in_parentheses_for_prototype_functions: { + input: { + (-2); + (-2).toFixed(0); + + (2); + (2).toFixed(0); + + (0.2); + (0.2).toFixed(0); + + (0.00000002); + (0.00000002).toFixed(0); + + (1000000000000000128); + (1000000000000000128).toFixed(0); + } + expect_exact: "-2;(-2).toFixed(0);2;2..toFixed(0);.2;.2.toFixed(0);2e-8;2e-8.toFixed(0);0xde0b6b3a7640080;(0xde0b6b3a7640080).toFixed(0);" +}