fix missing parentheses around NaN/Infinity shorthands (#1726)
fixes #1724 fixes #1725
This commit is contained in:
@@ -596,7 +596,9 @@ function OutputStream(options) {
|
|||||||
var p = output.parent();
|
var p = output.parent();
|
||||||
return p instanceof AST_PropAccess && p.expression === this
|
return p instanceof AST_PropAccess && p.expression === this
|
||||||
|| p instanceof AST_Call && 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){
|
PARENS(AST_Seq, function(output){
|
||||||
|
|||||||
@@ -107,3 +107,27 @@ beautify_on_2: {
|
|||||||
}
|
}
|
||||||
expect_exact: "console.log(null.toString(), (void 0).toString());"
|
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"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user