lib/rubocop/cop/naming/constant_name.rb in rubocop-0.53.0 vs lib/rubocop/cop/naming/constant_name.rb in rubocop-0.54.0

- old
+ new

@@ -28,26 +28,35 @@ (const _ {:Class :Struct}) :new ...) PATTERN def on_casgn(node) - _scope, const_name, value = *node + if node.parent && node.parent.or_asgn_type? + lhs, value = *node.parent + _scope, const_name = *lhs + else + _scope, const_name, value = *node + end # We cannot know the result of method calls like # NewClass = something_that_returns_a_class # It's also ok to assign a class constant another class constant, # `Class.new(...)` or `Struct.new(...)` # SomeClass = SomeOtherClass # SomeClass = Class.new(...) # SomeClass = Struct.new(...) - return if value && %i[block const casgn].include?(value.type) || - allowed_method_call_on_rhs?(value) || - class_or_struct_return_method?(value) + return if allowed_assignment?(value) add_offense(node, location: :name) if const_name !~ SNAKE_CASE end private + + def allowed_assignment?(value) + value && %i[block const casgn].include?(value.type) || + allowed_method_call_on_rhs?(value) || + class_or_struct_return_method?(value) + end def allowed_method_call_on_rhs?(node) node && node.send_type? && (node.receiver.nil? || !node.receiver.literal?) end