lib/rubocop/cop/custom_error_class.rb in gitlab-styles-8.0.0 vs lib/rubocop/cop/custom_error_class.rb in gitlab-styles-9.0.0
- old
+ new
@@ -1,10 +1,10 @@
# frozen_string_literal: true
module Rubocop
module Cop
- # This cop makes sure that custom error classes, when empty, are declared
+ # Makes sure that custom error classes, when empty, are declared
# with Class.new.
#
# @example
# # bad
# class FooError < StandardError
@@ -13,11 +13,13 @@
# # okish
# class FooError < StandardError; end
#
# # good
# FooError = Class.new(StandardError)
- class CustomErrorClass < RuboCop::Cop::Cop
+ class CustomErrorClass < RuboCop::Cop::Base
+ extend RuboCop::Cop::AutoCorrector
+
MSG = 'Use `Class.new(SuperClass)` to define an empty custom error class.'
def on_class(node)
parent = node.parent_class
body = node.body
@@ -26,19 +28,15 @@
parent_klass = class_name_from_node(parent)
return unless parent_klass&.to_s&.end_with?('Error')
- add_offense(node)
- end
+ add_offense(node) do |corrector|
+ klass = node.identifier
+ parent = node.parent_class
- def autocorrect(node)
- klass = node.identifier
- parent = node.parent_class
+ replacement = "#{class_name_from_node(klass)} = Class.new(#{class_name_from_node(parent)})"
- replacement = "#{class_name_from_node(klass)} = Class.new(#{class_name_from_node(parent)})"
-
- lambda do |corrector|
corrector.replace(node.source_range, replacement)
end
end
private