From: Justin Lau Date: Sun, 5 May 2013 12:38:32 +0000 (+0800) Subject: Fixed typeof undefined optimization and updated related test case to X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=a1958aad563030b76bf4d9af7bf80a160c625e27;p=UglifyJS.git Fixed typeof undefined optimization and updated related test case to accomodates the sort behaviour changes made in commit mishoo/UglifyJS2@aebafad41eab48f43ed649ce8c77e8f1528b50da. Signed-off-by: Justin Lau --- diff --git a/lib/compress.js b/lib/compress.js index 992d78f8..c994a3ab 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1751,14 +1751,14 @@ merge(Compressor.prototype, { // XXX: intentionally falling down to the next case case "==": case "!=": - if (self.left instanceof AST_String - && self.left.value == "undefined" - && self.right instanceof AST_UnaryPrefix - && self.right.operator == "typeof" - && compressor.option("unsafe")) { - if (!(self.right.expression instanceof AST_SymbolRef) - || !self.right.expression.undeclared()) { - self.left = self.right.expression; + if (compressor.option("unsafe") + && self.left instanceof AST_UnaryPrefix + && self.left.operator == "typeof" + && self.right instanceof AST_String + && self.right.value == "undefined") { + if (!(self.left.expression instanceof AST_SymbolRef) + || !self.left.expression.undeclared()) { + self.left = self.left.expression; self.right = make_node(AST_Undefined, self.left).optimize(compressor); if (self.operator.length == 2) self.operator += "="; } diff --git a/test/compress/issue-105.js b/test/compress/issue-105.js index 349d732d..0c37eb82 100644 --- a/test/compress/issue-105.js +++ b/test/compress/issue-105.js @@ -1,10 +1,9 @@ typeof_eq_undefined: { options = { - comparisons: true, - unsafe: false + comparisons: true }; input: { a = typeof b.c != "undefined" } - expect: { a = "undefined" != typeof b.c } + expect: { a = typeof b.c != "undefined" } } typeof_eq_undefined_unsafe: {