@@ -176,15 +176,39 @@ module.exports = {
176176 return startLine !== endLine ;
177177 }
178178
179+ /**
180+ * Check if the node is the right member of a logical expression
181+ * @param {ASTNode } node The node to check
182+ * @return {Boolean } true if its the case, false if not
183+ */
184+ function isRightInLogicalExp ( node ) {
185+ return (
186+ node . parent &&
187+ node . parent . parent &&
188+ node . parent . parent . type === 'LogicalExpression' &&
189+ node . parent . parent . right === node . parent
190+ ) ;
191+ }
192+
193+ /**
194+ * Check if the node is the parenthesized right member of a logical expression
195+ * @param {ASTNode } node The node to check
196+ * @return {Boolean } true if its the case, false if not
197+ */
198+ function isParenthesizedInLogicalExp ( node ) {
199+ var token = sourceCode . getTokenBefore ( node ) ;
200+ return isRightInLogicalExp ( node ) && token . type === 'Punctuator' && token . value === '(' ;
201+ }
202+
179203 /**
180204 * Check indent for nodes list
181- * @param {ASTNode[] } nodes list of node objects
205+ * @param {ASTNode } node The node to check
182206 * @param {Number } indent needed indent
183207 * @param {Boolean } excludeCommas skip comma on start of line
184208 */
185209 function checkNodesIndent ( node , indent , excludeCommas ) {
186210 var nodeIndent = getNodeIndent ( node , false , excludeCommas ) ;
187- if ( nodeIndent !== indent && isNodeFirstInLine ( node ) ) {
211+ if ( nodeIndent !== indent && isNodeFirstInLine ( node ) && ! isParenthesizedInLogicalExp ( node ) ) {
188212 report ( node , indent , nodeIndent ) ;
189213 }
190214 }
@@ -199,7 +223,7 @@ module.exports = {
199223 prevToken = sourceCode . getNodeByRangeIndex ( prevToken . start ) . parent ;
200224 }
201225 var parentElementIndent = getNodeIndent ( prevToken ) ;
202- var indent = prevToken . loc . start . line === node . loc . start . line ? 0 : indentSize ;
226+ var indent = prevToken . loc . start . line === node . loc . start . line || isRightInLogicalExp ( node ) ? 0 : indentSize ;
203227 checkNodesIndent ( node , parentElementIndent + indent ) ;
204228 } ,
205229 JSXClosingElement : function ( node ) {
0 commit comments