Break closing paren of ConditionalExpression in member chains

master
Lucas Duailibe 2017-09-10 16:09:21 -03:00 committed by Stephen Scott
parent df5482008e
commit bd78572b19
5 changed files with 93 additions and 14 deletions

View File

@ -1309,10 +1309,19 @@ function genericPrintNoParens(path, options, print, args) {
? parent === firstNonConditionalParent ? group(doc) : doc
: group(doc); // Always group in normal mode.
// Break the closing paren to keep the chain right after it:
// (a
// ? b
// : c
// ).call()
const breakClosingParen =
!jsxMode && parent.type === "MemberExpression" && !parent.computed;
return maybeGroup(
concat([
path.call(print, "test"),
forceNoIndent ? concat(parts) : indent(concat(parts))
forceNoIndent ? concat(parts) : indent(concat(parts)),
breakClosingParen ? ifBreak(softline, "") : ""
])
);
}
@ -3705,9 +3714,7 @@ function printMemberChain(path, options, print) {
groups.length <= cutoff &&
!hasComment &&
// (a || b).map() should be break before .map() instead of ||
groups[0][0].node.type !== "LogicalExpression" &&
// (a ? b : c).map() should be break before .map() instead of ?
groups[0][0].node.type !== "ConditionalExpression"
groups[0][0].node.type !== "LogicalExpression"
) {
return group(oneLine);
}

View File

@ -1,5 +1,17 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`conditional.js 1`] = `
(valid
? helper.responseBody(this.currentUser)
: helper.responseBody(this.defaultUser))
.prop;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(valid
? helper.responseBody(this.currentUser)
: helper.responseBody(this.defaultUser)).prop;
`;
exports[`expand.js 1`] = `
const veryVeryVeryVeryVeryVeryVeryLong = doc.expandedStates[doc.expandedStates.length - 1];
const small = doc.expandedStates[doc.expandedStates.length - 1];

View File

@ -0,0 +1,4 @@
(valid
? helper.responseBody(this.currentUser)
: helper.responseBody(this.defaultUser))
.prop;

View File

@ -417,23 +417,63 @@ exports[`computed-merge.js 1`] = `
`;
exports[`conditional.js 1`] = `
(a ? b : c).d();
(a ? b : c).d().e();
(a ? b : c).d().e().f();
(valid
? helper.responseBody(this.currentUser)
: helper.response(401))
.map(res => res.json());
: helper.responseBody(this.defaultUser))
.map();
(valid
? helper.responseBody(this.currentUser)
: helper.responseBody(this.defaultUser))
.map().filter();
(valid
? helper.responseBody(this.currentUser)
: helper.responseBody(defaultUser))
.map(res => res.json());
.map();
object[valid
? helper.responseBody(this.currentUser)
: helper.responseBody(defaultUser)]
.map();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(valid ? helper.responseBody(this.currentUser) : helper.response(401))
.map(res => res.json());
(a ? b : c).d();
(a ? b : c).d().e();
(a ? b : c)
.d()
.e()
.f();
(valid
? helper.responseBody(this.currentUser)
: helper.responseBody(defaultUser))
.map(res => res.json());
: helper.responseBody(this.defaultUser)
).map();
(valid
? helper.responseBody(this.currentUser)
: helper.responseBody(this.defaultUser)
)
.map()
.filter();
(valid
? helper.responseBody(this.currentUser)
: helper.responseBody(defaultUser)
).map();
object[
valid
? helper.responseBody(this.currentUser)
: helper.responseBody(defaultUser)
].map();
`;

View File

@ -1,9 +1,25 @@
(a ? b : c).d();
(a ? b : c).d().e();
(a ? b : c).d().e().f();
(valid
? helper.responseBody(this.currentUser)
: helper.response(401))
.map(res => res.json());
: helper.responseBody(this.defaultUser))
.map();
(valid
? helper.responseBody(this.currentUser)
: helper.responseBody(this.defaultUser))
.map().filter();
(valid
? helper.responseBody(this.currentUser)
: helper.responseBody(defaultUser))
.map(res => res.json());
.map();
object[valid
? helper.responseBody(this.currentUser)
: helper.responseBody(defaultUser)]
.map();