From 2a31e4a52c0d987bc5fbf0c0c71299dfa7110fb2 Mon Sep 17 00:00:00 2001 From: Dan Onoshko Date: Fri, 2 Jan 2015 01:33:10 +0700 Subject: [PATCH] Fix #597 from UglifyJS --- lib/compress.js | 20 ++++++++++++++++++-- lib/output.js | 10 ++-------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/compress.js b/lib/compress.js index 3dddd21f..87f502d2 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -2235,14 +2235,30 @@ Cola.Compressor.MathFuncs = { case "undefined": return make_node(Cola.AST_Undefined, self); case "NaN": - return make_node(Cola.AST_NaN, self); + return make_node(Cola.AST_NaN, self).transform(compressor); case "Infinity": - return make_node(Cola.AST_Infinity, self); + return make_node(Cola.AST_Infinity, self).transform(compressor); } } return self; }); + OPT(AST_Infinity, function (self, compressor) { + return make_node(AST_Binary, self, { + operator : '/', + left : make_node(AST_Number, null, {value: 1}), + right : make_node(AST_Number, null, {value: 0}) + }); + }); + + OPT(AST_NaN, function (self, compressor) { + return make_node(AST_Binary, self, { + operator : '/', + left : make_node(AST_Number, null, {value: 0}), + right : make_node(AST_Number, null, {value: 0}) + }); + }); + OPT(Cola.AST_Undefined, function(self, compressor){ if (compressor.option("unsafe")) { var scope = compressor.find_parent(Cola.AST_Scope); diff --git a/lib/output.js b/lib/output.js index 5736de7c..9e1b15db 100644 --- a/lib/output.js +++ b/lib/output.js @@ -522,12 +522,6 @@ Cola.OutputStream.prototype.parent = function(n) { return true; }); - PARENS(Cola.AST_NaN, function(output){ - var p = output.parent(); - if (p instanceof Cola.AST_PropAccess && p.expression === this) - return true; - }); - function assign_and_conditional_paren_rules(output) { var p = output.parent(); // !(a = false) → true @@ -1081,10 +1075,10 @@ Cola.OutputStream.prototype.parent = function(n) { }); DEFPRINT(Cola.AST_Hole, Cola.noop); DEFPRINT(Cola.AST_Infinity, function(self, output){ - output.print("1/0"); + output.print("Infinity"); }); DEFPRINT(Cola.AST_NaN, function(self, output){ - output.print("0/0"); + output.print("NaN"); }); DEFPRINT(Cola.AST_This, function(self, output){ output.print("this");