output optimal representations of NaN & Infinity (#1723)
- move these optimisations out from `Compressor` to `OutputStream` - fixes behaviour inconsistency when running uglified code from global or module levels due to redefinition
This commit is contained in:
@@ -592,6 +592,13 @@ function OutputStream(options) {
|
||||
|| p instanceof AST_Call && p.expression === this;
|
||||
});
|
||||
|
||||
PARENS([ AST_Infinity, AST_NaN ], function(output){
|
||||
var p = output.parent();
|
||||
return p instanceof AST_PropAccess && p.expression === this
|
||||
|| p instanceof AST_Call && p.expression === this
|
||||
|| p instanceof AST_Unary && p.operator != "+" && p.operator != "-";
|
||||
});
|
||||
|
||||
PARENS(AST_Seq, function(output){
|
||||
var p = output.parent();
|
||||
return p instanceof AST_Call // (foo, bar)() or foo(1, (2, 3), 4)
|
||||
@@ -1254,10 +1261,18 @@ function OutputStream(options) {
|
||||
});
|
||||
DEFPRINT(AST_Hole, noop);
|
||||
DEFPRINT(AST_Infinity, function(self, output){
|
||||
output.print("Infinity");
|
||||
output.print("1");
|
||||
output.space();
|
||||
output.print("/");
|
||||
output.space();
|
||||
output.print("0");
|
||||
});
|
||||
DEFPRINT(AST_NaN, function(self, output){
|
||||
output.print("NaN");
|
||||
output.print("0");
|
||||
output.space();
|
||||
output.print("/");
|
||||
output.space();
|
||||
output.print("0");
|
||||
});
|
||||
DEFPRINT(AST_This, function(self, output){
|
||||
output.print("this");
|
||||
|
||||
Reference in New Issue
Block a user