moved `typeof foo == "undefined"` ==> `foo === undefined` under `--unsafe`
authorMihai Bazon <mihai@bazon.net>
Mon, 17 Sep 2012 15:49:52 +0000 (18:49 +0300)
committerMihai Bazon <mihai@bazon.net>
Mon, 17 Sep 2012 15:49:52 +0000 (18:49 +0300)
because https://github.com/mishoo/UglifyJS2/commit/43fd45154bac89b89330e13bd1f167e2a927a23c#commitcomment-1864505

lib/compress.js

index 8a2cd4c..ba6f809 100644 (file)
@@ -1371,21 +1371,23 @@ function Compressor(options, false_by_default) {
             // XXX: intentionally falling down to the next case
           case "==":
           case "!=":
-            if (this.left instanceof AST_UnaryPrefix
-                && this.left.operator == "typeof"
-                && this.right instanceof AST_String
-                && this.right.value == "undefined") {
-                this.left = this.left.expression;
-                this.right = make_node(AST_Undefined, this.right).optimize(compressor);
-                if (this.operator.length == 2) this.operator += "=";
-            }
-            else if (this.left instanceof AST_String
-                     && this.left.value == "undefined"
-                     && this.right instanceof AST_UnaryPrefix
-                     && this.right.operator == "typeof") {
-                this.left = this.right.expression;
-                this.right = make_node(AST_Undefined, this.left).optimize(compressor);
-                if (this.operator.length == 2) this.operator += "=";
+            if (compressor.option("unsafe")) {
+                if (this.left instanceof AST_UnaryPrefix
+                    && this.left.operator == "typeof"
+                    && this.right instanceof AST_String
+                    && this.right.value == "undefined") {
+                    this.left = this.left.expression;
+                    this.right = make_node(AST_Undefined, this.right).optimize(compressor);
+                    if (this.operator.length == 2) this.operator += "=";
+                }
+                else if (this.left instanceof AST_String
+                         && this.left.value == "undefined"
+                         && this.right instanceof AST_UnaryPrefix
+                         && this.right.operator == "typeof") {
+                    this.left = this.right.expression;
+                    this.right = make_node(AST_Undefined, this.left).optimize(compressor);
+                    if (this.operator.length == 2) this.operator += "=";
+                }
             }
             break;
         }