Sha256: 9f2627ca3f43923bbac27685857cecc1b37f01c7964ff923b0d339951e8c5361
Contents?: true
Size: 1.56 KB
Versions: 3
Compression:
Stored size: 1.56 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Lint # Checks for circular argument references in optional keyword # arguments and optional ordinal arguments. # # This cop mirrors a warning produced by MRI since 2.2. # # NOTE: This syntax is no longer valid on Ruby 2.7 or higher. # # @example # # # bad # def bake(pie: pie) # pie.heat_up # end # # # good # def bake(pie:) # pie.refrigerate # end # # # good # def bake(pie: self.pie) # pie.feed_to(user) # end # # # bad # def cook(dry_ingredients = dry_ingredients) # dry_ingredients.reduce(&:+) # end # # # good # def cook(dry_ingredients = self.dry_ingredients) # dry_ingredients.combine # end class CircularArgumentReference < Base extend TargetRubyVersion MSG = 'Circular argument reference - `%<arg_name>s`.' maximum_target_ruby_version 2.6 def on_kwoptarg(node) check_for_circular_argument_references(*node) end def on_optarg(node) check_for_circular_argument_references(*node) end private def check_for_circular_argument_references(arg_name, arg_value) return unless arg_value.lvar_type? return unless arg_value.to_a == [arg_name] add_offense(arg_value, message: format(MSG, arg_name: arg_name)) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems