@@ -13,8 +13,8 @@ import {
1313 findBaseIndent ,
1414 flatMap ,
1515 hasLeadingComments ,
16+ hasNonAssignmentOperators ,
1617 indentInParentheses ,
17- isBinaryExpression ,
1818 isNonTerminal ,
1919 isTerminal ,
2020 map ,
@@ -121,8 +121,7 @@ export default {
121121 return binaryExpression ;
122122 }
123123 const [ consequent , alternate ] = map ( path , print , "expression" ) ;
124- const parts = [ binaryExpression ] ;
125- const part = [
124+ const suffix = [
126125 line ,
127126 [ "? " , options . useTabs ? indent ( consequent ) : align ( 2 , consequent ) ] ,
128127 line ,
@@ -131,12 +130,13 @@ export default {
131130 const isNestedTernary =
132131 ( path . getNode ( 4 ) as JavaNonTerminal | null ) ?. name ===
133132 "conditionalExpression" ;
134- parts . push (
133+ const alignedSuffix =
135134 ! isNestedTernary || options . useTabs
136- ? part
137- : align ( Math . max ( 0 , options . tabWidth - 2 ) , part )
138- ) ;
139- return isNestedTernary ? parts : group ( indent ( parts ) ) ;
135+ ? suffix
136+ : align ( Math . max ( 0 , options . tabWidth - 2 ) , suffix ) ;
137+ return isNestedTernary
138+ ? [ binaryExpression , alignedSuffix ]
139+ : group ( [ binaryExpression , indent ( alignedSuffix ) ] ) ;
140140 } ,
141141
142142 binaryExpression ( path , print , options ) {
@@ -172,15 +172,16 @@ export default {
172172 "shiftOperator"
173173 ] )
174174 ) ;
175- const hasNonAssignmentOperators =
176- ( operators . length > 0 && ! children . AssignmentOperator ) ||
177- ( children . expression !== undefined &&
178- isBinaryExpression ( children . expression [ 0 ] ) ) ;
179175 const isInList =
180176 ( path . getNode ( 4 ) as JavaNonTerminal | null ) ?. name === "elementValue" ||
181177 ( path . getNode ( 6 ) as JavaNonTerminal | null ) ?. name === "argumentList" ;
178+ const binaryExpression =
179+ children . expression ?. [ 0 ] . children . conditionalExpression ?. [ 0 ] . children
180+ . binaryExpression [ 0 ] ;
182181 return binary ( operands , operators , {
183- hasNonAssignmentOperators,
182+ hasNonAssignmentOperators :
183+ ( operators . length > 0 && ! children . AssignmentOperator ) ||
184+ ( binaryExpression && hasNonAssignmentOperators ( binaryExpression ) ) ,
184185 isInList,
185186 isRoot : true ,
186187 operatorPosition : options . experimentalOperatorPosition
0 commit comments