rubocop 1.69.2 → 1.73.1
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/LICENSE.txt +1 -1
- data/README.md +4 -4
- data/config/default.yml +90 -13
- data/config/internal_affairs.yml +16 -0
- data/lib/rubocop/cli/command/execute_runner.rb +3 -3
- data/lib/rubocop/cli/command/show_cops.rb +24 -2
- data/lib/rubocop/cli/command/suggest_extensions.rb +7 -1
- data/lib/rubocop/comment_config.rb +2 -2
- data/lib/rubocop/config.rb +17 -4
- data/lib/rubocop/config_loader.rb +48 -8
- data/lib/rubocop/config_loader_resolver.rb +35 -10
- data/lib/rubocop/config_validator.rb +19 -9
- data/lib/rubocop/cop/autocorrect_logic.rb +1 -1
- data/lib/rubocop/cop/base.rb +6 -0
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -1
- data/lib/rubocop/cop/bundler/gem_comment.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/cop_enabled.rb +85 -0
- data/lib/rubocop/cop/internal_affairs/example_description.rb +4 -2
- data/lib/rubocop/cop/internal_affairs/location_exists.rb +116 -0
- data/lib/rubocop/cop/internal_affairs/location_expression.rb +2 -1
- data/lib/rubocop/cop/internal_affairs/node_first_or_last_argument.rb +3 -2
- data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_processor.rb +63 -0
- data/lib/rubocop/cop/internal_affairs/node_pattern_groups/ast_walker.rb +131 -0
- data/lib/rubocop/cop/internal_affairs/node_pattern_groups.rb +229 -0
- data/lib/rubocop/cop/internal_affairs/node_type_multiple_predicates.rb +126 -0
- data/lib/rubocop/cop/internal_affairs/node_type_predicate.rb +4 -3
- data/lib/rubocop/cop/internal_affairs/on_send_without_on_csend.rb +90 -0
- data/lib/rubocop/cop/internal_affairs/plugin.rb +33 -0
- data/lib/rubocop/cop/internal_affairs/redundant_source_range.rb +3 -1
- data/lib/rubocop/cop/internal_affairs/single_line_comparison.rb +5 -4
- data/lib/rubocop/cop/internal_affairs/undefined_config.rb +7 -1
- data/lib/rubocop/cop/internal_affairs.rb +5 -16
- data/lib/rubocop/cop/layout/access_modifier_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/argument_alignment.rb +2 -8
- data/lib/rubocop/cop/layout/block_alignment.rb +3 -1
- data/lib/rubocop/cop/layout/class_structure.rb +9 -9
- data/lib/rubocop/cop/layout/closing_parenthesis_indentation.rb +4 -4
- data/lib/rubocop/cop/layout/dot_position.rb +1 -1
- data/lib/rubocop/cop/layout/else_alignment.rb +2 -2
- data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +1 -1
- data/lib/rubocop/cop/layout/empty_line_between_defs.rb +7 -11
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +27 -1
- data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_method_body.rb +22 -2
- data/lib/rubocop/cop/layout/end_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/extra_spacing.rb +1 -1
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +3 -8
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +2 -7
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +2 -7
- data/lib/rubocop/cop/layout/first_hash_element_line_break.rb +1 -1
- data/lib/rubocop/cop/layout/first_parameter_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/hash_alignment.rb +6 -4
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +2 -1
- data/lib/rubocop/cop/layout/line_continuation_spacing.rb +7 -1
- data/lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/line_length.rb +4 -3
- data/lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +25 -0
- data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -0
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +4 -4
- data/lib/rubocop/cop/layout/redundant_line_break.rb +7 -6
- data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/single_line_block_chain.rb +1 -1
- data/lib/rubocop/cop/layout/space_after_colon.rb +2 -2
- data/lib/rubocop/cop/layout/space_after_comma.rb +1 -1
- data/lib/rubocop/cop/layout/space_after_method_name.rb +1 -1
- data/lib/rubocop/cop/layout/space_after_semicolon.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_keyword.rb +1 -0
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_operators.rb +3 -3
- data/lib/rubocop/cop/layout/space_before_comma.rb +1 -1
- data/lib/rubocop/cop/layout/space_before_semicolon.rb +1 -1
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +5 -3
- data/lib/rubocop/cop/lint/ambiguous_block_association.rb +1 -1
- data/lib/rubocop/cop/lint/array_literal_in_regexp.rb +119 -0
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +1 -3
- data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +1 -1
- data/lib/rubocop/cop/lint/constant_definition_in_block.rb +3 -3
- data/lib/rubocop/cop/lint/constant_reassignment.rb +148 -0
- data/lib/rubocop/cop/lint/cop_directive_syntax.rb +84 -0
- data/lib/rubocop/cop/lint/debugger.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_match_pattern.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_methods.rb +0 -14
- data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +1 -1
- data/lib/rubocop/cop/lint/duplicate_set_element.rb +20 -7
- data/lib/rubocop/cop/lint/empty_conditional_body.rb +10 -5
- data/lib/rubocop/cop/lint/empty_expression.rb +0 -2
- data/lib/rubocop/cop/lint/float_comparison.rb +6 -8
- data/lib/rubocop/cop/lint/float_out_of_range.rb +1 -1
- data/lib/rubocop/cop/lint/format_parameter_mismatch.rb +2 -2
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
- data/lib/rubocop/cop/lint/literal_as_condition.rb +99 -9
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +24 -6
- data/lib/rubocop/cop/lint/missing_super.rb +2 -2
- data/lib/rubocop/cop/lint/mixed_case_range.rb +3 -3
- data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +1 -1
- data/lib/rubocop/cop/lint/nested_method_definition.rb +8 -4
- data/lib/rubocop/cop/lint/next_without_accumulator.rb +1 -1
- data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +4 -3
- data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +1 -1
- data/lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb +18 -31
- data/lib/rubocop/cop/lint/out_of_range_regexp_ref.rb +2 -1
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -5
- data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +0 -21
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +2 -2
- data/lib/rubocop/cop/lint/redundant_type_conversion.rb +252 -0
- data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +8 -1
- data/lib/rubocop/cop/lint/shared_mutable_default.rb +65 -0
- data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
- data/lib/rubocop/cop/lint/suppressed_exception_in_number_conversion.rb +111 -0
- data/lib/rubocop/cop/lint/symbol_conversion.rb +1 -1
- data/lib/rubocop/cop/lint/syntax.rb +4 -1
- data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +1 -4
- data/lib/rubocop/cop/lint/unexpected_block_arity.rb +1 -1
- data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +1 -1
- data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
- data/lib/rubocop/cop/lint/unreachable_loop.rb +1 -1
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +4 -4
- data/lib/rubocop/cop/lint/useless_assignment.rb +1 -1
- data/lib/rubocop/cop/lint/useless_constant_scoping.rb +80 -0
- data/lib/rubocop/cop/lint/useless_method_definition.rb +1 -1
- data/lib/rubocop/cop/lint/useless_numeric_operation.rb +2 -1
- data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +2 -2
- data/lib/rubocop/cop/lint/void.rb +11 -9
- data/lib/rubocop/cop/metrics/block_nesting.rb +1 -1
- data/lib/rubocop/cop/metrics/collection_literal_length.rb +7 -0
- data/lib/rubocop/cop/metrics/cyclomatic_complexity.rb +1 -1
- data/lib/rubocop/cop/metrics/method_length.rb +8 -1
- data/lib/rubocop/cop/metrics/module_length.rb +1 -1
- data/lib/rubocop/cop/metrics/perceived_complexity.rb +1 -1
- data/lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb +7 -7
- data/lib/rubocop/cop/mixin/alignment.rb +2 -2
- data/lib/rubocop/cop/mixin/allowed_pattern.rb +4 -4
- data/lib/rubocop/cop/mixin/check_line_breakable.rb +11 -11
- data/lib/rubocop/cop/mixin/comments_help.rb +4 -2
- data/lib/rubocop/cop/mixin/dig_help.rb +1 -1
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +1 -1
- data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +22 -22
- data/lib/rubocop/cop/mixin/hash_subset.rb +203 -0
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +74 -74
- data/lib/rubocop/cop/mixin/method_complexity.rb +1 -1
- data/lib/rubocop/cop/mixin/percent_literal.rb +1 -1
- data/lib/rubocop/cop/mixin/preceding_following_alignment.rb +48 -24
- data/lib/rubocop/cop/mixin/range_help.rb +3 -3
- data/lib/rubocop/cop/mixin/space_before_punctuation.rb +1 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +8 -3
- data/lib/rubocop/cop/mixin/string_help.rb +2 -2
- data/lib/rubocop/cop/mixin/string_literals_help.rb +1 -1
- data/lib/rubocop/cop/mixin/trailing_comma.rb +15 -3
- data/lib/rubocop/cop/naming/block_forwarding.rb +19 -15
- data/lib/rubocop/cop/naming/predicate_name.rb +44 -0
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +3 -3
- data/lib/rubocop/cop/naming/variable_name.rb +64 -6
- data/lib/rubocop/cop/security/compound_hash.rb +1 -0
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +34 -5
- data/lib/rubocop/cop/style/accessor_grouping.rb +19 -5
- data/lib/rubocop/cop/style/and_or.rb +1 -1
- data/lib/rubocop/cop/style/arguments_forwarding.rb +39 -23
- data/lib/rubocop/cop/style/array_first_last.rb +18 -2
- data/lib/rubocop/cop/style/block_delimiters.rb +7 -20
- data/lib/rubocop/cop/style/class_and_module_children.rb +6 -3
- data/lib/rubocop/cop/style/collection_methods.rb +1 -1
- data/lib/rubocop/cop/style/combinable_defined.rb +1 -1
- data/lib/rubocop/cop/style/combinable_loops.rb +2 -2
- data/lib/rubocop/cop/style/commented_keyword.rb +1 -1
- data/lib/rubocop/cop/style/concat_array_literals.rb +1 -1
- data/lib/rubocop/cop/style/conditional_assignment.rb +6 -4
- data/lib/rubocop/cop/style/documentation.rb +1 -1
- data/lib/rubocop/cop/style/double_negation.rb +3 -3
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +4 -7
- data/lib/rubocop/cop/style/each_with_object.rb +2 -3
- data/lib/rubocop/cop/style/empty_else.rb +4 -2
- data/lib/rubocop/cop/style/empty_literal.rb +1 -1
- data/lib/rubocop/cop/style/empty_method.rb +1 -1
- data/lib/rubocop/cop/style/endless_method.rb +163 -18
- data/lib/rubocop/cop/style/eval_with_location.rb +1 -1
- data/lib/rubocop/cop/style/exact_regexp_match.rb +3 -10
- data/lib/rubocop/cop/style/explicit_block_argument.rb +15 -2
- data/lib/rubocop/cop/style/exponential_notation.rb +1 -1
- data/lib/rubocop/cop/style/fetch_env_var.rb +1 -1
- data/lib/rubocop/cop/style/float_division.rb +8 -4
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +1 -1
- data/lib/rubocop/cop/style/hash_each_methods.rb +3 -6
- data/lib/rubocop/cop/style/hash_except.rb +24 -148
- data/lib/rubocop/cop/style/hash_slice.rb +80 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +6 -3
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +22 -3
- data/lib/rubocop/cop/style/if_unless_modifier.rb +3 -3
- data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +1 -1
- data/lib/rubocop/cop/style/if_with_semicolon.rb +2 -2
- data/lib/rubocop/cop/style/infinite_loop.rb +1 -1
- data/lib/rubocop/cop/style/inverse_methods.rb +6 -6
- data/lib/rubocop/cop/style/it_assignment.rb +36 -0
- data/lib/rubocop/cop/style/keyword_parameters_order.rb +1 -1
- data/lib/rubocop/cop/style/line_end_concatenation.rb +10 -4
- data/lib/rubocop/cop/style/map_into_array.rb +1 -1
- data/lib/rubocop/cop/style/map_to_hash.rb +1 -1
- data/lib/rubocop/cop/style/map_to_set.rb +3 -2
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +19 -12
- data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +2 -0
- data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +2 -1
- data/lib/rubocop/cop/style/method_called_on_do_end_block.rb +2 -4
- data/lib/rubocop/cop/style/method_def_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/missing_else.rb +2 -0
- data/lib/rubocop/cop/style/multiline_block_chain.rb +1 -1
- data/lib/rubocop/cop/style/multiple_comparison.rb +26 -20
- data/lib/rubocop/cop/style/mutable_constant.rb +3 -3
- data/lib/rubocop/cop/style/negated_if_else_condition.rb +1 -1
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +1 -1
- data/lib/rubocop/cop/style/object_then.rb +13 -15
- data/lib/rubocop/cop/style/open_struct_use.rb +5 -5
- data/lib/rubocop/cop/style/parallel_assignment.rb +1 -5
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +2 -2
- data/lib/rubocop/cop/style/percent_literal_delimiters.rb +1 -1
- data/lib/rubocop/cop/style/proc.rb +1 -2
- data/lib/rubocop/cop/style/quoted_symbols.rb +1 -1
- data/lib/rubocop/cop/style/raise_args.rb +6 -4
- data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
- data/lib/rubocop/cop/style/redundant_begin.rb +1 -1
- data/lib/rubocop/cop/style/redundant_condition.rb +48 -2
- data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +2 -1
- data/lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb +6 -10
- data/lib/rubocop/cop/style/redundant_each.rb +1 -1
- data/lib/rubocop/cop/style/redundant_exception.rb +2 -2
- data/lib/rubocop/cop/style/redundant_format.rb +250 -0
- data/lib/rubocop/cop/style/redundant_freeze.rb +2 -2
- data/lib/rubocop/cop/style/redundant_initialize.rb +12 -3
- data/lib/rubocop/cop/style/redundant_line_continuation.rb +34 -13
- data/lib/rubocop/cop/style/redundant_parentheses.rb +28 -14
- data/lib/rubocop/cop/style/redundant_regexp_argument.rb +3 -0
- data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +1 -1
- data/lib/rubocop/cop/style/redundant_regexp_escape.rb +1 -1
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +14 -28
- data/lib/rubocop/cop/style/redundant_sort.rb +2 -2
- data/lib/rubocop/cop/style/redundant_string_escape.rb +2 -2
- data/lib/rubocop/cop/style/return_nil.rb +1 -1
- data/lib/rubocop/cop/style/safe_navigation.rb +2 -2
- data/lib/rubocop/cop/style/semicolon.rb +1 -1
- data/lib/rubocop/cop/style/send_with_literal_method_name.rb +2 -1
- data/lib/rubocop/cop/style/single_line_block_params.rb +1 -1
- data/lib/rubocop/cop/style/single_line_do_end_block.rb +1 -2
- data/lib/rubocop/cop/style/single_line_methods.rb +6 -7
- data/lib/rubocop/cop/style/slicing_with_range.rb +40 -11
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +2 -2
- data/lib/rubocop/cop/style/string_concatenation.rb +2 -2
- data/lib/rubocop/cop/style/string_literals.rb +1 -1
- data/lib/rubocop/cop/style/string_methods.rb +1 -1
- data/lib/rubocop/cop/style/super_arguments.rb +65 -17
- data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -1
- data/lib/rubocop/cop/style/top_level_method_definition.rb +1 -1
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +4 -1
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +47 -6
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +48 -6
- data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
- data/lib/rubocop/cop/style/while_until_modifier.rb +0 -1
- data/lib/rubocop/cop/style/yoda_condition.rb +8 -4
- data/lib/rubocop/cop/style/yoda_expression.rb +2 -1
- data/lib/rubocop/cop/util.rb +12 -5
- data/lib/rubocop/cop/utils/format_string.rb +7 -5
- data/lib/rubocop/cop/variable_force/variable.rb +14 -2
- data/lib/rubocop/cop/variable_force/variable_table.rb +3 -3
- data/lib/rubocop/cops_documentation_generator.rb +25 -14
- data/lib/rubocop/directive_comment.rb +44 -10
- data/lib/rubocop/formatter/formatter_set.rb +1 -1
- data/lib/rubocop/lsp/diagnostic.rb +189 -0
- data/lib/rubocop/lsp/logger.rb +2 -2
- data/lib/rubocop/lsp/routes.rb +7 -23
- data/lib/rubocop/lsp/runtime.rb +17 -49
- data/lib/rubocop/lsp/server.rb +0 -2
- data/lib/rubocop/lsp/stdin_runner.rb +83 -0
- data/lib/rubocop/options.rb +28 -12
- data/lib/rubocop/path_util.rb +15 -8
- data/lib/rubocop/plugin/configuration_integrator.rb +143 -0
- data/lib/rubocop/plugin/load_error.rb +26 -0
- data/lib/rubocop/plugin/loader.rb +100 -0
- data/lib/rubocop/plugin/not_supported_error.rb +29 -0
- data/lib/rubocop/plugin.rb +46 -0
- data/lib/rubocop/rake_task.rb +4 -1
- data/lib/rubocop/result_cache.rb +13 -13
- data/lib/rubocop/rspec/cop_helper.rb +9 -0
- data/lib/rubocop/rspec/expect_offense.rb +6 -2
- data/lib/rubocop/rspec/shared_contexts.rb +19 -1
- data/lib/rubocop/rspec/support.rb +2 -2
- data/lib/rubocop/runner.rb +5 -6
- data/lib/rubocop/server/cache.rb +35 -2
- data/lib/rubocop/server/cli.rb +2 -2
- data/lib/rubocop/target_finder.rb +1 -0
- data/lib/rubocop/target_ruby.rb +15 -0
- data/lib/rubocop/version.rb +17 -2
- data/lib/rubocop.rb +11 -1
- data/lib/ruby_lsp/rubocop/addon.rb +75 -0
- data/lib/ruby_lsp/rubocop/runtime_adapter.rb +47 -0
- metadata +53 -16
- data/lib/rubocop/cop/utils/regexp_ranges.rb +0 -113
- data/lib/rubocop/rspec/host_environment_simulation_helper.rb +0 -28
@@ -3,23 +3,23 @@
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
5
|
module Layout
|
6
|
-
# Checks if the code style follows the ExpectedOrder configuration:
|
6
|
+
# Checks if the code style follows the `ExpectedOrder` configuration:
|
7
7
|
#
|
8
8
|
# `Categories` allows us to map macro names into a category.
|
9
9
|
#
|
10
10
|
# Consider an example of code style that covers the following order:
|
11
11
|
#
|
12
|
-
# * Module inclusion (include
|
12
|
+
# * Module inclusion (`include`, `prepend`, `extend`)
|
13
13
|
# * Constants
|
14
|
-
# * Associations (has_one
|
15
|
-
# * Public attribute macros (attr_accessor
|
16
|
-
# * Other macros (validates
|
14
|
+
# * Associations (`has_one`, `has_many`)
|
15
|
+
# * Public attribute macros (`attr_accessor`, `attr_writer`, `attr_reader`)
|
16
|
+
# * Other macros (`validates`, `validate`)
|
17
17
|
# * Public class methods
|
18
18
|
# * Initializer
|
19
19
|
# * Public instance methods
|
20
|
-
# * Protected attribute macros (attr_accessor
|
20
|
+
# * Protected attribute macros (`attr_accessor`, `attr_writer`, `attr_reader`)
|
21
21
|
# * Protected instance methods
|
22
|
-
# * Private attribute macros (attr_accessor
|
22
|
+
# * Private attribute macros (`attr_accessor`, `attr_writer`, `attr_reader`)
|
23
23
|
# * Private instance methods
|
24
24
|
#
|
25
25
|
# You can configure the following order:
|
@@ -236,7 +236,7 @@ module RuboCop
|
|
236
236
|
|
237
237
|
return [] unless class_def
|
238
238
|
|
239
|
-
if class_def.
|
239
|
+
if class_def.type?(:def, :send)
|
240
240
|
[class_def]
|
241
241
|
else
|
242
242
|
class_def.children.compact
|
@@ -289,7 +289,7 @@ module RuboCop
|
|
289
289
|
def marked_as_private_constant?(node, name)
|
290
290
|
return false unless node.method?(:private_constant)
|
291
291
|
|
292
|
-
node.arguments.any? { |arg|
|
292
|
+
node.arguments.any? { |arg| arg.type?(:sym, :str) && arg.value == name }
|
293
293
|
end
|
294
294
|
|
295
295
|
def end_position_for(node)
|
@@ -155,10 +155,10 @@ module RuboCop
|
|
155
155
|
end
|
156
156
|
|
157
157
|
def all_elements_aligned?(elements)
|
158
|
-
elements.
|
159
|
-
|
160
|
-
|
161
|
-
|
158
|
+
if elements.first.hash_type?
|
159
|
+
elements.first.each_child_node.map { |child| child.loc.column }
|
160
|
+
else
|
161
|
+
elements.flat_map do |e|
|
162
162
|
e.loc.column
|
163
163
|
end
|
164
164
|
end.uniq.count == 1
|
@@ -49,7 +49,7 @@ module RuboCop
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def on_rescue(node)
|
52
|
-
return unless node.loc
|
52
|
+
return unless node.loc?(:else)
|
53
53
|
|
54
54
|
check_alignment(base_range_of_rescue(node), node.loc.else)
|
55
55
|
end
|
@@ -92,7 +92,7 @@ module RuboCop
|
|
92
92
|
case parent.type
|
93
93
|
when :def, :defs then base_for_method_definition(parent)
|
94
94
|
when :kwbegin then parent.loc.begin
|
95
|
-
when :block
|
95
|
+
when :block, :numblock
|
96
96
|
assignment_node = assignment_node(parent)
|
97
97
|
if same_line?(parent, assignment_node)
|
98
98
|
assignment_node.source_range
|
@@ -22,8 +22,6 @@ module RuboCop
|
|
22
22
|
# def b
|
23
23
|
# end
|
24
24
|
#
|
25
|
-
# @example
|
26
|
-
#
|
27
25
|
# # good
|
28
26
|
# def a
|
29
27
|
# end
|
@@ -42,8 +40,6 @@ module RuboCop
|
|
42
40
|
# def b
|
43
41
|
# end
|
44
42
|
#
|
45
|
-
# @example
|
46
|
-
#
|
47
43
|
# # good
|
48
44
|
# class A
|
49
45
|
# end
|
@@ -65,8 +61,6 @@ module RuboCop
|
|
65
61
|
# def b
|
66
62
|
# end
|
67
63
|
#
|
68
|
-
# @example
|
69
|
-
#
|
70
64
|
# # good
|
71
65
|
# module A
|
72
66
|
# end
|
@@ -162,7 +156,7 @@ module RuboCop
|
|
162
156
|
private
|
163
157
|
|
164
158
|
def def_location(correction_node)
|
165
|
-
if correction_node.
|
159
|
+
if correction_node.any_block_type?
|
166
160
|
correction_node.source_range.join(correction_node.children.first.source_range)
|
167
161
|
else
|
168
162
|
correction_node.loc.keyword.join(correction_node.loc.name)
|
@@ -181,12 +175,12 @@ module RuboCop
|
|
181
175
|
end
|
182
176
|
|
183
177
|
def macro_candidate?(node)
|
184
|
-
node.
|
178
|
+
node.any_block_type? && node.children.first.macro? &&
|
185
179
|
empty_line_between_macros.include?(node.children.first.method_name)
|
186
180
|
end
|
187
181
|
|
188
182
|
def method_candidate?(node)
|
189
|
-
cop_config['EmptyLineBetweenMethodDefs'] &&
|
183
|
+
cop_config['EmptyLineBetweenMethodDefs'] && node.type?(:def, :defs)
|
190
184
|
end
|
191
185
|
|
192
186
|
def class_candidate?(node)
|
@@ -246,7 +240,7 @@ module RuboCop
|
|
246
240
|
end
|
247
241
|
|
248
242
|
def def_start(node)
|
249
|
-
if node.
|
243
|
+
if node.any_block_type? && node.children.first.send_type?
|
250
244
|
node.source_range.line
|
251
245
|
else
|
252
246
|
node.loc.keyword.line
|
@@ -258,7 +252,7 @@ module RuboCop
|
|
258
252
|
end
|
259
253
|
|
260
254
|
def end_loc(node)
|
261
|
-
if
|
255
|
+
if node.type?(:def, :defs) && node.endless?
|
262
256
|
node.source_range.end
|
263
257
|
else
|
264
258
|
node.loc.end
|
@@ -283,6 +277,8 @@ module RuboCop
|
|
283
277
|
case node.type
|
284
278
|
when :def, :defs
|
285
279
|
:method
|
280
|
+
when :numblock
|
281
|
+
:block
|
286
282
|
else
|
287
283
|
node.type
|
288
284
|
end
|
@@ -86,13 +86,14 @@ module RuboCop
|
|
86
86
|
|
87
87
|
def on_send(node)
|
88
88
|
return unless node.bare_access_modifier? && !node.block_literal?
|
89
|
+
return if same_line?(node, node.right_sibling)
|
89
90
|
return if expected_empty_lines?(node)
|
90
91
|
|
91
92
|
message = message(node)
|
92
93
|
add_offense(node, message: message) do |corrector|
|
93
94
|
line = range_by_whole_lines(node.source_range)
|
94
95
|
|
95
|
-
corrector.insert_before(line, "\n")
|
96
|
+
corrector.insert_before(line, "\n") if should_insert_line_before?(node)
|
96
97
|
|
97
98
|
correct_next_line_if_denied_style(corrector, node, line)
|
98
99
|
end
|
@@ -121,6 +122,8 @@ module RuboCop
|
|
121
122
|
end
|
122
123
|
|
123
124
|
def correct_next_line_if_denied_style(corrector, node, line)
|
125
|
+
return unless should_insert_line_after?(node)
|
126
|
+
|
124
127
|
case style
|
125
128
|
when :around
|
126
129
|
corrector.insert_after(line, "\n") unless next_line_empty?(node.last_line)
|
@@ -204,6 +207,29 @@ module RuboCop
|
|
204
207
|
format(MSG_BEFORE_FOR_ONLY_BEFORE, modifier: modifier)
|
205
208
|
end
|
206
209
|
end
|
210
|
+
|
211
|
+
def should_insert_line_before?(node)
|
212
|
+
return false if previous_line_empty?(node.first_line)
|
213
|
+
return true unless inside_block?(node) && no_empty_lines_around_block_body?
|
214
|
+
return true unless node.parent.begin_type?
|
215
|
+
|
216
|
+
node.parent.children.first != node
|
217
|
+
end
|
218
|
+
|
219
|
+
def should_insert_line_after?(node)
|
220
|
+
return true unless inside_block?(node) && no_empty_lines_around_block_body?
|
221
|
+
|
222
|
+
node.parent.children.last != node
|
223
|
+
end
|
224
|
+
|
225
|
+
def inside_block?(node)
|
226
|
+
node.parent.block_type? || (node.parent.begin_type? && node.parent.parent&.block_type?)
|
227
|
+
end
|
228
|
+
|
229
|
+
def no_empty_lines_around_block_body?
|
230
|
+
config.for_enabled_cop('Layout/EmptyLinesAroundBlockBody')['EnforcedStyle'] ==
|
231
|
+
'no_empty_lines'
|
232
|
+
end
|
207
233
|
end
|
208
234
|
end
|
209
235
|
end
|
@@ -6,7 +6,7 @@ module RuboCop
|
|
6
6
|
# Checks if empty lines exist around the bodies of `begin`
|
7
7
|
# sections. This cop doesn't check empty lines at `begin` body
|
8
8
|
# beginning/end and around method definition body.
|
9
|
-
# `
|
9
|
+
# `Layout/EmptyLinesAroundBeginBody` or `Layout/EmptyLinesAroundMethodBody`
|
10
10
|
# can be used for this purpose.
|
11
11
|
#
|
12
12
|
# @example
|
@@ -27,9 +27,14 @@ module RuboCop
|
|
27
27
|
KIND = 'method'
|
28
28
|
|
29
29
|
def on_def(node)
|
30
|
-
|
30
|
+
if node.endless?
|
31
|
+
return unless offending_endless_method?(node)
|
31
32
|
|
32
|
-
|
33
|
+
register_offense_for_endless_method(node)
|
34
|
+
else
|
35
|
+
first_line = node.arguments.source_range&.last_line
|
36
|
+
check(node, node.body, adjusted_first_line: first_line)
|
37
|
+
end
|
33
38
|
end
|
34
39
|
alias on_defs on_def
|
35
40
|
|
@@ -38,6 +43,21 @@ module RuboCop
|
|
38
43
|
def style
|
39
44
|
:no_empty_lines
|
40
45
|
end
|
46
|
+
|
47
|
+
def offending_endless_method?(node)
|
48
|
+
node.body.first_line > node.loc.assignment.line + 1 &&
|
49
|
+
processed_source.lines[node.loc.assignment.line].empty?
|
50
|
+
end
|
51
|
+
|
52
|
+
def register_offense_for_endless_method(node)
|
53
|
+
range = processed_source.buffer.line_range(node.loc.assignment.line + 1).resize(1)
|
54
|
+
|
55
|
+
msg = message(MSG_EXTRA, 'beginning')
|
56
|
+
|
57
|
+
add_offense(range, message: msg) do |corrector|
|
58
|
+
corrector.remove(range)
|
59
|
+
end
|
60
|
+
end
|
41
61
|
end
|
42
62
|
end
|
43
63
|
end
|
@@ -182,7 +182,7 @@ module RuboCop
|
|
182
182
|
end
|
183
183
|
|
184
184
|
def alignment_node_for_variable_style(node)
|
185
|
-
if
|
185
|
+
if node.type?(:case, :case_match) && node.argument? &&
|
186
186
|
same_line?(node, node.parent)
|
187
187
|
return node.parent
|
188
188
|
end
|
@@ -70,7 +70,7 @@ module RuboCop
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def check_assignment(token)
|
73
|
-
return unless
|
73
|
+
return unless aligned_with_preceding_equals_operator(token) == :no
|
74
74
|
|
75
75
|
message = format(MSG_UNALIGNED_ASGN, location: 'preceding')
|
76
76
|
add_offense(token.pos, message: message) do |corrector|
|
@@ -225,7 +225,7 @@ module RuboCop
|
|
225
225
|
|
226
226
|
def base_range(send_node, arg_node)
|
227
227
|
parent = send_node.parent
|
228
|
-
start_node = if parent
|
228
|
+
start_node = if parent&.type?(:splat, :kwsplat)
|
229
229
|
send_node.parent
|
230
230
|
else
|
231
231
|
send_node
|
@@ -269,17 +269,12 @@ module RuboCop
|
|
269
269
|
end
|
270
270
|
|
271
271
|
def enforce_first_argument_with_fixed_indentation?
|
272
|
-
|
273
|
-
|
272
|
+
argument_alignment_config = config.for_enabled_cop('Layout/ArgumentAlignment')
|
274
273
|
argument_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
275
274
|
end
|
276
275
|
|
277
276
|
def enable_layout_first_method_argument_line_break?
|
278
|
-
config.
|
279
|
-
end
|
280
|
-
|
281
|
-
def argument_alignment_config
|
282
|
-
config.for_cop('Layout/ArgumentAlignment')
|
277
|
+
config.cop_enabled?('Layout/FirstMethodArgumentLineBreak')
|
283
278
|
end
|
284
279
|
end
|
285
280
|
end
|
@@ -180,13 +180,8 @@ module RuboCop
|
|
180
180
|
end
|
181
181
|
|
182
182
|
def enforce_first_argument_with_fixed_indentation?
|
183
|
-
|
184
|
-
|
185
|
-
array_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
186
|
-
end
|
187
|
-
|
188
|
-
def array_alignment_config
|
189
|
-
config.for_cop('Layout/ArrayAlignment')
|
183
|
+
argument_alignment_config = config.for_enabled_cop('Layout/ArrayAlignment')
|
184
|
+
argument_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
190
185
|
end
|
191
186
|
end
|
192
187
|
end
|
@@ -7,7 +7,7 @@ module RuboCop
|
|
7
7
|
# where the opening brace and the first key are on separate lines. The
|
8
8
|
# other keys' indentations are handled by the HashAlignment cop.
|
9
9
|
#
|
10
|
-
# By default, Hash literals that are arguments in a method call with
|
10
|
+
# By default, `Hash` literals that are arguments in a method call with
|
11
11
|
# parentheses, and where the opening curly brace of the hash is on the
|
12
12
|
# same line as the opening parenthesis of the method call, shall have
|
13
13
|
# their first key indented one step (two spaces) more than the position
|
@@ -225,14 +225,9 @@ module RuboCop
|
|
225
225
|
end
|
226
226
|
|
227
227
|
def enforce_first_argument_with_fixed_indentation?
|
228
|
-
|
229
|
-
|
228
|
+
argument_alignment_config = config.for_enabled_cop('Layout/ArgumentAlignment')
|
230
229
|
argument_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
231
230
|
end
|
232
|
-
|
233
|
-
def argument_alignment_config
|
234
|
-
config.for_cop('Layout/ArgumentAlignment')
|
235
|
-
end
|
236
231
|
end
|
237
232
|
end
|
238
233
|
end
|
@@ -51,7 +51,7 @@ module RuboCop
|
|
51
51
|
|
52
52
|
def on_hash(node)
|
53
53
|
# node.loc.begin tells us whether the hash opens with a {
|
54
|
-
# If it doesn't,
|
54
|
+
# If it doesn't, Layout/FirstMethodArgumentLineBreak will handle it
|
55
55
|
return unless node.loc.begin
|
56
56
|
|
57
57
|
check_children_line_break(node, node.children, ignore_last: ignore_last_element?)
|
@@ -5,10 +5,10 @@ module RuboCop
|
|
5
5
|
module Layout
|
6
6
|
# Checks the indentation of the first parameter in a method
|
7
7
|
# definition. Parameters after the first one are checked by
|
8
|
-
# Layout/ParameterAlignment
|
8
|
+
# `Layout/ParameterAlignment`, not by this cop.
|
9
9
|
#
|
10
10
|
# For indenting the first argument of method _calls_, check out
|
11
|
-
# Layout/FirstArgumentIndentation
|
11
|
+
# `Layout/FirstArgumentIndentation`, which supports options related to
|
12
12
|
# nesting that are irrelevant for method _definitions_.
|
13
13
|
#
|
14
14
|
# @example
|
@@ -202,6 +202,7 @@ module RuboCop
|
|
202
202
|
|
203
203
|
ignore_node(last_argument)
|
204
204
|
end
|
205
|
+
alias on_csend on_send
|
205
206
|
alias on_super on_send
|
206
207
|
alias on_yield on_send
|
207
208
|
|
@@ -227,6 +228,7 @@ module RuboCop
|
|
227
228
|
left_sibling = argument_before_hash(node)
|
228
229
|
parent_loc = node.parent.loc
|
229
230
|
selector = left_sibling || parent_loc.selector || parent_loc.expression
|
231
|
+
|
230
232
|
same_line?(selector, node.pairs.first)
|
231
233
|
end
|
232
234
|
|
@@ -382,13 +384,13 @@ module RuboCop
|
|
382
384
|
end
|
383
385
|
|
384
386
|
def enforce_first_argument_with_fixed_indentation?
|
385
|
-
|
386
|
-
|
387
|
+
argument_alignment_config = config.for_enabled_cop('Layout/ArgumentAlignment')
|
387
388
|
argument_alignment_config['EnforcedStyle'] == 'with_fixed_indentation'
|
388
389
|
end
|
389
390
|
|
390
|
-
def
|
391
|
-
|
391
|
+
def same_line?(node1, node2)
|
392
|
+
# Override `Util#same_line?`
|
393
|
+
super || node1.last_line == line(node2)
|
392
394
|
end
|
393
395
|
end
|
394
396
|
end
|
@@ -75,6 +75,7 @@ module RuboCop
|
|
75
75
|
autocorrect(corrector, outermost_send)
|
76
76
|
end
|
77
77
|
end
|
78
|
+
alias on_csend on_send
|
78
79
|
|
79
80
|
private
|
80
81
|
|
@@ -161,7 +162,7 @@ module RuboCop
|
|
161
162
|
|
162
163
|
def end_keyword_before_closing_parenthesis?(parenthesized_send_node)
|
163
164
|
parenthesized_send_node.ancestors.any? do |ancestor|
|
164
|
-
ancestor.
|
165
|
+
ancestor.loc_is?(:end, 'end')
|
165
166
|
end
|
166
167
|
end
|
167
168
|
|
@@ -101,7 +101,7 @@ module RuboCop
|
|
101
101
|
ranges << loc.expression
|
102
102
|
elsif literal.heredoc?
|
103
103
|
ranges << loc.heredoc_body
|
104
|
-
elsif loc.respond_to?(:begin) && loc.begin
|
104
|
+
elsif (loc.respond_to?(:begin) && loc.begin) || ignored_parent?(literal)
|
105
105
|
ranges << loc.expression
|
106
106
|
end
|
107
107
|
end
|
@@ -127,6 +127,12 @@ module RuboCop
|
|
127
127
|
comment_ranges(processed_source.comments)
|
128
128
|
end
|
129
129
|
|
130
|
+
def ignored_parent?(node)
|
131
|
+
return false unless node.parent
|
132
|
+
|
133
|
+
node.parent.type?(:regexp, :xstr)
|
134
|
+
end
|
135
|
+
|
130
136
|
def no_space_style?
|
131
137
|
cop_config['EnforcedStyle'] == 'no_space'
|
132
138
|
end
|
@@ -102,7 +102,7 @@ module RuboCop
|
|
102
102
|
|
103
103
|
def strings_concatenated_with_backslash?(dstr_node)
|
104
104
|
dstr_node.multiline? &&
|
105
|
-
dstr_node.children.all? { |c| c.
|
105
|
+
dstr_node.children.all? { |c| c.type?(:str, :dstr) } &&
|
106
106
|
dstr_node.children.none?(&:multiline?)
|
107
107
|
end
|
108
108
|
|
@@ -127,7 +127,7 @@ module RuboCop
|
|
127
127
|
|
128
128
|
def base_column(child)
|
129
129
|
grandparent = child.parent.parent
|
130
|
-
if grandparent&.
|
130
|
+
if grandparent&.pair_type?
|
131
131
|
grandparent.loc.column
|
132
132
|
else
|
133
133
|
child.source_range.source_line =~ /\S/
|
@@ -90,6 +90,7 @@ module RuboCop
|
|
90
90
|
alias on_array on_potential_breakable_node
|
91
91
|
alias on_hash on_potential_breakable_node
|
92
92
|
alias on_send on_potential_breakable_node
|
93
|
+
alias on_csend on_potential_breakable_node
|
93
94
|
alias on_def on_potential_breakable_node
|
94
95
|
|
95
96
|
def on_new_investigation
|
@@ -208,7 +209,7 @@ module RuboCop
|
|
208
209
|
# are not bisected.
|
209
210
|
# If the string contains spaces, use them to determine a place for a clean break;
|
210
211
|
# otherwise, the string will be broken at the line length limit.
|
211
|
-
def breakable_string_range(node)
|
212
|
+
def breakable_string_range(node)
|
212
213
|
source_range = node.source_range
|
213
214
|
relevant_substr = largest_possible_string(node)
|
214
215
|
|
@@ -220,13 +221,13 @@ module RuboCop
|
|
220
221
|
adjustment = max - source_range.last_column - 3
|
221
222
|
return if adjustment.abs > source_range.size
|
222
223
|
|
223
|
-
source_range.adjust(end_pos:
|
224
|
+
source_range.adjust(end_pos: adjustment)
|
224
225
|
end
|
225
226
|
end
|
226
227
|
|
227
228
|
def breakable_dstr_begin_position(node)
|
228
229
|
source_range = node.source_range
|
229
|
-
source_range.begin_pos if source_range.
|
230
|
+
source_range.begin_pos if source_range.column < max && source_range.last_column >= max
|
230
231
|
end
|
231
232
|
|
232
233
|
def breakable_range_by_line_index
|
@@ -52,7 +52,7 @@ module RuboCop
|
|
52
52
|
def on_hash(node)
|
53
53
|
# This cop only deals with hashes wrapped by a set of curly
|
54
54
|
# braces like {foo: 1}. That is, not a kwargs hashes.
|
55
|
-
#
|
55
|
+
# Layout/MultilineMethodArgumentLineBreaks handles those.
|
56
56
|
return unless starts_with_curly_brace?(node)
|
57
57
|
return unless node.loc.begin
|
58
58
|
|
@@ -33,6 +33,18 @@ module RuboCop
|
|
33
33
|
#
|
34
34
|
# @example AllowMultilineFinalElement: false (default)
|
35
35
|
#
|
36
|
+
# # bad
|
37
|
+
# foo(a, b,
|
38
|
+
# c
|
39
|
+
# )
|
40
|
+
#
|
41
|
+
# # bad
|
42
|
+
# foo(
|
43
|
+
# a, b, {
|
44
|
+
# foo: "bar",
|
45
|
+
# }
|
46
|
+
# )
|
47
|
+
#
|
36
48
|
# # good
|
37
49
|
# foo(
|
38
50
|
# a,
|
@@ -44,6 +56,18 @@ module RuboCop
|
|
44
56
|
#
|
45
57
|
# @example AllowMultilineFinalElement: true
|
46
58
|
#
|
59
|
+
# # bad
|
60
|
+
# foo(a, b,
|
61
|
+
# c
|
62
|
+
# )
|
63
|
+
#
|
64
|
+
# # good
|
65
|
+
# foo(
|
66
|
+
# a, b, {
|
67
|
+
# foo: "bar",
|
68
|
+
# }
|
69
|
+
# )
|
70
|
+
#
|
47
71
|
# # good
|
48
72
|
# foo(
|
49
73
|
# a,
|
@@ -75,6 +99,7 @@ module RuboCop
|
|
75
99
|
|
76
100
|
check_line_breaks(node, args, ignore_last: ignore_last_element?)
|
77
101
|
end
|
102
|
+
alias on_csend on_send
|
78
103
|
|
79
104
|
private
|
80
105
|
|
@@ -100,7 +100,7 @@ module RuboCop
|
|
100
100
|
|
101
101
|
def extra_indentation(given_style, parent)
|
102
102
|
if given_style == :indented_relative_to_receiver
|
103
|
-
if parent
|
103
|
+
if parent&.type?(:splat, :kwsplat)
|
104
104
|
configured_indentation_width - parent.loc.operator.length
|
105
105
|
else
|
106
106
|
configured_indentation_width
|
@@ -216,7 +216,7 @@ module RuboCop
|
|
216
216
|
|
217
217
|
def get_dot_right_above(node)
|
218
218
|
node.each_ancestor.find do |a|
|
219
|
-
dot = a.loc.
|
219
|
+
dot = a.loc.dot if a.loc?(:dot)
|
220
220
|
next unless dot
|
221
221
|
|
222
222
|
dot.line == node.loc.dot.line - 1 && dot.column == node.loc.dot.column
|
@@ -224,7 +224,7 @@ module RuboCop
|
|
224
224
|
end
|
225
225
|
|
226
226
|
def find_multiline_block_chain_node(node)
|
227
|
-
return unless (block_node = node.each_descendant(:
|
227
|
+
return unless (block_node = node.each_descendant(:any_block).first)
|
228
228
|
return unless block_node.multiline? && block_node.parent.call_type?
|
229
229
|
|
230
230
|
if node.receiver.call_type?
|
@@ -239,7 +239,7 @@ module RuboCop
|
|
239
239
|
node = node.receiver while node.receiver
|
240
240
|
# ascend to first call which has a dot
|
241
241
|
node = node.parent
|
242
|
-
node = node.parent until node.loc
|
242
|
+
node = node.parent until node.loc?(:dot)
|
243
243
|
|
244
244
|
node
|
245
245
|
end
|
@@ -103,24 +103,25 @@ module RuboCop
|
|
103
103
|
|
104
104
|
def configured_to_not_be_inspected?(node)
|
105
105
|
return true if other_cop_takes_precedence?(node)
|
106
|
+
return false if cop_config['InspectBlocks']
|
106
107
|
|
107
|
-
|
108
|
-
any_descendant?(node, :block, &:multiline?))
|
108
|
+
node.any_block_type? || any_descendant?(node, :any_block, &:multiline?)
|
109
109
|
end
|
110
110
|
|
111
111
|
def other_cop_takes_precedence?(node)
|
112
|
-
single_line_block_chain_enabled? && any_descendant?(node, :
|
112
|
+
single_line_block_chain_enabled? && any_descendant?(node, :any_block) do |block_node|
|
113
113
|
block_node.parent.send_type? && block_node.parent.loc.dot && !block_node.multiline?
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
117
|
def single_line_block_chain_enabled?
|
118
|
-
@config.
|
118
|
+
@config.cop_enabled?('Layout/SingleLineBlockChain')
|
119
119
|
end
|
120
120
|
|
121
121
|
def convertible_block?(node)
|
122
|
-
parent = node.parent
|
123
|
-
|
122
|
+
return false unless (parent = node.parent)
|
123
|
+
|
124
|
+
parent.any_block_type? && node == parent.send_node &&
|
124
125
|
(node.parenthesized? || !node.arguments?)
|
125
126
|
end
|
126
127
|
end
|