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