lib/rubocop/ast/node/args_node.rb
# frozen_string_literal: true module RuboCop module AST # A node extension for `args` nodes. This will be used in place of a plain # node when the builder constructs the AST, making its methods available # to all `args` nodes within RuboCop. class ArgsNode < Node include CollectionNode # It returns true if arguments are empty and delimiters do not exist. # @example: # # true # def x; end # x { } # -> {} # # # false # def x(); end # def x a; end # x { || } # -> () {} # -> a {} def empty_and_without_delimiters? loc.expression.nil? end # Yield each argument from the collection. # Arguments can be inside `mlhs` nodes in the case of destructuring, so this # flattens the collection to just `arg`, `optarg`, `restarg`, `kwarg`, # `kwoptarg`, `kwrestarg`, `blockarg`, `forward_arg` and `shadowarg`. # # @return [Array<Node>] array of argument nodes. def argument_list each_descendant(*ARGUMENT_TYPES).to_a.freeze end end end end