rubocop 0.83.0 → 0.84.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +2 -2
 - data/config/default.yml +20 -3
 - data/lib/rubocop.rb +6 -59
 - data/lib/rubocop/ast_aliases.rb +8 -0
 - data/lib/rubocop/cli/command/show_cops.rb +2 -6
 - data/lib/rubocop/config.rb +1 -3
 - data/lib/rubocop/config_loader.rb +3 -9
 - data/lib/rubocop/config_loader_resolver.rb +2 -6
 - data/lib/rubocop/cop/autocorrect_logic.rb +1 -2
 - data/lib/rubocop/cop/corrector.rb +1 -3
 - data/lib/rubocop/cop/correctors/alignment_corrector.rb +2 -6
 - data/lib/rubocop/cop/correctors/parentheses_corrector.rb +1 -3
 - data/lib/rubocop/cop/correctors/space_corrector.rb +1 -3
 - data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -3
 - data/lib/rubocop/cop/generator.rb +1 -1
 - data/lib/rubocop/cop/ignored_node.rb +1 -3
 - data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +2 -6
 - data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +62 -4
 - data/lib/rubocop/cop/layout/first_argument_indentation.rb +0 -2
 - data/lib/rubocop/cop/layout/first_array_element_indentation.rb +1 -3
 - data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -3
 - data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -6
 - data/lib/rubocop/cop/layout/indentation_width.rb +1 -3
 - data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -3
 - data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -3
 - data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +2 -6
 - data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
 - data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +1 -3
 - data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +2 -6
 - data/lib/rubocop/cop/lint/ambiguous_operator.rb +4 -2
 - data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +133 -0
 - data/lib/rubocop/cop/lint/erb_new_arguments.rb +2 -6
 - data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +11 -3
 - data/lib/rubocop/cop/lint/percent_string_array.rb +1 -3
 - data/lib/rubocop/cop/lint/suppressed_exception.rb +12 -1
 - data/lib/rubocop/cop/lint/syntax.rb +1 -3
 - data/lib/rubocop/cop/lint/useless_access_modifier.rb +1 -3
 - data/lib/rubocop/cop/migration/department_name.rb +5 -9
 - data/lib/rubocop/cop/mixin/alignment.rb +1 -3
 - data/lib/rubocop/cop/mixin/array_min_size.rb +2 -6
 - data/lib/rubocop/cop/mixin/check_line_breakable.rb +4 -12
 - data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +1 -3
 - data/lib/rubocop/cop/mixin/configurable_formatting.rb +1 -3
 - data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -3
 - data/lib/rubocop/cop/mixin/surrounding_space.rb +1 -3
 - data/lib/rubocop/cop/mixin/trailing_comma.rb +1 -3
 - data/lib/rubocop/cop/naming/file_name.rb +1 -3
 - data/lib/rubocop/cop/registry.rb +2 -6
 - data/lib/rubocop/cop/severity.rb +1 -3
 - data/lib/rubocop/cop/style/and_or.rb +2 -2
 - data/lib/rubocop/cop/style/attr.rb +1 -3
 - data/lib/rubocop/cop/style/block_delimiters.rb +2 -8
 - data/lib/rubocop/cop/style/conditional_assignment.rb +1 -3
 - data/lib/rubocop/cop/style/double_negation.rb +41 -4
 - data/lib/rubocop/cop/style/empty_literal.rb +1 -3
 - data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +2 -4
 - data/lib/rubocop/cop/style/hash_syntax.rb +12 -5
 - data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +1 -3
 - data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +1 -3
 - data/lib/rubocop/cop/style/one_line_conditional.rb +2 -6
 - data/lib/rubocop/cop/style/redundant_parentheses.rb +2 -6
 - data/lib/rubocop/cop/style/safe_navigation.rb +2 -6
 - data/lib/rubocop/cop/style/slicing_with_range.rb +1 -1
 - data/lib/rubocop/cop/style/special_global_vars.rb +2 -6
 - data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -3
 - data/lib/rubocop/cop/style/trailing_underscore_variable.rb +2 -6
 - data/lib/rubocop/cop/variable_force.rb +3 -9
 - data/lib/rubocop/cop/variable_force/branch.rb +2 -6
 - data/lib/rubocop/cop/variable_force/variable.rb +2 -6
 - data/lib/rubocop/ext/processed_source.rb +18 -0
 - data/lib/rubocop/formatter/base_formatter.rb +0 -4
 - data/lib/rubocop/formatter/disabled_config_formatter.rb +4 -12
 - data/lib/rubocop/formatter/formatter_set.rb +1 -3
 - data/lib/rubocop/options.rb +2 -8
 - data/lib/rubocop/remote_config.rb +1 -3
 - data/lib/rubocop/result_cache.rb +1 -3
 - data/lib/rubocop/rspec/cop_helper.rb +1 -3
 - data/lib/rubocop/rspec/expect_offense.rb +3 -9
 - data/lib/rubocop/rspec/shared_contexts.rb +54 -16
 - data/lib/rubocop/runner.rb +8 -10
 - data/lib/rubocop/target_finder.rb +2 -6
 - data/lib/rubocop/version.rb +5 -3
 - metadata +19 -56
 - data/lib/rubocop/ast/builder.rb +0 -85
 - data/lib/rubocop/ast/node.rb +0 -637
 - data/lib/rubocop/ast/node/alias_node.rb +0 -24
 - data/lib/rubocop/ast/node/and_node.rb +0 -29
 - data/lib/rubocop/ast/node/args_node.rb +0 -29
 - data/lib/rubocop/ast/node/array_node.rb +0 -70
 - data/lib/rubocop/ast/node/block_node.rb +0 -121
 - data/lib/rubocop/ast/node/break_node.rb +0 -17
 - data/lib/rubocop/ast/node/case_match_node.rb +0 -56
 - data/lib/rubocop/ast/node/case_node.rb +0 -56
 - data/lib/rubocop/ast/node/class_node.rb +0 -31
 - data/lib/rubocop/ast/node/def_node.rb +0 -82
 - data/lib/rubocop/ast/node/defined_node.rb +0 -17
 - data/lib/rubocop/ast/node/ensure_node.rb +0 -17
 - data/lib/rubocop/ast/node/float_node.rb +0 -12
 - data/lib/rubocop/ast/node/for_node.rb +0 -53
 - data/lib/rubocop/ast/node/forward_args_node.rb +0 -18
 - data/lib/rubocop/ast/node/hash_node.rb +0 -109
 - data/lib/rubocop/ast/node/if_node.rb +0 -175
 - data/lib/rubocop/ast/node/int_node.rb +0 -12
 - data/lib/rubocop/ast/node/keyword_splat_node.rb +0 -45
 - data/lib/rubocop/ast/node/mixin/basic_literal_node.rb +0 -16
 - data/lib/rubocop/ast/node/mixin/binary_operator_node.rb +0 -43
 - data/lib/rubocop/ast/node/mixin/collection_node.rb +0 -15
 - data/lib/rubocop/ast/node/mixin/conditional_node.rb +0 -45
 - data/lib/rubocop/ast/node/mixin/hash_element_node.rb +0 -125
 - data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +0 -269
 - data/lib/rubocop/ast/node/mixin/method_identifier_predicates.rb +0 -114
 - data/lib/rubocop/ast/node/mixin/modifier_node.rb +0 -17
 - data/lib/rubocop/ast/node/mixin/numeric_node.rb +0 -21
 - data/lib/rubocop/ast/node/mixin/parameterized_node.rb +0 -61
 - data/lib/rubocop/ast/node/mixin/predicate_operator_node.rb +0 -35
 - data/lib/rubocop/ast/node/module_node.rb +0 -24
 - data/lib/rubocop/ast/node/or_node.rb +0 -29
 - data/lib/rubocop/ast/node/pair_node.rb +0 -63
 - data/lib/rubocop/ast/node/range_node.rb +0 -18
 - data/lib/rubocop/ast/node/regexp_node.rb +0 -33
 - data/lib/rubocop/ast/node/resbody_node.rb +0 -24
 - data/lib/rubocop/ast/node/retry_node.rb +0 -17
 - data/lib/rubocop/ast/node/return_node.rb +0 -24
 - data/lib/rubocop/ast/node/self_class_node.rb +0 -24
 - data/lib/rubocop/ast/node/send_node.rb +0 -17
 - data/lib/rubocop/ast/node/str_node.rb +0 -16
 - data/lib/rubocop/ast/node/super_node.rb +0 -21
 - data/lib/rubocop/ast/node/symbol_node.rb +0 -12
 - data/lib/rubocop/ast/node/until_node.rb +0 -35
 - data/lib/rubocop/ast/node/when_node.rb +0 -53
 - data/lib/rubocop/ast/node/while_node.rb +0 -35
 - data/lib/rubocop/ast/node/yield_node.rb +0 -21
 - data/lib/rubocop/ast/sexp.rb +0 -16
 - data/lib/rubocop/ast/traversal.rb +0 -202
 - data/lib/rubocop/node_pattern.rb +0 -887
 - data/lib/rubocop/processed_source.rb +0 -213
 - data/lib/rubocop/token.rb +0 -114
 
| 
         @@ -1,17 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       4 
     | 
    
         
            -
              module AST
         
     | 
| 
       5 
     | 
    
         
            -
                # A node extension for `retry` nodes. This will be used in place of a
         
     | 
| 
       6 
     | 
    
         
            -
                # plain node when the builder constructs the AST, making its methods
         
     | 
| 
       7 
     | 
    
         
            -
                # available to all `retry` nodes within RuboCop.
         
     | 
| 
       8 
     | 
    
         
            -
                class RetryNode < Node
         
     | 
| 
       9 
     | 
    
         
            -
                  include MethodDispatchNode
         
     | 
| 
       10 
     | 
    
         
            -
                  include ParameterizedNode
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  def arguments
         
     | 
| 
       13 
     | 
    
         
            -
                    []
         
     | 
| 
       14 
     | 
    
         
            -
                  end
         
     | 
| 
       15 
     | 
    
         
            -
                end
         
     | 
| 
       16 
     | 
    
         
            -
              end
         
     | 
| 
       17 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,24 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       4 
     | 
    
         
            -
              module AST
         
     | 
| 
       5 
     | 
    
         
            -
                # A node extension for `return` nodes. This will be used in place of a
         
     | 
| 
       6 
     | 
    
         
            -
                # plain node when the builder constructs the AST, making its methods
         
     | 
| 
       7 
     | 
    
         
            -
                # available to all `return` nodes within RuboCop.
         
     | 
| 
       8 
     | 
    
         
            -
                class ReturnNode < Node
         
     | 
| 
       9 
     | 
    
         
            -
                  include MethodDispatchNode
         
     | 
| 
       10 
     | 
    
         
            -
                  include ParameterizedNode
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  # Returns the arguments of the `return`.
         
     | 
| 
       13 
     | 
    
         
            -
                  #
         
     | 
| 
       14 
     | 
    
         
            -
                  # @return [Array] The arguments of the `return`.
         
     | 
| 
       15 
     | 
    
         
            -
                  def arguments
         
     | 
| 
       16 
     | 
    
         
            -
                    if node_parts.one? && node_parts.first.begin_type?
         
     | 
| 
       17 
     | 
    
         
            -
                      node_parts.first.children
         
     | 
| 
       18 
     | 
    
         
            -
                    else
         
     | 
| 
       19 
     | 
    
         
            -
                      node_parts
         
     | 
| 
       20 
     | 
    
         
            -
                    end
         
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
       22 
     | 
    
         
            -
                end
         
     | 
| 
       23 
     | 
    
         
            -
              end
         
     | 
| 
       24 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,24 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       4 
     | 
    
         
            -
              module AST
         
     | 
| 
       5 
     | 
    
         
            -
                # A node extension for `sclass` nodes. This will be used in place of a
         
     | 
| 
       6 
     | 
    
         
            -
                # plain node when the builder constructs the AST, making its methods
         
     | 
| 
       7 
     | 
    
         
            -
                # available to all `sclass` nodes within RuboCop.
         
     | 
| 
       8 
     | 
    
         
            -
                class SelfClassNode < Node
         
     | 
| 
       9 
     | 
    
         
            -
                  # The identifer for this `sclass` node. (Always `self`.)
         
     | 
| 
       10 
     | 
    
         
            -
                  #
         
     | 
| 
       11 
     | 
    
         
            -
                  # @return [Node] the identifer of the class
         
     | 
| 
       12 
     | 
    
         
            -
                  def identifier
         
     | 
| 
       13 
     | 
    
         
            -
                    node_parts[0]
         
     | 
| 
       14 
     | 
    
         
            -
                  end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                  # The body of this `sclass` node.
         
     | 
| 
       17 
     | 
    
         
            -
                  #
         
     | 
| 
       18 
     | 
    
         
            -
                  # @return [Node, nil] the body of the class
         
     | 
| 
       19 
     | 
    
         
            -
                  def body
         
     | 
| 
       20 
     | 
    
         
            -
                    node_parts[1]
         
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
       22 
     | 
    
         
            -
                end
         
     | 
| 
       23 
     | 
    
         
            -
              end
         
     | 
| 
       24 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,17 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       4 
     | 
    
         
            -
              module AST
         
     | 
| 
       5 
     | 
    
         
            -
                # A node extension for `send` nodes. This will be used in place of a plain
         
     | 
| 
       6 
     | 
    
         
            -
                # node when the builder constructs the AST, making its methods available
         
     | 
| 
       7 
     | 
    
         
            -
                # to all `send` nodes within RuboCop.
         
     | 
| 
       8 
     | 
    
         
            -
                class SendNode < Node
         
     | 
| 
       9 
     | 
    
         
            -
                  include ParameterizedNode
         
     | 
| 
       10 
     | 
    
         
            -
                  include MethodDispatchNode
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  def_node_matcher :attribute_accessor?, <<~PATTERN
         
     | 
| 
       13 
     | 
    
         
            -
                    (send nil? ${:attr_reader :attr_writer :attr_accessor :attr} $...)
         
     | 
| 
       14 
     | 
    
         
            -
                  PATTERN
         
     | 
| 
       15 
     | 
    
         
            -
                end
         
     | 
| 
       16 
     | 
    
         
            -
              end
         
     | 
| 
       17 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,16 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       4 
     | 
    
         
            -
              module AST
         
     | 
| 
       5 
     | 
    
         
            -
                # A node extension for `str`, `dstr`, and `xstr` nodes. This will be used
         
     | 
| 
       6 
     | 
    
         
            -
                # in place of a plain node when the builder constructs the AST, making
         
     | 
| 
       7 
     | 
    
         
            -
                # its methods available to all `str` nodes within RuboCop.
         
     | 
| 
       8 
     | 
    
         
            -
                class StrNode < Node
         
     | 
| 
       9 
     | 
    
         
            -
                  include BasicLiteralNode
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                  def heredoc?
         
     | 
| 
       12 
     | 
    
         
            -
                    loc.is_a?(Parser::Source::Map::Heredoc)
         
     | 
| 
       13 
     | 
    
         
            -
                  end
         
     | 
| 
       14 
     | 
    
         
            -
                end
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,21 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       4 
     | 
    
         
            -
              module AST
         
     | 
| 
       5 
     | 
    
         
            -
                # A node extension for `super`- and `zsuper` nodes. This will be used in
         
     | 
| 
       6 
     | 
    
         
            -
                # place of a plain node when the builder constructs the AST, making its
         
     | 
| 
       7 
     | 
    
         
            -
                # methods available to all `super`- and `zsuper` nodes within RuboCop.
         
     | 
| 
       8 
     | 
    
         
            -
                class SuperNode < Node
         
     | 
| 
       9 
     | 
    
         
            -
                  include ParameterizedNode
         
     | 
| 
       10 
     | 
    
         
            -
                  include MethodDispatchNode
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  # Custom destructuring method. This can be used to normalize
         
     | 
| 
       13 
     | 
    
         
            -
                  # destructuring for different variations of the node.
         
     | 
| 
       14 
     | 
    
         
            -
                  #
         
     | 
| 
       15 
     | 
    
         
            -
                  # @return [Array] the different parts of the `super` node
         
     | 
| 
       16 
     | 
    
         
            -
                  def node_parts
         
     | 
| 
       17 
     | 
    
         
            -
                    [nil, :super, *to_a]
         
     | 
| 
       18 
     | 
    
         
            -
                  end
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
     | 
    
         
            -
              end
         
     | 
| 
       21 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,12 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       4 
     | 
    
         
            -
              module AST
         
     | 
| 
       5 
     | 
    
         
            -
                # A node extension for `sym` nodes. This will be used in  place of a
         
     | 
| 
       6 
     | 
    
         
            -
                # plain node when the builder constructs the AST, making its methods
         
     | 
| 
       7 
     | 
    
         
            -
                # available to all `sym` nodes within RuboCop.
         
     | 
| 
       8 
     | 
    
         
            -
                class SymbolNode < Node
         
     | 
| 
       9 
     | 
    
         
            -
                  include BasicLiteralNode
         
     | 
| 
       10 
     | 
    
         
            -
                end
         
     | 
| 
       11 
     | 
    
         
            -
              end
         
     | 
| 
       12 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,35 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       4 
     | 
    
         
            -
              module AST
         
     | 
| 
       5 
     | 
    
         
            -
                # A node extension for `until` nodes. This will be used in place of a plain
         
     | 
| 
       6 
     | 
    
         
            -
                # node when the builder constructs the AST, making its methods available
         
     | 
| 
       7 
     | 
    
         
            -
                # to all `until` nodes within RuboCop.
         
     | 
| 
       8 
     | 
    
         
            -
                class UntilNode < Node
         
     | 
| 
       9 
     | 
    
         
            -
                  include ConditionalNode
         
     | 
| 
       10 
     | 
    
         
            -
                  include ModifierNode
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  # Returns the keyword of the `until` statement as a string.
         
     | 
| 
       13 
     | 
    
         
            -
                  #
         
     | 
| 
       14 
     | 
    
         
            -
                  # @return [String] the keyword of the `until` statement
         
     | 
| 
       15 
     | 
    
         
            -
                  def keyword
         
     | 
| 
       16 
     | 
    
         
            -
                    'until'
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  # Returns the inverse keyword of the `until` node as a string.
         
     | 
| 
       20 
     | 
    
         
            -
                  # Returns `while` for `until` nodes and vice versa.
         
     | 
| 
       21 
     | 
    
         
            -
                  #
         
     | 
| 
       22 
     | 
    
         
            -
                  # @return [String] the inverse keyword of the `until` statement
         
     | 
| 
       23 
     | 
    
         
            -
                  def inverse_keyword
         
     | 
| 
       24 
     | 
    
         
            -
                    'while'
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                  # Checks whether the `until` node has a `do` keyword.
         
     | 
| 
       28 
     | 
    
         
            -
                  #
         
     | 
| 
       29 
     | 
    
         
            -
                  # @return [Boolean] whether the `until` node has a `do` keyword
         
     | 
| 
       30 
     | 
    
         
            -
                  def do?
         
     | 
| 
       31 
     | 
    
         
            -
                    loc.begin&.is?('do')
         
     | 
| 
       32 
     | 
    
         
            -
                  end
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
              end
         
     | 
| 
       35 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,53 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       4 
     | 
    
         
            -
              module AST
         
     | 
| 
       5 
     | 
    
         
            -
                # A node extension for `when` nodes. This will be used in place of a plain
         
     | 
| 
       6 
     | 
    
         
            -
                # node when the builder constructs the AST, making its methods available
         
     | 
| 
       7 
     | 
    
         
            -
                # to all `when` nodes within RuboCop.
         
     | 
| 
       8 
     | 
    
         
            -
                class WhenNode < Node
         
     | 
| 
       9 
     | 
    
         
            -
                  # Returns an array of all the conditions in the `when` branch.
         
     | 
| 
       10 
     | 
    
         
            -
                  #
         
     | 
| 
       11 
     | 
    
         
            -
                  # @return [Array<Node>] an array of condition nodes
         
     | 
| 
       12 
     | 
    
         
            -
                  def conditions
         
     | 
| 
       13 
     | 
    
         
            -
                    node_parts[0...-1]
         
     | 
| 
       14 
     | 
    
         
            -
                  end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                  # Calls the given block for each condition node in the `when` branch.
         
     | 
| 
       17 
     | 
    
         
            -
                  # If no block is given, an `Enumerator` is returned.
         
     | 
| 
       18 
     | 
    
         
            -
                  #
         
     | 
| 
       19 
     | 
    
         
            -
                  # @return [self] if a block is given
         
     | 
| 
       20 
     | 
    
         
            -
                  # @return [Enumerator] if no block is given
         
     | 
| 
       21 
     | 
    
         
            -
                  def each_condition
         
     | 
| 
       22 
     | 
    
         
            -
                    return conditions.to_enum(__method__) unless block_given?
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                    conditions.each do |condition|
         
     | 
| 
       25 
     | 
    
         
            -
                      yield condition
         
     | 
| 
       26 
     | 
    
         
            -
                    end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                    self
         
     | 
| 
       29 
     | 
    
         
            -
                  end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                  # Returns the index of the `when` branch within the `case` statement.
         
     | 
| 
       32 
     | 
    
         
            -
                  #
         
     | 
| 
       33 
     | 
    
         
            -
                  # @return [Integer] the index of the `when` branch
         
     | 
| 
       34 
     | 
    
         
            -
                  def branch_index
         
     | 
| 
       35 
     | 
    
         
            -
                    parent.when_branches.index(self)
         
     | 
| 
       36 
     | 
    
         
            -
                  end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                  # Checks whether the `when` node has a `then` keyword.
         
     | 
| 
       39 
     | 
    
         
            -
                  #
         
     | 
| 
       40 
     | 
    
         
            -
                  # @return [Boolean] whether the `when` node has a `then` keyword
         
     | 
| 
       41 
     | 
    
         
            -
                  def then?
         
     | 
| 
       42 
     | 
    
         
            -
                    loc.begin&.is?('then')
         
     | 
| 
       43 
     | 
    
         
            -
                  end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                  # Returns the body of the `when` node.
         
     | 
| 
       46 
     | 
    
         
            -
                  #
         
     | 
| 
       47 
     | 
    
         
            -
                  # @return [Node, nil] the body of the `when` node
         
     | 
| 
       48 
     | 
    
         
            -
                  def body
         
     | 
| 
       49 
     | 
    
         
            -
                    node_parts[-1]
         
     | 
| 
       50 
     | 
    
         
            -
                  end
         
     | 
| 
       51 
     | 
    
         
            -
                end
         
     | 
| 
       52 
     | 
    
         
            -
              end
         
     | 
| 
       53 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,35 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       4 
     | 
    
         
            -
              module AST
         
     | 
| 
       5 
     | 
    
         
            -
                # A node extension for `while` nodes. This will be used in place of a plain
         
     | 
| 
       6 
     | 
    
         
            -
                # node when the builder constructs the AST, making its methods available
         
     | 
| 
       7 
     | 
    
         
            -
                # to all `while` nodes within RuboCop.
         
     | 
| 
       8 
     | 
    
         
            -
                class WhileNode < Node
         
     | 
| 
       9 
     | 
    
         
            -
                  include ConditionalNode
         
     | 
| 
       10 
     | 
    
         
            -
                  include ModifierNode
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  # Returns the keyword of the `while` statement as a string.
         
     | 
| 
       13 
     | 
    
         
            -
                  #
         
     | 
| 
       14 
     | 
    
         
            -
                  # @return [String] the keyword of the `while` statement
         
     | 
| 
       15 
     | 
    
         
            -
                  def keyword
         
     | 
| 
       16 
     | 
    
         
            -
                    'while'
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  # Returns the inverse keyword of the `while` node as a string.
         
     | 
| 
       20 
     | 
    
         
            -
                  # Returns `until` for `while` nodes and vice versa.
         
     | 
| 
       21 
     | 
    
         
            -
                  #
         
     | 
| 
       22 
     | 
    
         
            -
                  # @return [String] the inverse keyword of the `while` statement
         
     | 
| 
       23 
     | 
    
         
            -
                  def inverse_keyword
         
     | 
| 
       24 
     | 
    
         
            -
                    'until'
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                  # Checks whether the `until` node has a `do` keyword.
         
     | 
| 
       28 
     | 
    
         
            -
                  #
         
     | 
| 
       29 
     | 
    
         
            -
                  # @return [Boolean] whether the `until` node has a `do` keyword
         
     | 
| 
       30 
     | 
    
         
            -
                  def do?
         
     | 
| 
       31 
     | 
    
         
            -
                    loc.begin&.is?('do')
         
     | 
| 
       32 
     | 
    
         
            -
                  end
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
              end
         
     | 
| 
       35 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,21 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       4 
     | 
    
         
            -
              module AST
         
     | 
| 
       5 
     | 
    
         
            -
                # A node extension for `yield` nodes. This will be used in place of a plain
         
     | 
| 
       6 
     | 
    
         
            -
                # node when the builder constructs the AST, making its methods available
         
     | 
| 
       7 
     | 
    
         
            -
                # to all `yield` nodes within RuboCop.
         
     | 
| 
       8 
     | 
    
         
            -
                class YieldNode < Node
         
     | 
| 
       9 
     | 
    
         
            -
                  include ParameterizedNode
         
     | 
| 
       10 
     | 
    
         
            -
                  include MethodDispatchNode
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  # Custom destructuring method. This can be used to normalize
         
     | 
| 
       13 
     | 
    
         
            -
                  # destructuring for different variations of the node.
         
     | 
| 
       14 
     | 
    
         
            -
                  #
         
     | 
| 
       15 
     | 
    
         
            -
                  # @return [Array] the different parts of the `send` node
         
     | 
| 
       16 
     | 
    
         
            -
                  def node_parts
         
     | 
| 
       17 
     | 
    
         
            -
                    [nil, :yield, *to_a]
         
     | 
| 
       18 
     | 
    
         
            -
                  end
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
     | 
    
         
            -
              end
         
     | 
| 
       21 
     | 
    
         
            -
            end
         
     | 
    
        data/lib/rubocop/ast/sexp.rb
    DELETED
    
    | 
         @@ -1,16 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       4 
     | 
    
         
            -
              module AST
         
     | 
| 
       5 
     | 
    
         
            -
                # This module provides a shorthand method to create a {Node} like
         
     | 
| 
       6 
     | 
    
         
            -
                # `Parser::AST::Sexp`.
         
     | 
| 
       7 
     | 
    
         
            -
                #
         
     | 
| 
       8 
     | 
    
         
            -
                # @see https://www.rubydoc.info/gems/ast/AST/Sexp
         
     | 
| 
       9 
     | 
    
         
            -
                module Sexp
         
     | 
| 
       10 
     | 
    
         
            -
                  # Creates a {Node} with type `type` and children `children`.
         
     | 
| 
       11 
     | 
    
         
            -
                  def s(type, *children)
         
     | 
| 
       12 
     | 
    
         
            -
                    Node.new(type, children)
         
     | 
| 
       13 
     | 
    
         
            -
                  end
         
     | 
| 
       14 
     | 
    
         
            -
                end
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,202 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            # rubocop:disable Metrics/ModuleLength
         
     | 
| 
       4 
     | 
    
         
            -
            module RuboCop
         
     | 
| 
       5 
     | 
    
         
            -
              module AST
         
     | 
| 
       6 
     | 
    
         
            -
                # Provides methods for traversing an AST.
         
     | 
| 
       7 
     | 
    
         
            -
                # Does not transform an AST; for that, use Parser::AST::Processor.
         
     | 
| 
       8 
     | 
    
         
            -
                # Override methods to perform custom processing. Remember to call `super`
         
     | 
| 
       9 
     | 
    
         
            -
                # if you want to recursively process descendant nodes.
         
     | 
| 
       10 
     | 
    
         
            -
                module Traversal
         
     | 
| 
       11 
     | 
    
         
            -
                  def walk(node)
         
     | 
| 
       12 
     | 
    
         
            -
                    return if node.nil?
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                    send(:"on_#{node.type}", node)
         
     | 
| 
       15 
     | 
    
         
            -
                    nil
         
     | 
| 
       16 
     | 
    
         
            -
                  end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                  NO_CHILD_NODES    = %i[true false nil int float complex
         
     | 
| 
       19 
     | 
    
         
            -
                                         rational str sym regopt self lvar
         
     | 
| 
       20 
     | 
    
         
            -
                                         ivar cvar gvar nth_ref back_ref cbase
         
     | 
| 
       21 
     | 
    
         
            -
                                         arg restarg blockarg shadowarg
         
     | 
| 
       22 
     | 
    
         
            -
                                         kwrestarg zsuper lambda redo retry
         
     | 
| 
       23 
     | 
    
         
            -
                                         forward_args forwarded_args
         
     | 
| 
       24 
     | 
    
         
            -
                                         match_var match_nil_pattern empty_else].freeze
         
     | 
| 
       25 
     | 
    
         
            -
                  ONE_CHILD_NODE    = %i[splat kwsplat block_pass not break next
         
     | 
| 
       26 
     | 
    
         
            -
                                         preexe postexe match_current_line defined?
         
     | 
| 
       27 
     | 
    
         
            -
                                         arg_expr pin match_rest if_guard unless_guard
         
     | 
| 
       28 
     | 
    
         
            -
                                         match_with_trailing_comma].freeze
         
     | 
| 
       29 
     | 
    
         
            -
                  MANY_CHILD_NODES  = %i[dstr dsym xstr regexp array hash pair
         
     | 
| 
       30 
     | 
    
         
            -
                                         mlhs masgn or_asgn and_asgn
         
     | 
| 
       31 
     | 
    
         
            -
                                         undef alias args super yield or and
         
     | 
| 
       32 
     | 
    
         
            -
                                         while_post until_post iflipflop eflipflop
         
     | 
| 
       33 
     | 
    
         
            -
                                         match_with_lvasgn begin kwbegin return
         
     | 
| 
       34 
     | 
    
         
            -
                                         in_match match_alt
         
     | 
| 
       35 
     | 
    
         
            -
                                         match_as array_pattern array_pattern_with_tail
         
     | 
| 
       36 
     | 
    
         
            -
                                         hash_pattern const_pattern].freeze
         
     | 
| 
       37 
     | 
    
         
            -
                  SECOND_CHILD_ONLY = %i[lvasgn ivasgn cvasgn gvasgn optarg kwarg
         
     | 
| 
       38 
     | 
    
         
            -
                                         kwoptarg].freeze
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                  NO_CHILD_NODES.each do |type|
         
     | 
| 
       41 
     | 
    
         
            -
                    module_eval("def on_#{type}(node); end", __FILE__, __LINE__)
         
     | 
| 
       42 
     | 
    
         
            -
                  end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                  ONE_CHILD_NODE.each do |type|
         
     | 
| 
       45 
     | 
    
         
            -
                    module_eval(<<~RUBY, __FILE__, __LINE__ + 1)
         
     | 
| 
       46 
     | 
    
         
            -
                      def on_#{type}(node)
         
     | 
| 
       47 
     | 
    
         
            -
                        if (child = node.children[0])
         
     | 
| 
       48 
     | 
    
         
            -
                          send(:"on_\#{child.type}", child)
         
     | 
| 
       49 
     | 
    
         
            -
                        end
         
     | 
| 
       50 
     | 
    
         
            -
                      end
         
     | 
| 
       51 
     | 
    
         
            -
                    RUBY
         
     | 
| 
       52 
     | 
    
         
            -
                  end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                  MANY_CHILD_NODES.each do |type|
         
     | 
| 
       55 
     | 
    
         
            -
                    module_eval(<<~RUBY, __FILE__, __LINE__ + 1)
         
     | 
| 
       56 
     | 
    
         
            -
                      def on_#{type}(node)
         
     | 
| 
       57 
     | 
    
         
            -
                        node.children.each { |child| send(:"on_\#{child.type}", child) }
         
     | 
| 
       58 
     | 
    
         
            -
                        nil
         
     | 
| 
       59 
     | 
    
         
            -
                      end
         
     | 
| 
       60 
     | 
    
         
            -
                    RUBY
         
     | 
| 
       61 
     | 
    
         
            -
                  end
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
                  SECOND_CHILD_ONLY.each do |type|
         
     | 
| 
       64 
     | 
    
         
            -
                    # Guard clause is for nodes nested within mlhs
         
     | 
| 
       65 
     | 
    
         
            -
                    module_eval(<<~RUBY, __FILE__, __LINE__ + 1)
         
     | 
| 
       66 
     | 
    
         
            -
                      def on_#{type}(node)
         
     | 
| 
       67 
     | 
    
         
            -
                        if (child = node.children[1])
         
     | 
| 
       68 
     | 
    
         
            -
                          send(:"on_\#{child.type}", child)
         
     | 
| 
       69 
     | 
    
         
            -
                        end
         
     | 
| 
       70 
     | 
    
         
            -
                      end
         
     | 
| 
       71 
     | 
    
         
            -
                    RUBY
         
     | 
| 
       72 
     | 
    
         
            -
                  end
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                  def on_const(node)
         
     | 
| 
       75 
     | 
    
         
            -
                    return unless (child = node.children[0])
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       78 
     | 
    
         
            -
                  end
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
                  def on_casgn(node)
         
     | 
| 
       81 
     | 
    
         
            -
                    children = node.children
         
     | 
| 
       82 
     | 
    
         
            -
                    if (child = children[0]) # always const???
         
     | 
| 
       83 
     | 
    
         
            -
                      send(:"on_#{child.type}", child)
         
     | 
| 
       84 
     | 
    
         
            -
                    end
         
     | 
| 
       85 
     | 
    
         
            -
                    return unless (child = children[2])
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       88 
     | 
    
         
            -
                  end
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
                  def on_class(node)
         
     | 
| 
       91 
     | 
    
         
            -
                    children = node.children
         
     | 
| 
       92 
     | 
    
         
            -
                    child = children[0] # always const???
         
     | 
| 
       93 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       94 
     | 
    
         
            -
                    if (child = children[1])
         
     | 
| 
       95 
     | 
    
         
            -
                      send(:"on_#{child.type}", child)
         
     | 
| 
       96 
     | 
    
         
            -
                    end
         
     | 
| 
       97 
     | 
    
         
            -
                    return unless (child = children[2])
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       100 
     | 
    
         
            -
                  end
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
                  def on_def(node)
         
     | 
| 
       103 
     | 
    
         
            -
                    children = node.children
         
     | 
| 
       104 
     | 
    
         
            -
                    on_args(children[1])
         
     | 
| 
       105 
     | 
    
         
            -
                    return unless (child = children[2])
         
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       108 
     | 
    
         
            -
                  end
         
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
                  def on_send(node)
         
     | 
| 
       111 
     | 
    
         
            -
                    node.children.each_with_index do |child, i|
         
     | 
| 
       112 
     | 
    
         
            -
                      next if i == 1
         
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
                      send(:"on_#{child.type}", child) if child
         
     | 
| 
       115 
     | 
    
         
            -
                    end
         
     | 
| 
       116 
     | 
    
         
            -
                    nil
         
     | 
| 
       117 
     | 
    
         
            -
                  end
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
                  alias on_csend on_send
         
     | 
| 
       120 
     | 
    
         
            -
             
     | 
| 
       121 
     | 
    
         
            -
                  def on_op_asgn(node)
         
     | 
| 
       122 
     | 
    
         
            -
                    children = node.children
         
     | 
| 
       123 
     | 
    
         
            -
                    child = children[0]
         
     | 
| 
       124 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       125 
     | 
    
         
            -
                    child = children[2]
         
     | 
| 
       126 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       127 
     | 
    
         
            -
                  end
         
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
     | 
    
         
            -
                  def on_defs(node)
         
     | 
| 
       130 
     | 
    
         
            -
                    children = node.children
         
     | 
| 
       131 
     | 
    
         
            -
                    child = children[0]
         
     | 
| 
       132 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       133 
     | 
    
         
            -
                    on_args(children[2])
         
     | 
| 
       134 
     | 
    
         
            -
                    return unless (child = children[3])
         
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       137 
     | 
    
         
            -
                  end
         
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
                  def on_if(node)
         
     | 
| 
       140 
     | 
    
         
            -
                    children = node.children
         
     | 
| 
       141 
     | 
    
         
            -
                    child = children[0]
         
     | 
| 
       142 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       143 
     | 
    
         
            -
                    if (child = children[1])
         
     | 
| 
       144 
     | 
    
         
            -
                      send(:"on_#{child.type}", child)
         
     | 
| 
       145 
     | 
    
         
            -
                    end
         
     | 
| 
       146 
     | 
    
         
            -
                    return unless (child = children[2])
         
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
       148 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       149 
     | 
    
         
            -
                  end
         
     | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
       151 
     | 
    
         
            -
                  def on_while(node)
         
     | 
| 
       152 
     | 
    
         
            -
                    children = node.children
         
     | 
| 
       153 
     | 
    
         
            -
                    child = children[0]
         
     | 
| 
       154 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       155 
     | 
    
         
            -
                    return unless (child = children[1])
         
     | 
| 
       156 
     | 
    
         
            -
             
     | 
| 
       157 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       158 
     | 
    
         
            -
                  end
         
     | 
| 
       159 
     | 
    
         
            -
             
     | 
| 
       160 
     | 
    
         
            -
                  alias on_until  on_while
         
     | 
| 
       161 
     | 
    
         
            -
                  alias on_module on_while
         
     | 
| 
       162 
     | 
    
         
            -
                  alias on_sclass on_while
         
     | 
| 
       163 
     | 
    
         
            -
             
     | 
| 
       164 
     | 
    
         
            -
                  def on_block(node)
         
     | 
| 
       165 
     | 
    
         
            -
                    children = node.children
         
     | 
| 
       166 
     | 
    
         
            -
                    child = children[0]
         
     | 
| 
       167 
     | 
    
         
            -
                    send(:"on_#{child.type}", child) # can be send, zsuper...
         
     | 
| 
       168 
     | 
    
         
            -
                    on_args(children[1])
         
     | 
| 
       169 
     | 
    
         
            -
                    return unless (child = children[2])
         
     | 
| 
       170 
     | 
    
         
            -
             
     | 
| 
       171 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       172 
     | 
    
         
            -
                  end
         
     | 
| 
       173 
     | 
    
         
            -
             
     | 
| 
       174 
     | 
    
         
            -
                  def on_case(node)
         
     | 
| 
       175 
     | 
    
         
            -
                    node.children.each do |child|
         
     | 
| 
       176 
     | 
    
         
            -
                      send(:"on_#{child.type}", child) if child
         
     | 
| 
       177 
     | 
    
         
            -
                    end
         
     | 
| 
       178 
     | 
    
         
            -
                    nil
         
     | 
| 
       179 
     | 
    
         
            -
                  end
         
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
       181 
     | 
    
         
            -
                  alias on_rescue     on_case
         
     | 
| 
       182 
     | 
    
         
            -
                  alias on_resbody    on_case
         
     | 
| 
       183 
     | 
    
         
            -
                  alias on_ensure     on_case
         
     | 
| 
       184 
     | 
    
         
            -
                  alias on_for        on_case
         
     | 
| 
       185 
     | 
    
         
            -
                  alias on_when       on_case
         
     | 
| 
       186 
     | 
    
         
            -
                  alias on_case_match on_case
         
     | 
| 
       187 
     | 
    
         
            -
                  alias on_in_pattern on_case
         
     | 
| 
       188 
     | 
    
         
            -
                  alias on_irange     on_case
         
     | 
| 
       189 
     | 
    
         
            -
                  alias on_erange     on_case
         
     | 
| 
       190 
     | 
    
         
            -
             
     | 
| 
       191 
     | 
    
         
            -
                  def on_numblock(node)
         
     | 
| 
       192 
     | 
    
         
            -
                    children = node.children
         
     | 
| 
       193 
     | 
    
         
            -
                    child = children[0]
         
     | 
| 
       194 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       195 
     | 
    
         
            -
                    return unless (child = children[2])
         
     | 
| 
       196 
     | 
    
         
            -
             
     | 
| 
       197 
     | 
    
         
            -
                    send(:"on_#{child.type}", child)
         
     | 
| 
       198 
     | 
    
         
            -
                  end
         
     | 
| 
       199 
     | 
    
         
            -
                end
         
     | 
| 
       200 
     | 
    
         
            -
              end
         
     | 
| 
       201 
     | 
    
         
            -
            end
         
     | 
| 
       202 
     | 
    
         
            -
            # rubocop:enable Metrics/ModuleLength
         
     |