fix missing parentheses around NaN/Infinity shorthands (#1726)
authorAlex Lam S.L <alexlamsl@gmail.com>
Wed, 29 Mar 2017 12:53:03 +0000 (20:53 +0800)
committerGitHub <noreply@github.com>
Wed, 29 Mar 2017 12:53:03 +0000 (20:53 +0800)
fixes #1724
fixes #1725

lib/output.js
test/compress/issue-597.js

index d71f6aa..c8c8739 100644 (file)
@@ -596,7 +596,9 @@ function OutputStream(options) {
         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 != "-";
+            || p instanceof AST_Unary && p.operator != "+" && p.operator != "-"
+            || p instanceof AST_Binary && p.right === this
+                && (p.operator == "/" || p.operator == "%");
     });
 
     PARENS(AST_Seq, function(output){
index 3a50153..2aaaf3f 100644 (file)
@@ -107,3 +107,27 @@ beautify_on_2: {
     }
     expect_exact: "console.log(null.toString(), (void 0).toString());"
 }
+
+issue_1724: {
+    input: {
+        var a = 0;
+        ++a % Infinity | Infinity ? a++ : 0;
+        console.log(a);
+    }
+    expect: {
+        var a = 0;
+        ++a % (1/0) | 1/0 ? a++ : 0;
+        console.log(a);
+    }
+    expect_stdout: "2"
+}
+
+issue_1725: {
+    input: {
+        ([].length === 0) % Infinity ? console.log("PASS") : console.log("FAIL");
+    }
+    expect: {
+        (0 === [].length) % (1/0) ? console.log("PASS") : console.log("FAIL");
+    }
+    expect_stdout: "PASS"
+}