Protect SwitchCase statements from ASI (#2008)
* Add no-semi test with SequenceExpression Adapted from https://github.com/prettier/prettier/issues/2006 * Protect SequenceExpressions from ASI Fixes https://github.com/prettier/prettier/issues/2006 * Add test for ASI protection of SequenceExpression outside SwitchCase See https://github.com/prettier/prettier/pull/2008#issuecomment-306614217 * Revert "Protect SequenceExpressions from ASI" This reverts commit ca644fad8072c90a977ad8a2f29674bc72f679e8. * Protect SwitchCase statements from ASI See https://github.com/prettier/prettier/pull/2008#issuecomment-306614217 Fixes https://github.com/prettier/prettier/issues/2006master
parent
7c051804a8
commit
0cfd772fd2
|
@ -1488,7 +1488,15 @@ function genericPrintNoParens(path, options, print, args) {
|
|||
const shouldAddLine =
|
||||
i !== n.consequent.length - 1 &&
|
||||
util.isNextLineEmpty(options.originalText, p.getValue());
|
||||
return concat([print(p), shouldAddLine ? hardline : ""]);
|
||||
const printed = concat([
|
||||
print(p),
|
||||
shouldAddLine ? hardline : ""
|
||||
]);
|
||||
// in no-semi mode, prepend statement with semicolon if it might break ASI
|
||||
if (!options.semi && stmtNeedsASIProtection(p)) {
|
||||
return concat([";", printed]);
|
||||
}
|
||||
return printed;
|
||||
})
|
||||
.filter(e => e !== null)
|
||||
);
|
||||
|
|
|
@ -81,6 +81,69 @@ x
|
|||
|
||||
`;
|
||||
|
||||
exports[`issue2006.js 1`] = `
|
||||
switch (n) {
|
||||
case 11:
|
||||
var c = a.e;
|
||||
(i.a += Ga(c.e)), F(i, c.i, 0);
|
||||
}
|
||||
|
||||
var c = a.e;
|
||||
(i.a += Ga(c.e)), F(i, c.i, 0);
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
switch (n) {
|
||||
case 11:
|
||||
var c = a.e;
|
||||
(i.a += Ga(c.e)), F(i, c.i, 0);
|
||||
}
|
||||
|
||||
var c = a.e;
|
||||
(i.a += Ga(c.e)), F(i, c.i, 0);
|
||||
|
||||
`;
|
||||
|
||||
exports[`issue2006.js 2`] = `
|
||||
switch (n) {
|
||||
case 11:
|
||||
var c = a.e;
|
||||
(i.a += Ga(c.e)), F(i, c.i, 0);
|
||||
}
|
||||
|
||||
var c = a.e;
|
||||
(i.a += Ga(c.e)), F(i, c.i, 0);
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
switch (n) {
|
||||
case 11:
|
||||
var c = a.e
|
||||
;(i.a += Ga(c.e)), F(i, c.i, 0)
|
||||
}
|
||||
|
||||
var c = a.e
|
||||
;(i.a += Ga(c.e)), F(i, c.i, 0)
|
||||
|
||||
`;
|
||||
|
||||
exports[`issue2006.js 3`] = `
|
||||
switch (n) {
|
||||
case 11:
|
||||
var c = a.e;
|
||||
(i.a += Ga(c.e)), F(i, c.i, 0);
|
||||
}
|
||||
|
||||
var c = a.e;
|
||||
(i.a += Ga(c.e)), F(i, c.i, 0);
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
switch (n) {
|
||||
case 11:
|
||||
var c = a.e
|
||||
;(i.a += Ga(c.e)), F(i, c.i, 0)
|
||||
}
|
||||
|
||||
var c = a.e
|
||||
;(i.a += Ga(c.e)), F(i, c.i, 0)
|
||||
|
||||
`;
|
||||
|
||||
exports[`no-semi.js 1`] = `
|
||||
|
||||
// with preexisting semi
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
switch (n) {
|
||||
case 11:
|
||||
var c = a.e;
|
||||
(i.a += Ga(c.e)), F(i, c.i, 0);
|
||||
}
|
||||
|
||||
var c = a.e;
|
||||
(i.a += Ga(c.e)), F(i, c.i, 0);
|
Loading…
Reference in New Issue