diff options
-rw-r--r-- | lib/compress.js | 16 | ||||
-rw-r--r-- | test/compress/issue-105.js | 5 |
2 files changed, 10 insertions, 11 deletions
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: { |