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/2006
This commit is contained in:
1 parent
7c051804a8
commit
0cfd772fd2
3 files changed
+80
-1
No files matched your search
+9
-1
@@ -1488,7 +1488,15 @@ function genericPrintNoParens(path, options, print, args) {
|
|||||||
const shouldAddLine =
|
const shouldAddLine =
|
||||||
i !== n.consequent.length - 1 &&
|
i !== n.consequent.length - 1 &&
|
||||||
util.isNextLineEmpty(options.originalText, p.getValue());
|
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)
|
.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`] = `
|
exports[`no-semi.js 1`] = `
|
||||||
|
|
||||||
// with preexisting semi
|
// 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);
|
||||||
Reference in new issue
Block a user