lib/rubocop/cop/lint/else_layout.rb in rubocop-0.37.2 vs lib/rubocop/cop/lint/else_layout.rb in rubocop-0.38.0

- old
+ new

@@ -27,27 +27,37 @@ private def check(node) return unless node + return check_else(node) if else?(node) - if node.loc.respond_to?(:else) && - node.loc.else && - node.loc.else.is?('else') - _cond, _if_branch, else_branch = *node + check_if(node) if if?(node) + end - return unless else_branch && else_branch.type == :begin + def check_else(node) + _cond, _if_branch, else_branch = *node + return unless else_branch && else_branch.type == :begin - first_else_expr = else_branch.children.first + first_else_expr = else_branch.children.first + return unless first_else_expr.source_range.line == node.loc.else.line - if first_else_expr.source_range.line == node.loc.else.line - add_offense(first_else_expr, :expression, message) - end - elsif node.loc.respond_to?(:keyword) && - %w(if elsif).include?(node.loc.keyword.source) - _cond, _if_branch, else_branch = *node - check(else_branch) - end + add_offense(first_else_expr, :expression, message) + end + + def check_if(node) + _cond, _if_branch, else_branch = *node + check(else_branch) + end + + def if?(node) + node.loc.respond_to?(:keyword) && + %w(if elsif).include?(node.loc.keyword.source) + end + + def else?(node) + node.loc.respond_to?(:else) && node.loc.else && + node.loc.else.is?('else') end def message 'Odd `else` layout detected. Did you mean to use `elsif`?' end