@@ -176,15 +176,39 @@ module.exports = {
176
176
return startLine !== endLine ;
177
177
}
178
178
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
+
179
203
/**
180
204
* Check indent for nodes list
181
- * @param {ASTNode[] } nodes list of node objects
205
+ * @param {ASTNode } node The node to check
182
206
* @param {Number } indent needed indent
183
207
* @param {Boolean } excludeCommas skip comma on start of line
184
208
*/
185
209
function checkNodesIndent ( node , indent , excludeCommas ) {
186
210
var nodeIndent = getNodeIndent ( node , false , excludeCommas ) ;
187
- if ( nodeIndent !== indent && isNodeFirstInLine ( node ) ) {
211
+ if ( nodeIndent !== indent && isNodeFirstInLine ( node ) && ! isParenthesizedInLogicalExp ( node ) ) {
188
212
report ( node , indent , nodeIndent ) ;
189
213
}
190
214
}
@@ -199,7 +223,7 @@ module.exports = {
199
223
prevToken = sourceCode . getNodeByRangeIndex ( prevToken . start ) . parent ;
200
224
}
201
225
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 ;
203
227
checkNodesIndent ( node , parentElementIndent + indent ) ;
204
228
} ,
205
229
JSXClosingElement : function ( node ) {
0 commit comments