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
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 92b169f3f7a5c04a2ce3b9b674328a49e078a8f19b5560e5135eee1ddb4f0428
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 6057deda8dd47bbf92038a03ce0bd4d35139c220f5fede6049f5e3da9fcc7ad0
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 073154f4f62eed603c4b4d947b5dcdc308d1f0aebcffe11daad2b0d21820272f9d13d89e40403292a5497d6d9722e405f9f6cb16071c69214fc10a074eef5254
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 69c0e58d557d71c898cf6c43bed3fb6a5df83650e239e470bf0bb56cf4a2722895f2c8b9fb36775e752a2dafc80893f719166e204a4d5f136c82c0f6a03bc321
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -53,7 +53,7 @@ haven't reached version 1.0 yet). To prevent an unwanted RuboCop update you 
     | 
|
| 
       53 
53 
     | 
    
         
             
            might want to use a conservative version lock in your `Gemfile`:
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
55 
     | 
    
         
             
            ```rb
         
     | 
| 
       56 
     | 
    
         
            -
            gem 'rubocop', '~> 0. 
     | 
| 
      
 56 
     | 
    
         
            +
            gem 'rubocop', '~> 0.84.0', require: false
         
     | 
| 
       57 
57 
     | 
    
         
             
            ```
         
     | 
| 
       58 
58 
     | 
    
         | 
| 
       59 
59 
     | 
    
         
             
            ## Quickstart
         
     | 
| 
         @@ -132,7 +132,7 @@ If you're working in a company that's making significant use of RuboCop we'd app 
     | 
|
| 
       132 
132 
     | 
    
         
             
            to become a RuboCop sponsor.
         
     | 
| 
       133 
133 
     | 
    
         | 
| 
       134 
134 
     | 
    
         
             
            You can support the development of RuboCop via
         
     | 
| 
       135 
     | 
    
         
            -
            [ 
     | 
| 
      
 135 
     | 
    
         
            +
            [GitHub Sponsors](https://github.com/sponsors/bbatsov),
         
     | 
| 
       136 
136 
     | 
    
         
             
            [Patreon](https://www.patreon.com/bbatsov),
         
     | 
| 
       137 
137 
     | 
    
         
             
            [PayPal](https://paypal.me/bbatsov)
         
     | 
| 
       138 
138 
     | 
    
         
             
            and [Open Collective](https://opencollective.com/rubocop).
         
     | 
    
        data/config/default.yml
    CHANGED
    
    | 
         @@ -468,6 +468,13 @@ Layout/EmptyLinesAroundAttributeAccessor: 
     | 
|
| 
       468 
468 
     | 
    
         
             
              StyleGuide: '#empty-lines-around-attribute-accessor'
         
     | 
| 
       469 
469 
     | 
    
         
             
              Enabled: pending
         
     | 
| 
       470 
470 
     | 
    
         
             
              VersionAdded: '0.83'
         
     | 
| 
      
 471 
     | 
    
         
            +
              VersionChanged: '0.84'
         
     | 
| 
      
 472 
     | 
    
         
            +
              AllowAliasSyntax: true
         
     | 
| 
      
 473 
     | 
    
         
            +
              AllowedMethods:
         
     | 
| 
      
 474 
     | 
    
         
            +
                - alias_method
         
     | 
| 
      
 475 
     | 
    
         
            +
                - public
         
     | 
| 
      
 476 
     | 
    
         
            +
                - protected
         
     | 
| 
      
 477 
     | 
    
         
            +
                - private
         
     | 
| 
       471 
478 
     | 
    
         | 
| 
       472 
479 
     | 
    
         
             
            Layout/EmptyLinesAroundBeginBody:
         
     | 
| 
       473 
480 
     | 
    
         
             
              Description: "Keeps track of empty lines around begin-end bodies."
         
     | 
| 
         @@ -861,9 +868,9 @@ Layout/LineLength: 
     | 
|
| 
       861 
868 
     | 
    
         
             
              StyleGuide: '#80-character-limits'
         
     | 
| 
       862 
869 
     | 
    
         
             
              Enabled: true
         
     | 
| 
       863 
870 
     | 
    
         
             
              VersionAdded: '0.25'
         
     | 
| 
       864 
     | 
    
         
            -
              VersionChanged: '0. 
     | 
| 
      
 871 
     | 
    
         
            +
              VersionChanged: '0.84'
         
     | 
| 
       865 
872 
     | 
    
         
             
              AutoCorrect: false
         
     | 
| 
       866 
     | 
    
         
            -
              Max:  
     | 
| 
      
 873 
     | 
    
         
            +
              Max: 120
         
     | 
| 
       867 
874 
     | 
    
         
             
              # To make it possible to copy or click on URIs in the code, we allow lines
         
     | 
| 
       868 
875 
     | 
    
         
             
              # containing a URI to be longer than Max.
         
     | 
| 
       869 
876 
     | 
    
         
             
              AllowHeredoc: true
         
     | 
| 
         @@ -1370,6 +1377,11 @@ Lint/DeprecatedClassMethods: 
     | 
|
| 
       1370 
1377 
     | 
    
         
             
              Enabled: true
         
     | 
| 
       1371 
1378 
     | 
    
         
             
              VersionAdded: '0.19'
         
     | 
| 
       1372 
1379 
     | 
    
         | 
| 
      
 1380 
     | 
    
         
            +
            Lint/DeprecatedOpenSSLConstant:
         
     | 
| 
      
 1381 
     | 
    
         
            +
              Description: "Don't use algorithm constants for `OpenSSL::Cipher` and `OpenSSL::Digest`."
         
     | 
| 
      
 1382 
     | 
    
         
            +
              Enabled: pending
         
     | 
| 
      
 1383 
     | 
    
         
            +
              VersionAdded: '0.84'
         
     | 
| 
      
 1384 
     | 
    
         
            +
             
     | 
| 
       1373 
1385 
     | 
    
         
             
            Lint/DisjunctiveAssignmentInConstructor:
         
     | 
| 
       1374 
1386 
     | 
    
         
             
              Description: 'In constructor, plain assignment is preferred over disjunctive.'
         
     | 
| 
       1375 
1387 
     | 
    
         
             
              Enabled: true
         
     | 
| 
         @@ -2274,7 +2286,7 @@ Style/AndOr: 
     | 
|
| 
       2274 
2286 
     | 
    
         
             
              VersionChanged: '0.25'
         
     | 
| 
       2275 
2287 
     | 
    
         
             
              # Whether `and` and `or` are banned only in conditionals (conditionals)
         
     | 
| 
       2276 
2288 
     | 
    
         
             
              # or completely (always).
         
     | 
| 
       2277 
     | 
    
         
            -
              EnforcedStyle:  
     | 
| 
      
 2289 
     | 
    
         
            +
              EnforcedStyle: conditionals
         
     | 
| 
       2278 
2290 
     | 
    
         
             
              SupportedStyles:
         
     | 
| 
       2279 
2291 
     | 
    
         
             
                - always
         
     | 
| 
       2280 
2292 
     | 
    
         
             
                - conditionals
         
     | 
| 
         @@ -2694,6 +2706,11 @@ Style/DoubleNegation: 
     | 
|
| 
       2694 
2706 
     | 
    
         
             
              StyleGuide: '#no-bang-bang'
         
     | 
| 
       2695 
2707 
     | 
    
         
             
              Enabled: true
         
     | 
| 
       2696 
2708 
     | 
    
         
             
              VersionAdded: '0.19'
         
     | 
| 
      
 2709 
     | 
    
         
            +
              VersionChanged: '0.84'
         
     | 
| 
      
 2710 
     | 
    
         
            +
              EnforcedStyle: allowed_in_returns
         
     | 
| 
      
 2711 
     | 
    
         
            +
              SupportedStyles:
         
     | 
| 
      
 2712 
     | 
    
         
            +
                - allowed_in_returns
         
     | 
| 
      
 2713 
     | 
    
         
            +
                - forbidden
         
     | 
| 
       2697 
2714 
     | 
    
         | 
| 
       2698 
2715 
     | 
    
         
             
            Style/EachForSimpleLoop:
         
     | 
| 
       2699 
2716 
     | 
    
         
             
              Description: >-
         
     | 
    
        data/lib/rubocop.rb
    CHANGED
    
    | 
         @@ -1,73 +1,23 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            require 'parser'
         
     | 
| 
       4 
3 
     | 
    
         
             
            require 'rainbow'
         
     | 
| 
       5 
4 
     | 
    
         | 
| 
       6 
5 
     | 
    
         
             
            require 'English'
         
     | 
| 
       7 
6 
     | 
    
         
             
            require 'set'
         
     | 
| 
       8 
     | 
    
         
            -
            require 'forwardable'
         
     | 
| 
       9 
7 
     | 
    
         
             
            require 'unicode/display_width/no_string_ext'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'rubocop-ast'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require_relative 'rubocop/ast_aliases'
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            require_relative 'rubocop/version'
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            require_relative 'rubocop/core_ext/string'
         
     | 
| 
      
 14 
     | 
    
         
            +
            require_relative 'rubocop/ext/processed_source'
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       14 
16 
     | 
    
         
             
            require_relative 'rubocop/path_util'
         
     | 
| 
       15 
17 
     | 
    
         
             
            require_relative 'rubocop/file_finder'
         
     | 
| 
       16 
18 
     | 
    
         
             
            require_relative 'rubocop/platform'
         
     | 
| 
       17 
19 
     | 
    
         
             
            require_relative 'rubocop/name_similarity'
         
     | 
| 
       18 
     | 
    
         
            -
            require_relative 'rubocop/node_pattern'
         
     | 
| 
       19 
20 
     | 
    
         
             
            require_relative 'rubocop/string_interpreter'
         
     | 
| 
       20 
     | 
    
         
            -
            require_relative 'rubocop/ast/sexp'
         
     | 
| 
       21 
     | 
    
         
            -
            require_relative 'rubocop/ast/node'
         
     | 
| 
       22 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/mixin/method_identifier_predicates'
         
     | 
| 
       23 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/mixin/binary_operator_node'
         
     | 
| 
       24 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/mixin/collection_node'
         
     | 
| 
       25 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/mixin/conditional_node'
         
     | 
| 
       26 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/mixin/hash_element_node'
         
     | 
| 
       27 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/mixin/method_dispatch_node'
         
     | 
| 
       28 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/mixin/modifier_node'
         
     | 
| 
       29 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/mixin/numeric_node'
         
     | 
| 
       30 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/mixin/parameterized_node'
         
     | 
| 
       31 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/mixin/predicate_operator_node'
         
     | 
| 
       32 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/mixin/basic_literal_node'
         
     | 
| 
       33 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/alias_node'
         
     | 
| 
       34 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/and_node'
         
     | 
| 
       35 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/args_node'
         
     | 
| 
       36 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/array_node'
         
     | 
| 
       37 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/block_node'
         
     | 
| 
       38 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/break_node'
         
     | 
| 
       39 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/case_match_node'
         
     | 
| 
       40 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/case_node'
         
     | 
| 
       41 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/class_node'
         
     | 
| 
       42 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/def_node'
         
     | 
| 
       43 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/defined_node'
         
     | 
| 
       44 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/ensure_node'
         
     | 
| 
       45 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/for_node'
         
     | 
| 
       46 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/forward_args_node'
         
     | 
| 
       47 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/float_node'
         
     | 
| 
       48 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/hash_node'
         
     | 
| 
       49 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/if_node'
         
     | 
| 
       50 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/int_node'
         
     | 
| 
       51 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/keyword_splat_node'
         
     | 
| 
       52 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/module_node'
         
     | 
| 
       53 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/or_node'
         
     | 
| 
       54 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/pair_node'
         
     | 
| 
       55 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/range_node'
         
     | 
| 
       56 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/regexp_node'
         
     | 
| 
       57 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/resbody_node'
         
     | 
| 
       58 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/retry_node'
         
     | 
| 
       59 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/return_node'
         
     | 
| 
       60 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/self_class_node'
         
     | 
| 
       61 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/send_node'
         
     | 
| 
       62 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/str_node'
         
     | 
| 
       63 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/super_node'
         
     | 
| 
       64 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/symbol_node'
         
     | 
| 
       65 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/until_node'
         
     | 
| 
       66 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/when_node'
         
     | 
| 
       67 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/while_node'
         
     | 
| 
       68 
     | 
    
         
            -
            require_relative 'rubocop/ast/node/yield_node'
         
     | 
| 
       69 
     | 
    
         
            -
            require_relative 'rubocop/ast/builder'
         
     | 
| 
       70 
     | 
    
         
            -
            require_relative 'rubocop/ast/traversal'
         
     | 
| 
       71 
21 
     | 
    
         
             
            require_relative 'rubocop/error'
         
     | 
| 
       72 
22 
     | 
    
         
             
            require_relative 'rubocop/warning'
         
     | 
| 
       73 
23 
     | 
    
         | 
| 
         @@ -216,7 +166,7 @@ require_relative 'rubocop/cop/layout/empty_lines_around_attribute_accessor' 
     | 
|
| 
       216 
166 
     | 
    
         
             
            require_relative 'rubocop/cop/layout/empty_lines_around_begin_body'
         
     | 
| 
       217 
167 
     | 
    
         
             
            require_relative 'rubocop/cop/layout/empty_lines_around_block_body'
         
     | 
| 
       218 
168 
     | 
    
         
             
            require_relative 'rubocop/cop/layout/empty_lines_around_class_body'
         
     | 
| 
       219 
     | 
    
         
            -
            require_relative 'rubocop/cop/layout/empty_lines_around_exception_handling_keywords' 
     | 
| 
      
 169 
     | 
    
         
            +
            require_relative 'rubocop/cop/layout/empty_lines_around_exception_handling_keywords'
         
     | 
| 
       220 
170 
     | 
    
         
             
            require_relative 'rubocop/cop/layout/empty_lines_around_method_body'
         
     | 
| 
       221 
171 
     | 
    
         
             
            require_relative 'rubocop/cop/layout/empty_lines_around_module_body'
         
     | 
| 
       222 
172 
     | 
    
         
             
            require_relative 'rubocop/cop/layout/empty_lines'
         
     | 
| 
         @@ -291,6 +241,7 @@ require_relative 'rubocop/cop/lint/boolean_symbol' 
     | 
|
| 
       291 
241 
     | 
    
         
             
            require_relative 'rubocop/cop/lint/circular_argument_reference'
         
     | 
| 
       292 
242 
     | 
    
         
             
            require_relative 'rubocop/cop/lint/debugger'
         
     | 
| 
       293 
243 
     | 
    
         
             
            require_relative 'rubocop/cop/lint/deprecated_class_methods'
         
     | 
| 
      
 244 
     | 
    
         
            +
            require_relative 'rubocop/cop/lint/deprecated_open_ssl_constant'
         
     | 
| 
       294 
245 
     | 
    
         
             
            require_relative 'rubocop/cop/lint/disjunctive_assignment_in_constructor'
         
     | 
| 
       295 
246 
     | 
    
         
             
            require_relative 'rubocop/cop/lint/duplicate_case_condition'
         
     | 
| 
       296 
247 
     | 
    
         
             
            require_relative 'rubocop/cop/lint/duplicate_hash_key'
         
     | 
| 
         @@ -468,11 +419,9 @@ require_relative 'rubocop/cop/style/lambda' 
     | 
|
| 
       468 
419 
     | 
    
         
             
            require_relative 'rubocop/cop/style/lambda_call'
         
     | 
| 
       469 
420 
     | 
    
         
             
            require_relative 'rubocop/cop/style/line_end_concatenation'
         
     | 
| 
       470 
421 
     | 
    
         
             
            require_relative 'rubocop/cop/style/method_call_without_args_parentheses'
         
     | 
| 
       471 
     | 
    
         
            -
            # rubocop:disable Layout/LineLength
         
     | 
| 
       472 
422 
     | 
    
         
             
            require_relative 'rubocop/cop/style/method_call_with_args_parentheses'
         
     | 
| 
       473 
423 
     | 
    
         
             
            require_relative 'rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses'
         
     | 
| 
       474 
424 
     | 
    
         
             
            require_relative 'rubocop/cop/style/method_call_with_args_parentheses/require_parentheses'
         
     | 
| 
       475 
     | 
    
         
            -
            # rubocop:enable Layout/LineLength
         
     | 
| 
       476 
425 
     | 
    
         
             
            require_relative 'rubocop/cop/style/method_called_on_do_end_block'
         
     | 
| 
       477 
426 
     | 
    
         
             
            require_relative 'rubocop/cop/style/method_def_parentheses'
         
     | 
| 
       478 
427 
     | 
    
         
             
            require_relative 'rubocop/cop/style/method_missing_super'
         
     | 
| 
         @@ -614,10 +563,8 @@ require_relative 'rubocop/config_obsoletion' 
     | 
|
| 
       614 
563 
     | 
    
         
             
            require_relative 'rubocop/config_store'
         
     | 
| 
       615 
564 
     | 
    
         
             
            require_relative 'rubocop/config_validator'
         
     | 
| 
       616 
565 
     | 
    
         
             
            require_relative 'rubocop/target_finder'
         
     | 
| 
       617 
     | 
    
         
            -
            require_relative 'rubocop/token'
         
     | 
| 
       618 
566 
     | 
    
         
             
            require_relative 'rubocop/comment_config'
         
     | 
| 
       619 
567 
     | 
    
         
             
            require_relative 'rubocop/magic_comment'
         
     | 
| 
       620 
     | 
    
         
            -
            require_relative 'rubocop/processed_source'
         
     | 
| 
       621 
568 
     | 
    
         
             
            require_relative 'rubocop/result_cache'
         
     | 
| 
       622 
569 
     | 
    
         
             
            require_relative 'rubocop/runner'
         
     | 
| 
       623 
570 
     | 
    
         
             
            require_relative 'rubocop/cli'
         
     | 
| 
         @@ -42,18 +42,14 @@ module RuboCop 
     | 
|
| 
       42 
42 
     | 
    
         
             
                                        selected_cops_of_department(registry, department)
         
     | 
| 
       43 
43 
     | 
    
         
             
                                      end
         
     | 
| 
       44 
44 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
                      if show_all
         
     | 
| 
       46 
     | 
    
         
            -
                        puts "# Department '#{department}' (#{selected_cops.length}):"
         
     | 
| 
       47 
     | 
    
         
            -
                      end
         
     | 
| 
      
 45 
     | 
    
         
            +
                      puts "# Department '#{department}' (#{selected_cops.length}):" if show_all
         
     | 
| 
       48 
46 
     | 
    
         | 
| 
       49 
47 
     | 
    
         
             
                      print_cop_details(selected_cops)
         
     | 
| 
       50 
48 
     | 
    
         
             
                    end
         
     | 
| 
       51 
49 
     | 
    
         | 
| 
       52 
50 
     | 
    
         
             
                    def print_cop_details(cops)
         
     | 
| 
       53 
51 
     | 
    
         
             
                      cops.each do |cop|
         
     | 
| 
       54 
     | 
    
         
            -
                        if cop.new(@config).support_autocorrect?
         
     | 
| 
       55 
     | 
    
         
            -
                          puts '# Supports --auto-correct'
         
     | 
| 
       56 
     | 
    
         
            -
                        end
         
     | 
| 
      
 52 
     | 
    
         
            +
                        puts '# Supports --auto-correct' if cop.new(@config).support_autocorrect?
         
     | 
| 
       57 
53 
     | 
    
         
             
                        puts "#{cop.cop_name}:"
         
     | 
| 
       58 
54 
     | 
    
         
             
                        puts config_lines(cop)
         
     | 
| 
       59 
55 
     | 
    
         
             
                        puts
         
     | 
    
        data/lib/rubocop/config.rb
    CHANGED
    
    | 
         @@ -86,9 +86,7 @@ module RuboCop 
     | 
|
| 
       86 
86 
     | 
    
         | 
| 
       87 
87 
     | 
    
         
             
                  excludes = for_all_cops['Exclude'] ||= []
         
     | 
| 
       88 
88 
     | 
    
         
             
                  highest_config.for_all_cops['Exclude'].each do |path|
         
     | 
| 
       89 
     | 
    
         
            -
                    unless path.is_a?(Regexp) || absolute?(path)
         
     | 
| 
       90 
     | 
    
         
            -
                      path = File.join(File.dirname(highest_config.loaded_path), path)
         
     | 
| 
       91 
     | 
    
         
            -
                    end
         
     | 
| 
      
 89 
     | 
    
         
            +
                    path = File.join(File.dirname(highest_config.loaded_path), path) unless path.is_a?(Regexp) || absolute?(path)
         
     | 
| 
       92 
90 
     | 
    
         
             
                    excludes << path unless excludes.include?(path)
         
     | 
| 
       93 
91 
     | 
    
         
             
                  end
         
     | 
| 
       94 
92 
     | 
    
         
             
                end
         
     | 
| 
         @@ -95,9 +95,7 @@ module RuboCop 
     | 
|
| 
       95 
95 
     | 
    
         
             
                    end
         
     | 
| 
       96 
96 
     | 
    
         | 
| 
       97 
97 
     | 
    
         
             
                    merge_with_default(config, config_file).tap do |merged_config|
         
     | 
| 
       98 
     | 
    
         
            -
                      unless possible_new_cops?(config)
         
     | 
| 
       99 
     | 
    
         
            -
                        warn_on_pending_cops(merged_config.pending_cops)
         
     | 
| 
       100 
     | 
    
         
            -
                      end
         
     | 
| 
      
 98 
     | 
    
         
            +
                      warn_on_pending_cops(merged_config.pending_cops) unless possible_new_cops?(config)
         
     | 
| 
       101 
99 
     | 
    
         
             
                    end
         
     | 
| 
       102 
100 
     | 
    
         
             
                  end
         
     | 
| 
       103 
101 
     | 
    
         | 
| 
         @@ -207,9 +205,7 @@ module RuboCop 
     | 
|
| 
       207 
205 
     | 
    
         
             
                  def write_config_file(file_name, file_string, rubocop_yml_contents)
         
     | 
| 
       208 
206 
     | 
    
         
             
                    File.open(file_name, 'w') do |f|
         
     | 
| 
       209 
207 
     | 
    
         
             
                      f.write "inherit_from:#{file_string}\n"
         
     | 
| 
       210 
     | 
    
         
            -
                      if /\S/.match?(rubocop_yml_contents)
         
     | 
| 
       211 
     | 
    
         
            -
                        f.write "\n#{rubocop_yml_contents}"
         
     | 
| 
       212 
     | 
    
         
            -
                      end
         
     | 
| 
      
 208 
     | 
    
         
            +
                      f.write "\n#{rubocop_yml_contents}" if /\S/.match?(rubocop_yml_contents)
         
     | 
| 
       213 
209 
     | 
    
         
             
                    end
         
     | 
| 
       214 
210 
     | 
    
         
             
                  end
         
     | 
| 
       215 
211 
     | 
    
         | 
| 
         @@ -227,9 +223,7 @@ module RuboCop 
     | 
|
| 
       227 
223 
     | 
    
         | 
| 
       228 
224 
     | 
    
         
             
                    puts "configuration from #{absolute_path}" if debug?
         
     | 
| 
       229 
225 
     | 
    
         | 
| 
       230 
     | 
    
         
            -
                    unless hash.is_a?(Hash)
         
     | 
| 
       231 
     | 
    
         
            -
                      raise(TypeError, "Malformed configuration in #{absolute_path}")
         
     | 
| 
       232 
     | 
    
         
            -
                    end
         
     | 
| 
      
 226 
     | 
    
         
            +
                    raise(TypeError, "Malformed configuration in #{absolute_path}") unless hash.is_a?(Hash)
         
     | 
| 
       233 
227 
     | 
    
         | 
| 
       234 
228 
     | 
    
         
             
                    hash
         
     | 
| 
       235 
229 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -71,9 +71,7 @@ module RuboCop 
     | 
|
| 
       71 
71 
     | 
    
         
             
                    end
         
     | 
| 
       72 
72 
     | 
    
         
             
                  end
         
     | 
| 
       73 
73 
     | 
    
         | 
| 
       74 
     | 
    
         
            -
                  if disabled_by_default
         
     | 
| 
       75 
     | 
    
         
            -
                    config = handle_disabled_by_default(config, default_configuration)
         
     | 
| 
       76 
     | 
    
         
            -
                  end
         
     | 
| 
      
 74 
     | 
    
         
            +
                  config = handle_disabled_by_default(config, default_configuration) if disabled_by_default
         
     | 
| 
       77 
75 
     | 
    
         | 
| 
       78 
76 
     | 
    
         
             
                  opts = { inherit_mode: config['inherit_mode'] || {},
         
     | 
| 
       79 
77 
     | 
    
         
             
                           unset_nil: unset_nil }
         
     | 
| 
         @@ -117,9 +115,7 @@ module RuboCop 
     | 
|
| 
       117 
115 
     | 
    
         
             
                    # internal setting that's not documented in the manual. It will cause a
         
     | 
| 
       118 
116 
     | 
    
         
             
                    # cop to be enabled later, when logic surrounding enabled/disabled it
         
     | 
| 
       119 
117 
     | 
    
         
             
                    # run, even though its department is disabled.
         
     | 
| 
       120 
     | 
    
         
            -
                    if derived_hash[key]['Enabled']
         
     | 
| 
       121 
     | 
    
         
            -
                      derived_hash[key]['Enabled'] = 'override_department'
         
     | 
| 
       122 
     | 
    
         
            -
                    end
         
     | 
| 
      
 118 
     | 
    
         
            +
                    derived_hash[key]['Enabled'] = 'override_department' if derived_hash[key]['Enabled']
         
     | 
| 
       123 
119 
     | 
    
         
             
                  end
         
     | 
| 
       124 
120 
     | 
    
         
             
                end
         
     | 
| 
       125 
121 
     | 
    
         | 
| 
         @@ -43,8 +43,7 @@ module RuboCop 
     | 
|
| 
       43 
43 
     | 
    
         
             
                  def disable_offense(node)
         
     | 
| 
       44 
44 
     | 
    
         
             
                    range = node.location.expression
         
     | 
| 
       45 
45 
     | 
    
         
             
                    eol_comment = " # rubocop:todo #{cop_name}"
         
     | 
| 
       46 
     | 
    
         
            -
                    needed_line_length = range. 
     | 
| 
       47 
     | 
    
         
            -
                                         (range.source_line + eol_comment).length
         
     | 
| 
      
 46 
     | 
    
         
            +
                    needed_line_length = (range.source_line + eol_comment).length
         
     | 
| 
       48 
47 
     | 
    
         
             
                    if needed_line_length <= max_line_length
         
     | 
| 
       49 
48 
     | 
    
         
             
                      disable_offense_at_end_of_line(range_of_first_line(range),
         
     | 
| 
       50 
49 
     | 
    
         
             
                                                     eol_comment)
         
     | 
| 
         @@ -85,9 +85,7 @@ module RuboCop 
     | 
|
| 
       85 
85 
     | 
    
         
             
                  def insert_before(node_or_range, content)
         
     | 
| 
       86 
86 
     | 
    
         
             
                    range = to_range(node_or_range)
         
     | 
| 
       87 
87 
     | 
    
         
             
                    # TODO: Fix Cops using bad ranges instead
         
     | 
| 
       88 
     | 
    
         
            -
                    if range.end_pos > @source_buffer.source.size
         
     | 
| 
       89 
     | 
    
         
            -
                      range = range.with(end_pos: @source_buffer.source.size)
         
     | 
| 
       90 
     | 
    
         
            -
                    end
         
     | 
| 
      
 88 
     | 
    
         
            +
                    range = range.with(end_pos: @source_buffer.source.size) if range.end_pos > @source_buffer.source.size
         
     | 
| 
       91 
89 
     | 
    
         | 
| 
       92 
90 
     | 
    
         
             
                    @source_rewriter.insert_before(range, content)
         
     | 
| 
       93 
91 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -48,9 +48,7 @@ module RuboCop 
     | 
|
| 
       48 
48 
     | 
    
         
             
                      return if taboo_ranges.any? { |t| within?(range, t) }
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
       50 
50 
     | 
    
         
             
                      if column_delta.positive?
         
     | 
| 
       51 
     | 
    
         
            -
                        unless range.resize(1).source == "\n"
         
     | 
| 
       52 
     | 
    
         
            -
                          corrector.insert_before(range, ' ' * column_delta)
         
     | 
| 
       53 
     | 
    
         
            -
                        end
         
     | 
| 
      
 51 
     | 
    
         
            +
                        corrector.insert_before(range, ' ' * column_delta) unless range.resize(1).source == "\n"
         
     | 
| 
       54 
52 
     | 
    
         
             
                      elsif /\A[ \t]+\z/.match?(range.source)
         
     | 
| 
       55 
53 
     | 
    
         
             
                        remove(range, corrector)
         
     | 
| 
       56 
54 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -92,9 +90,7 @@ module RuboCop 
     | 
|
| 
       92 
90 
     | 
    
         
             
                    end
         
     | 
| 
       93 
91 
     | 
    
         | 
| 
       94 
92 
     | 
    
         
             
                    def calculate_range(expr, line_begin_pos, column_delta)
         
     | 
| 
       95 
     | 
    
         
            -
                      if column_delta.positive?
         
     | 
| 
       96 
     | 
    
         
            -
                        return range_between(line_begin_pos, line_begin_pos)
         
     | 
| 
       97 
     | 
    
         
            -
                      end
         
     | 
| 
      
 93 
     | 
    
         
            +
                      return range_between(line_begin_pos, line_begin_pos) if column_delta.positive?
         
     | 
| 
       98 
94 
     | 
    
         | 
| 
       99 
95 
     | 
    
         
             
                      starts_with_space =
         
     | 
| 
       100 
96 
     | 
    
         
             
                        expr.source_buffer.source[line_begin_pos].start_with?(' ')
         
     | 
| 
         @@ -10,9 +10,7 @@ module RuboCop 
     | 
|
| 
       10 
10 
     | 
    
         
             
                        corrector.remove(node.loc.begin)
         
     | 
| 
       11 
11 
     | 
    
         
             
                        corrector.remove(node.loc.end)
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
                        if ternary_condition?(node) && next_char_is_question_mark?(node)
         
     | 
| 
       14 
     | 
    
         
            -
                          corrector.insert_after(node.loc.end, ' ')
         
     | 
| 
       15 
     | 
    
         
            -
                        end
         
     | 
| 
      
 13 
     | 
    
         
            +
                        corrector.insert_after(node.loc.end, ' ') if ternary_condition?(node) && next_char_is_question_mark?(node)
         
     | 
| 
       16 
14 
     | 
    
         
             
                      end
         
     | 
| 
       17 
15 
     | 
    
         
             
                    end
         
     | 
| 
       18 
16 
     | 
    
         | 
| 
         @@ -35,9 +35,7 @@ module RuboCop 
     | 
|
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                    def add_space(processed_source, corrector, left_token, right_token)
         
     | 
| 
       37 
37 
     | 
    
         
             
                      @processed_source = processed_source
         
     | 
| 
       38 
     | 
    
         
            -
                      unless left_token.space_after?
         
     | 
| 
       39 
     | 
    
         
            -
                        corrector.insert_after(left_token.pos, ' ')
         
     | 
| 
       40 
     | 
    
         
            -
                      end
         
     | 
| 
      
 38 
     | 
    
         
            +
                      corrector.insert_after(left_token.pos, ' ') unless left_token.space_after?
         
     | 
| 
       41 
39 
     | 
    
         
             
                      return if right_token.space_before?
         
     | 
| 
       42 
40 
     | 
    
         | 
| 
       43 
41 
     | 
    
         
             
                      corrector.insert_before(right_token.pos, ' ')
         
     | 
| 
         @@ -68,9 +68,7 @@ module RuboCop 
     | 
|
| 
       68 
68 
     | 
    
         
             
                          gem_name(current),
         
     | 
| 
       69 
69 
     | 
    
         
             
                          gem_name(previous)
         
     | 
| 
       70 
70 
     | 
    
         
             
                        )
         
     | 
| 
       71 
     | 
    
         
            -
                        unless get_dependency_name(previous) == get_dependency_name(current)
         
     | 
| 
       72 
     | 
    
         
            -
                          next
         
     | 
| 
       73 
     | 
    
         
            -
                        end
         
     | 
| 
      
 71 
     | 
    
         
            +
                        next unless get_dependency_name(previous) == get_dependency_name(current)
         
     | 
| 
       74 
72 
     | 
    
         | 
| 
       75 
73 
     | 
    
         
             
                        register_offense(previous, current)
         
     | 
| 
       76 
74 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -58,7 +58,7 @@ module RuboCop 
     | 
|
| 
       58 
58 
     | 
    
         
             
                            # TODO: Implement the cop in here.
         
     | 
| 
       59 
59 
     | 
    
         
             
                            #
         
     | 
| 
       60 
60 
     | 
    
         
             
                            # In many cases, you can use a node matcher for matching node pattern.
         
     | 
| 
       61 
     | 
    
         
            -
                            # See https://github.com/rubocop-hq/rubocop/blob/master/lib/rubocop/node_pattern.rb
         
     | 
| 
      
 61 
     | 
    
         
            +
                            # See https://github.com/rubocop-hq/rubocop-ast/blob/master/lib/rubocop/node_pattern.rb
         
     | 
| 
       62 
62 
     | 
    
         
             
                            #
         
     | 
| 
       63 
63 
     | 
    
         
             
                            # For example
         
     | 
| 
       64 
64 
     | 
    
         
             
                            MSG = 'Use `#good_method` instead of `#bad_method`.'
         
     | 
| 
         @@ -10,9 +10,7 @@ module RuboCop 
     | 
|
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                  def part_of_ignored_node?(node)
         
     | 
| 
       12 
12 
     | 
    
         
             
                    ignored_nodes.map(&:loc).any? do |ignored_loc|
         
     | 
| 
       13 
     | 
    
         
            -
                      if ignored_loc.expression.begin_pos > node.source_range.begin_pos
         
     | 
| 
       14 
     | 
    
         
            -
                        next false
         
     | 
| 
       15 
     | 
    
         
            -
                      end
         
     | 
| 
      
 13 
     | 
    
         
            +
                      next false if ignored_loc.expression.begin_pos > node.source_range.begin_pos
         
     | 
| 
       16 
14 
     | 
    
         | 
| 
       17 
15 
     | 
    
         
             
                      ignored_end_pos = if ignored_loc.respond_to?(:heredoc_body)
         
     | 
| 
       18 
16 
     | 
    
         
             
                                          ignored_loc.heredoc_end.end_pos
         
     | 
| 
         @@ -99,9 +99,7 @@ module RuboCop 
     | 
|
| 
       99 
99 
     | 
    
         
             
                      lambda do |corrector|
         
     | 
| 
       100 
100 
     | 
    
         
             
                        line = range_by_whole_lines(node.source_range)
         
     | 
| 
       101 
101 
     | 
    
         | 
| 
       102 
     | 
    
         
            -
                        unless previous_line_empty?(node.first_line)
         
     | 
| 
       103 
     | 
    
         
            -
                          corrector.insert_before(line, "\n")
         
     | 
| 
       104 
     | 
    
         
            -
                        end
         
     | 
| 
      
 102 
     | 
    
         
            +
                        corrector.insert_before(line, "\n") unless previous_line_empty?(node.first_line)
         
     | 
| 
       105 
103 
     | 
    
         | 
| 
       106 
104 
     | 
    
         
             
                        correct_next_line_if_denied_style(corrector, node, line)
         
     | 
| 
       107 
105 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -120,9 +118,7 @@ module RuboCop 
     | 
|
| 
       120 
118 
     | 
    
         
             
                    def correct_next_line_if_denied_style(corrector, node, line)
         
     | 
| 
       121 
119 
     | 
    
         
             
                      case style
         
     | 
| 
       122 
120 
     | 
    
         
             
                      when :around
         
     | 
| 
       123 
     | 
    
         
            -
                        unless next_line_empty?(node.last_line)
         
     | 
| 
       124 
     | 
    
         
            -
                          corrector.insert_after(line, "\n")
         
     | 
| 
       125 
     | 
    
         
            -
                        end
         
     | 
| 
      
 121 
     | 
    
         
            +
                        corrector.insert_after(line, "\n") unless next_line_empty?(node.last_line)
         
     | 
| 
       126 
122 
     | 
    
         
             
                      when :only_before
         
     | 
| 
       127 
123 
     | 
    
         
             
                        if next_line_empty?(node.last_line)
         
     | 
| 
       128 
124 
     | 
    
         
             
                          range = next_empty_line_range(node)
         
     | 
| 
         @@ -3,7 +3,9 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module RuboCop
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Cop
         
     | 
| 
       5 
5 
     | 
    
         
             
                module Layout
         
     | 
| 
       6 
     | 
    
         
            -
                  # Checks for a newline after attribute accessor.
         
     | 
| 
      
 6 
     | 
    
         
            +
                  # Checks for a newline after an attribute accessor or a group of them.
         
     | 
| 
      
 7 
     | 
    
         
            +
                  # `alias` syntax and `alias_method`, `public`, `protected`, and `private` methods are allowed by default.
         
     | 
| 
      
 8 
     | 
    
         
            +
                  # These are customizable with `AllowAliasSyntax` and `AllowedMethods` options.
         
     | 
| 
       7 
9 
     | 
    
         
             
                  #
         
     | 
| 
       8 
10 
     | 
    
         
             
                  # @example
         
     | 
| 
       9 
11 
     | 
    
         
             
                  #   # bad
         
     | 
| 
         @@ -26,6 +28,38 @@ module RuboCop 
     | 
|
| 
       26 
28 
     | 
    
         
             
                  #   def do_something
         
     | 
| 
       27 
29 
     | 
    
         
             
                  #   end
         
     | 
| 
       28 
30 
     | 
    
         
             
                  #
         
     | 
| 
      
 31 
     | 
    
         
            +
                  # @example AllowAliasSyntax: true (default)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  #   # good
         
     | 
| 
      
 33 
     | 
    
         
            +
                  #   attr_accessor :foo
         
     | 
| 
      
 34 
     | 
    
         
            +
                  #   alias :foo? :foo
         
     | 
| 
      
 35 
     | 
    
         
            +
                  #
         
     | 
| 
      
 36 
     | 
    
         
            +
                  #   def do_something
         
     | 
| 
      
 37 
     | 
    
         
            +
                  #   end
         
     | 
| 
      
 38 
     | 
    
         
            +
                  #
         
     | 
| 
      
 39 
     | 
    
         
            +
                  # @example AllowAliasSyntax: false
         
     | 
| 
      
 40 
     | 
    
         
            +
                  #   # bad
         
     | 
| 
      
 41 
     | 
    
         
            +
                  #   attr_accessor :foo
         
     | 
| 
      
 42 
     | 
    
         
            +
                  #   alias :foo? :foo
         
     | 
| 
      
 43 
     | 
    
         
            +
                  #
         
     | 
| 
      
 44 
     | 
    
         
            +
                  #   def do_something
         
     | 
| 
      
 45 
     | 
    
         
            +
                  #   end
         
     | 
| 
      
 46 
     | 
    
         
            +
                  #
         
     | 
| 
      
 47 
     | 
    
         
            +
                  #   # good
         
     | 
| 
      
 48 
     | 
    
         
            +
                  #   attr_accessor :foo
         
     | 
| 
      
 49 
     | 
    
         
            +
                  #
         
     | 
| 
      
 50 
     | 
    
         
            +
                  #   alias :foo? :foo
         
     | 
| 
      
 51 
     | 
    
         
            +
                  #
         
     | 
| 
      
 52 
     | 
    
         
            +
                  #   def do_something
         
     | 
| 
      
 53 
     | 
    
         
            +
                  #   end
         
     | 
| 
      
 54 
     | 
    
         
            +
                  #
         
     | 
| 
      
 55 
     | 
    
         
            +
                  # @example AllowedMethods: ['private']
         
     | 
| 
      
 56 
     | 
    
         
            +
                  #   # good
         
     | 
| 
      
 57 
     | 
    
         
            +
                  #   attr_accessor :foo
         
     | 
| 
      
 58 
     | 
    
         
            +
                  #   private :foo
         
     | 
| 
      
 59 
     | 
    
         
            +
                  #
         
     | 
| 
      
 60 
     | 
    
         
            +
                  #   def do_something
         
     | 
| 
      
 61 
     | 
    
         
            +
                  #   end
         
     | 
| 
      
 62 
     | 
    
         
            +
                  #
         
     | 
| 
       29 
63 
     | 
    
         
             
                  class EmptyLinesAroundAttributeAccessor < Cop
         
     | 
| 
       30 
64 
     | 
    
         
             
                    include RangeHelp
         
     | 
| 
       31 
65 
     | 
    
         | 
| 
         @@ -36,7 +70,7 @@ module RuboCop 
     | 
|
| 
       36 
70 
     | 
    
         
             
                      return if next_line_empty?(node.last_line)
         
     | 
| 
       37 
71 
     | 
    
         | 
| 
       38 
72 
     | 
    
         
             
                      next_line_node = next_line_node(node)
         
     | 
| 
       39 
     | 
    
         
            -
                      return  
     | 
| 
      
 73 
     | 
    
         
            +
                      return unless require_empty_line?(next_line_node)
         
     | 
| 
       40 
74 
     | 
    
         | 
| 
       41 
75 
     | 
    
         
             
                      add_offense(node)
         
     | 
| 
       42 
76 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -55,12 +89,36 @@ module RuboCop 
     | 
|
| 
       55 
89 
     | 
    
         
             
                      processed_source[line].blank?
         
     | 
| 
       56 
90 
     | 
    
         
             
                    end
         
     | 
| 
       57 
91 
     | 
    
         | 
| 
      
 92 
     | 
    
         
            +
                    def require_empty_line?(node)
         
     | 
| 
      
 93 
     | 
    
         
            +
                      return false unless node&.respond_to?(:type)
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                      !allow_alias?(node) && !attribute_or_allowed_method?(node)
         
     | 
| 
      
 96 
     | 
    
         
            +
                    end
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
       58 
98 
     | 
    
         
             
                    def next_line_node(node)
         
     | 
| 
       59 
99 
     | 
    
         
             
                      node.parent.children[node.sibling_index + 1]
         
     | 
| 
       60 
100 
     | 
    
         
             
                    end
         
     | 
| 
       61 
101 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
                    def  
     | 
| 
       63 
     | 
    
         
            -
                       
     | 
| 
      
 102 
     | 
    
         
            +
                    def allow_alias?(node)
         
     | 
| 
      
 103 
     | 
    
         
            +
                      allow_alias_syntax? && node.alias_type?
         
     | 
| 
      
 104 
     | 
    
         
            +
                    end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
                    def attribute_or_allowed_method?(node)
         
     | 
| 
      
 107 
     | 
    
         
            +
                      return false unless node.send_type?
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                      node.attribute_accessor? || allowed_method?(node.method_name)
         
     | 
| 
      
 110 
     | 
    
         
            +
                    end
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                    def allow_alias_syntax?
         
     | 
| 
      
 113 
     | 
    
         
            +
                      cop_config.fetch('AllowAliasSyntax', true)
         
     | 
| 
      
 114 
     | 
    
         
            +
                    end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                    def allowed_method?(name)
         
     | 
| 
      
 117 
     | 
    
         
            +
                      allowed_methods.include?(name.to_s)
         
     | 
| 
      
 118 
     | 
    
         
            +
                    end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                    def allowed_methods
         
     | 
| 
      
 121 
     | 
    
         
            +
                      cop_config.fetch('AllowedMethods', [])
         
     | 
| 
       64 
122 
     | 
    
         
             
                    end
         
     | 
| 
       65 
123 
     | 
    
         
             
                  end
         
     | 
| 
       66 
124 
     | 
    
         
             
                end
         
     |