lib/rubocop/cop/style/redundant_exception.rb in rbhint-0.85.1.rc2 vs lib/rubocop/cop/style/redundant_exception.rb in rbhint-0.87.1.rc1
- old
+ new
@@ -14,46 +14,50 @@
# # Bad
# raise RuntimeError.new('message')
#
# # Good
# raise 'message'
- class RedundantException < Cop
+ class RedundantException < Base
+ extend AutoCorrector
+
MSG_1 = 'Redundant `RuntimeError` argument can be removed.'
MSG_2 = 'Redundant `RuntimeError.new` call can be replaced with ' \
'just the message.'
+ # Switch `raise RuntimeError, 'message'` to `raise 'message'`, and
+ # `raise RuntimeError.new('message')` to `raise 'message'`.
def on_send(node)
- exploded?(node) { return add_offense(node, message: MSG_1) }
- compact?(node) { add_offense(node, message: MSG_2) }
+ fix_exploded(node) || fix_compact(node)
end
- # Switch `raise RuntimeError, 'message'` to `raise 'message'`, and
- # `raise RuntimeError.new('message')` to `raise 'message'`.
- def autocorrect(node) # rubocop:disable Metrics/MethodLength
+ def fix_exploded(node)
exploded?(node) do |command, message|
- return lambda do |corrector|
+ add_offense(node, message: MSG_1) do |corrector|
if node.parenthesized?
corrector.replace(node,
"#{command}(#{message.source})")
else
corrector.replace(node,
"#{command} #{message.source}")
end
end
end
+ end
+
+ def fix_compact(node)
compact?(node) do |new_call, message|
- lambda do |corrector|
+ add_offense(node, message: MSG_2) do |corrector|
corrector.replace(new_call, message.source)
end
end
end
def_node_matcher :exploded?, <<~PATTERN
- (send nil? ${:raise :fail} (const nil? :RuntimeError) $_)
+ (send nil? ${:raise :fail} (const {nil? cbase} :RuntimeError) $_)
PATTERN
def_node_matcher :compact?, <<~PATTERN
- (send nil? {:raise :fail} $(send (const nil? :RuntimeError) :new $_))
+ (send nil? {:raise :fail} $(send (const {nil? cbase} :RuntimeError) :new $_))
PATTERN
end
end
end
end