Fix: Uglified Number.prototype functions on big numbers

This commit is contained in:
philippsimon
2016-03-14 12:21:25 +01:00
committed by Richard van Velzen
parent 102d1b9137
commit ee6c9fabb7
2 changed files with 26 additions and 3 deletions

View File

@@ -596,8 +596,12 @@ function OutputStream(options) {
PARENS(AST_Number, function(output){ PARENS(AST_Number, function(output){
var p = output.parent(); var p = output.parent();
if (this.getValue() < 0 && p instanceof AST_PropAccess && p.expression === this) if (p instanceof AST_PropAccess && p.expression === this) {
return true; var value = this.getValue();
if (value < 0 || /^0/.test(make_num(value))) {
return true;
}
}
}); });
PARENS([ AST_Assign, AST_Conditional ], function (output){ PARENS([ AST_Assign, AST_Conditional ], function (output){
@@ -1026,7 +1030,7 @@ function OutputStream(options) {
var expr = self.expression; var expr = self.expression;
expr.print(output); expr.print(output);
if (expr instanceof AST_Number && expr.getValue() >= 0) { if (expr instanceof AST_Number && expr.getValue() >= 0) {
if (!/[xa-f.]/i.test(output.last())) { if (!/[xa-f.)]/i.test(output.last())) {
output.print("."); output.print(".");
} }
} }

19
test/compress/numbers.js Normal file
View File

@@ -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);"
}