lib/rubocop/cop/style/and_or.rb in rubocop-0.35.1 vs lib/rubocop/cop/style/and_or.rb in rubocop-0.36.0
- old
+ new
@@ -1,18 +1,19 @@
# encoding: utf-8
+# frozen_string_literal: true
module RuboCop
module Cop
module Style
# This cop checks for uses of *and* and *or*.
class AndOr < Cop
include AutocorrectUnlessChangingAST
include ConfigurableEnforcedStyle
- MSG = 'Use `%s` instead of `%s`.'
+ MSG = 'Use `%s` instead of `%s`.'.freeze
- OPS = { 'and' => '&&', 'or' => '||' }
+ OPS = { 'and' => '&&', 'or' => '||' }.freeze
def on_and(node)
process_logical_op(node) if style == :always
end
@@ -83,29 +84,30 @@
# recurse down a level and add parens to 'obj.method arg'
# however, 'not x' also parses as (send x :!)
if node.loc.selector.source == '!'
node = receiver
+ return unless node.send_type?
_receiver, _method_name, *args = *node
elsif node.loc.selector.source == 'not'
return correct_other(node, corrector)
else
fail 'unrecognized unary negation operator'
end
end
return unless correctable_send?(node)
- sb = node.loc.expression.source_buffer
+ sb = node.source_range.source_buffer
begin_paren = node.loc.selector.end_pos
range = Parser::Source::Range.new(sb, begin_paren, begin_paren + 1)
corrector.replace(range, '(')
- corrector.insert_after(args.last.loc.expression, ')')
+ corrector.insert_after(args.last.source_range, ')')
end
def correct_other(node, corrector)
- return unless node.loc.expression.begin.source != '('
- corrector.insert_before(node.loc.expression, '(')
- corrector.insert_after(node.loc.expression, ')')
+ return unless node.source_range.begin.source != '('
+ corrector.insert_before(node.source_range, '(')
+ corrector.insert_after(node.source_range, ')')
end
def correctable_send?(node)
_receiver, method_name, *args = *node
# don't clobber if we already have a starting paren