rubocop 0.80.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 +4 -4
- data/config/default.yml +171 -34
- data/lib/rubocop.rb +15 -62
- data/lib/rubocop/ast_aliases.rb +8 -0
- data/lib/rubocop/cli.rb +11 -5
- data/lib/rubocop/cli/command/show_cops.rb +2 -6
- data/lib/rubocop/config.rb +41 -13
- data/lib/rubocop/config_loader.rb +40 -36
- data/lib/rubocop/config_loader_resolver.rb +27 -4
- data/lib/rubocop/config_obsoletion.rb +2 -0
- data/lib/rubocop/config_validator.rb +18 -1
- data/lib/rubocop/cop/autocorrect_logic.rb +1 -2
- data/lib/rubocop/cop/badge.rb +5 -5
- data/lib/rubocop/cop/bundler/insecure_protocol_source.rb +1 -1
- data/lib/rubocop/cop/corrector.rb +49 -27
- data/lib/rubocop/cop/correctors/alignment_corrector.rb +4 -8
- data/lib/rubocop/cop/correctors/condition_corrector.rb +1 -2
- data/lib/rubocop/cop/correctors/empty_line_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +3 -3
- data/lib/rubocop/cop/correctors/line_break_corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/parentheses_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/percent_literal_corrector.rb +1 -1
- data/lib/rubocop/cop/correctors/space_corrector.rb +1 -3
- data/lib/rubocop/cop/correctors/string_literal_corrector.rb +2 -2
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -3
- data/lib/rubocop/cop/generator.rb +4 -3
- data/lib/rubocop/cop/ignored_node.rb +1 -3
- data/lib/rubocop/cop/internal_affairs/offense_location_keyword.rb +1 -1
- data/lib/rubocop/cop/layout/array_alignment.rb +53 -10
- data/lib/rubocop/cop/layout/block_end_newline.rb +5 -3
- data/lib/rubocop/cop/layout/condition_position.rb +12 -2
- data/lib/rubocop/cop/layout/dot_position.rb +1 -1
- data/lib/rubocop/cop/layout/else_alignment.rb +8 -0
- data/lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb +2 -6
- data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +126 -0
- data/lib/rubocop/cop/layout/end_of_line.rb +2 -2
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +0 -2
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +14 -10
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/first_method_argument_line_break.rb +1 -3
- data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +4 -8
- data/lib/rubocop/cop/layout/heredoc_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/{tab.rb → indentation_style.rb} +48 -6
- data/lib/rubocop/cop/layout/indentation_width.rb +1 -3
- data/lib/rubocop/cop/layout/leading_comment_space.rb +1 -1
- data/lib/rubocop/cop/layout/line_length.rb +7 -4
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +2 -4
- data/lib/rubocop/cop/layout/multiline_method_argument_line_breaks.rb +1 -3
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +13 -4
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +3 -3
- data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +129 -0
- data/lib/rubocop/cop/layout/space_around_operators.rb +19 -2
- data/lib/rubocop/cop/layout/space_before_comment.rb +1 -3
- data/lib/rubocop/cop/layout/space_in_lambda_literal.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +1 -3
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +2 -2
- data/lib/rubocop/cop/layout/space_inside_range_literal.rb +2 -2
- data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +2 -6
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +2 -2
- data/lib/rubocop/cop/lint/ambiguous_operator.rb +40 -0
- data/lib/rubocop/cop/lint/ambiguous_regexp_literal.rb +14 -0
- data/lib/rubocop/cop/lint/boolean_symbol.rb +12 -0
- data/lib/rubocop/cop/lint/debugger.rb +1 -1
- data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +133 -0
- data/lib/rubocop/cop/lint/duplicate_methods.rb +1 -5
- data/lib/rubocop/cop/lint/empty_when.rb +29 -6
- data/lib/rubocop/cop/lint/ensure_return.rb +18 -1
- data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -7
- data/lib/rubocop/cop/lint/implicit_string_concatenation.rb +1 -1
- data/lib/rubocop/cop/lint/inherit_exception.rb +1 -1
- data/lib/rubocop/cop/lint/interpolation_check.rb +1 -1
- data/lib/rubocop/cop/lint/literal_as_condition.rb +10 -13
- data/lib/rubocop/cop/lint/literal_in_interpolation.rb +1 -1
- data/lib/rubocop/cop/lint/loop.rb +6 -4
- data/lib/rubocop/cop/lint/multiple_comparison.rb +1 -1
- data/lib/rubocop/cop/lint/nested_method_definition.rb +2 -2
- data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +2 -2
- data/lib/rubocop/cop/lint/number_conversion.rb +1 -1
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +31 -11
- data/lib/rubocop/cop/lint/percent_string_array.rb +2 -4
- data/lib/rubocop/cop/lint/raise_exception.rb +75 -0
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +1 -6
- data/lib/rubocop/cop/lint/redundant_string_coercion.rb +1 -1
- data/lib/rubocop/cop/lint/safe_navigation_chain.rb +1 -1
- data/lib/rubocop/cop/lint/struct_new_override.rb +58 -0
- data/lib/rubocop/cop/lint/suppressed_exception.rb +20 -25
- data/lib/rubocop/cop/lint/syntax.rb +1 -3
- data/lib/rubocop/cop/lint/unified_integer.rb +0 -2
- data/lib/rubocop/cop/lint/unused_method_argument.rb +32 -6
- data/lib/rubocop/cop/lint/uri_regexp.rb +4 -4
- data/lib/rubocop/cop/lint/useless_access_modifier.rb +13 -3
- data/lib/rubocop/cop/lint/useless_assignment.rb +3 -2
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +5 -0
- data/lib/rubocop/cop/migration/department_name.rb +21 -12
- 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/end_keyword_alignment.rb +6 -1
- data/lib/rubocop/cop/mixin/frozen_string_literal.rb +10 -1
- data/lib/rubocop/cop/mixin/hash_transform_method.rb +9 -3
- data/lib/rubocop/cop/mixin/line_length_help.rb +2 -1
- data/lib/rubocop/cop/mixin/method_complexity.rb +5 -0
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +1 -3
- data/lib/rubocop/cop/mixin/parser_diagnostic.rb +1 -1
- data/lib/rubocop/cop/mixin/statement_modifier.rb +7 -22
- data/lib/rubocop/cop/mixin/surrounding_space.rb +1 -3
- data/lib/rubocop/cop/mixin/target_ruby_version.rb +5 -1
- data/lib/rubocop/cop/mixin/trailing_comma.rb +2 -4
- data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +1 -1
- data/lib/rubocop/cop/naming/constant_name.rb +2 -1
- data/lib/rubocop/cop/naming/file_name.rb +1 -3
- data/lib/rubocop/cop/naming/heredoc_delimiter_naming.rb +1 -1
- data/lib/rubocop/cop/naming/method_name.rb +26 -0
- data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
- data/lib/rubocop/cop/registry.rb +13 -10
- data/lib/rubocop/cop/severity.rb +1 -3
- data/lib/rubocop/cop/style/access_modifier_declarations.rb +26 -6
- data/lib/rubocop/cop/style/alias.rb +4 -4
- data/lib/rubocop/cop/style/and_or.rb +7 -8
- data/lib/rubocop/cop/style/array_join.rb +1 -1
- data/lib/rubocop/cop/style/attr.rb +1 -3
- data/lib/rubocop/cop/style/block_delimiters.rb +2 -8
- data/lib/rubocop/cop/style/case_equality.rb +24 -1
- data/lib/rubocop/cop/style/character_literal.rb +2 -2
- data/lib/rubocop/cop/style/collection_methods.rb +2 -0
- data/lib/rubocop/cop/style/conditional_assignment.rb +9 -11
- data/lib/rubocop/cop/style/copyright.rb +1 -1
- data/lib/rubocop/cop/style/dir.rb +1 -1
- data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +49 -0
- data/lib/rubocop/cop/style/documentation.rb +43 -5
- data/lib/rubocop/cop/style/double_cop_disable_directive.rb +1 -1
- data/lib/rubocop/cop/style/double_negation.rb +41 -4
- data/lib/rubocop/cop/style/each_for_simple_loop.rb +1 -1
- data/lib/rubocop/cop/style/each_with_object.rb +3 -3
- data/lib/rubocop/cop/style/empty_literal.rb +1 -3
- data/lib/rubocop/cop/style/empty_method.rb +1 -5
- data/lib/rubocop/cop/style/end_block.rb +6 -0
- data/lib/rubocop/cop/style/even_odd.rb +1 -1
- data/lib/rubocop/cop/style/expand_path_arguments.rb +3 -3
- data/lib/rubocop/cop/style/exponential_notation.rb +119 -0
- data/lib/rubocop/cop/style/format_string.rb +2 -2
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +2 -4
- data/lib/rubocop/cop/style/guard_clause.rb +25 -2
- data/lib/rubocop/cop/style/hash_each_methods.rb +5 -3
- data/lib/rubocop/cop/style/hash_syntax.rb +15 -10
- data/lib/rubocop/cop/style/hash_transform_keys.rb +6 -2
- data/lib/rubocop/cop/style/hash_transform_values.rb +6 -5
- data/lib/rubocop/cop/style/if_unless_modifier.rb +23 -3
- data/lib/rubocop/cop/style/if_with_semicolon.rb +16 -0
- data/lib/rubocop/cop/style/inverse_methods.rb +9 -5
- data/lib/rubocop/cop/style/lambda.rb +3 -2
- data/lib/rubocop/cop/style/lambda_call.rb +1 -21
- 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/mixin_grouping.rb +1 -1
- data/lib/rubocop/cop/style/module_function.rb +58 -12
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +1 -1
- data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
- data/lib/rubocop/cop/style/multiline_when_then.rb +16 -1
- data/lib/rubocop/cop/style/mutable_constant.rb +2 -4
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +4 -4
- data/lib/rubocop/cop/style/next.rb +2 -2
- data/lib/rubocop/cop/style/nil_comparison.rb +1 -1
- data/lib/rubocop/cop/style/non_nil_check.rb +4 -4
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
- data/lib/rubocop/cop/style/numeric_literals.rb +1 -1
- data/lib/rubocop/cop/style/numeric_predicate.rb +1 -1
- data/lib/rubocop/cop/style/one_line_conditional.rb +6 -9
- data/lib/rubocop/cop/style/optional_arguments.rb +1 -1
- data/lib/rubocop/cop/style/or_assignment.rb +1 -1
- data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
- data/lib/rubocop/cop/style/perl_backrefs.rb +2 -2
- data/lib/rubocop/cop/style/proc.rb +1 -1
- data/lib/rubocop/cop/style/raise_args.rb +1 -1
- data/lib/rubocop/cop/style/random_with_offset.rb +3 -3
- data/lib/rubocop/cop/style/redundant_condition.rb +18 -6
- data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
- data/lib/rubocop/cop/style/redundant_exception.rb +3 -3
- data/lib/rubocop/cop/style/redundant_interpolation.rb +2 -2
- data/lib/rubocop/cop/style/redundant_parentheses.rb +2 -6
- data/lib/rubocop/cop/style/redundant_percent_q.rb +2 -2
- data/lib/rubocop/cop/style/redundant_return.rb +5 -7
- data/lib/rubocop/cop/style/redundant_self.rb +1 -1
- data/lib/rubocop/cop/style/redundant_sort.rb +2 -2
- data/lib/rubocop/cop/style/rescue_modifier.rb +1 -1
- data/lib/rubocop/cop/style/return_nil.rb +1 -1
- data/lib/rubocop/cop/style/safe_navigation.rb +3 -7
- data/lib/rubocop/cop/style/self_assignment.rb +1 -1
- data/lib/rubocop/cop/style/slicing_with_range.rb +39 -0
- data/lib/rubocop/cop/style/special_global_vars.rb +3 -7
- data/lib/rubocop/cop/style/stabby_lambda_parentheses.rb +1 -4
- data/lib/rubocop/cop/style/string_hash_keys.rb +1 -1
- data/lib/rubocop/cop/style/symbol_array.rb +1 -1
- data/lib/rubocop/cop/style/symbol_literal.rb +2 -2
- data/lib/rubocop/cop/style/ternary_parentheses.rb +2 -5
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +35 -0
- data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +41 -0
- data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +88 -0
- data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +44 -0
- data/lib/rubocop/cop/style/trailing_underscore_variable.rb +2 -6
- data/lib/rubocop/cop/style/trivial_accessors.rb +1 -1
- data/lib/rubocop/cop/style/unpack_first.rb +0 -4
- data/lib/rubocop/cop/style/variable_interpolation.rb +1 -1
- data/lib/rubocop/cop/style/while_until_modifier.rb +1 -1
- data/lib/rubocop/cop/style/word_array.rb +1 -1
- data/lib/rubocop/cop/style/zero_length_predicate.rb +1 -1
- data/lib/rubocop/cop/util.rb +24 -0
- data/lib/rubocop/cop/variable_force.rb +3 -9
- data/lib/rubocop/cop/variable_force/assignment.rb +1 -0
- data/lib/rubocop/cop/variable_force/branch.rb +2 -6
- data/lib/rubocop/cop/variable_force/scope.rb +1 -0
- data/lib/rubocop/cop/variable_force/variable.rb +3 -6
- data/lib/rubocop/ext/processed_source.rb +18 -0
- data/lib/rubocop/formatter/base_formatter.rb +0 -4
- data/lib/rubocop/formatter/clang_style_formatter.rb +1 -1
- data/lib/rubocop/formatter/disabled_config_formatter.rb +4 -12
- data/lib/rubocop/formatter/formatter_set.rb +1 -4
- data/lib/rubocop/formatter/junit_formatter.rb +17 -6
- data/lib/rubocop/formatter/pacman_formatter.rb +1 -1
- data/lib/rubocop/formatter/tap_formatter.rb +1 -1
- data/lib/rubocop/name_similarity.rb +12 -9
- data/lib/rubocop/options.rb +20 -13
- data/lib/rubocop/remote_config.rb +1 -3
- data/lib/rubocop/result_cache.rb +1 -3
- data/lib/rubocop/rspec/cop_helper.rb +2 -4
- data/lib/rubocop/rspec/expect_offense.rb +4 -10
- data/lib/rubocop/rspec/shared_contexts.rb +54 -20
- data/lib/rubocop/runner.rb +15 -12
- data/lib/rubocop/target_finder.rb +5 -7
- data/lib/rubocop/target_ruby.rb +2 -2
- data/lib/rubocop/version.rb +5 -3
- metadata +32 -77
- data/lib/rubocop/ast/builder.rb +0 -83
- data/lib/rubocop/ast/node.rb +0 -632
- 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 -57
- data/lib/rubocop/ast/node/block_node.rb +0 -117
- data/lib/rubocop/ast/node/break_node.rb +0 -17
- 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 -261
- 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 -13
- 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 -200
- data/lib/rubocop/cop/lint/end_in_method.rb +0 -40
- data/lib/rubocop/formatter/disabled_lines_formatter.rb +0 -57
- data/lib/rubocop/node_pattern.rb +0 -887
- data/lib/rubocop/processed_source.rb +0 -216
- data/lib/rubocop/string_util.rb +0 -14
- data/lib/rubocop/token.rb +0 -114
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `retry` nodes. This will be used in place of a
|
6
|
-
# plain node when the builder constructs the AST, making its methods
|
7
|
-
# available to all `retry` nodes within RuboCop.
|
8
|
-
class RetryNode < Node
|
9
|
-
include MethodDispatchNode
|
10
|
-
include ParameterizedNode
|
11
|
-
|
12
|
-
def arguments
|
13
|
-
[]
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `return` nodes. This will be used in place of a
|
6
|
-
# plain node when the builder constructs the AST, making its methods
|
7
|
-
# available to all `return` nodes within RuboCop.
|
8
|
-
class ReturnNode < Node
|
9
|
-
include MethodDispatchNode
|
10
|
-
include ParameterizedNode
|
11
|
-
|
12
|
-
# Returns the arguments of the `return`.
|
13
|
-
#
|
14
|
-
# @return [Array] The arguments of the `return`.
|
15
|
-
def arguments
|
16
|
-
if node_parts.one? && node_parts.first.begin_type?
|
17
|
-
node_parts.first.children
|
18
|
-
else
|
19
|
-
node_parts
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `sclass` nodes. This will be used in place of a
|
6
|
-
# plain node when the builder constructs the AST, making its methods
|
7
|
-
# available to all `sclass` nodes within RuboCop.
|
8
|
-
class SelfClassNode < Node
|
9
|
-
# The identifer for this `sclass` node. (Always `self`.)
|
10
|
-
#
|
11
|
-
# @return [Node] the identifer of the class
|
12
|
-
def identifier
|
13
|
-
node_parts[0]
|
14
|
-
end
|
15
|
-
|
16
|
-
# The body of this `sclass` node.
|
17
|
-
#
|
18
|
-
# @return [Node, nil] the body of the class
|
19
|
-
def body
|
20
|
-
node_parts[1]
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `send` nodes. This will be used in place of a plain
|
6
|
-
# node when the builder constructs the AST, making its methods available
|
7
|
-
# to all `send` nodes within RuboCop.
|
8
|
-
class SendNode < Node
|
9
|
-
include ParameterizedNode
|
10
|
-
include MethodDispatchNode
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `str`, `dstr`, and `xstr` nodes. This will be used
|
6
|
-
# in place of a plain node when the builder constructs the AST, making
|
7
|
-
# its methods available to all `str` nodes within RuboCop.
|
8
|
-
class StrNode < Node
|
9
|
-
include BasicLiteralNode
|
10
|
-
|
11
|
-
def heredoc?
|
12
|
-
loc.is_a?(Parser::Source::Map::Heredoc)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `super`- and `zsuper` nodes. This will be used in
|
6
|
-
# place of a plain node when the builder constructs the AST, making its
|
7
|
-
# methods available to all `super`- and `zsuper` nodes within RuboCop.
|
8
|
-
class SuperNode < Node
|
9
|
-
include ParameterizedNode
|
10
|
-
include MethodDispatchNode
|
11
|
-
|
12
|
-
# Custom destructuring method. This can be used to normalize
|
13
|
-
# destructuring for different variations of the node.
|
14
|
-
#
|
15
|
-
# @return [Array] the different parts of the `super` node
|
16
|
-
def node_parts
|
17
|
-
[nil, :super, *to_a]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `sym` nodes. This will be used in place of a
|
6
|
-
# plain node when the builder constructs the AST, making its methods
|
7
|
-
# available to all `sym` nodes within RuboCop.
|
8
|
-
class SymbolNode < Node
|
9
|
-
include BasicLiteralNode
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `until` nodes. This will be used in place of a plain
|
6
|
-
# node when the builder constructs the AST, making its methods available
|
7
|
-
# to all `until` nodes within RuboCop.
|
8
|
-
class UntilNode < Node
|
9
|
-
include ConditionalNode
|
10
|
-
include ModifierNode
|
11
|
-
|
12
|
-
# Returns the keyword of the `until` statement as a string.
|
13
|
-
#
|
14
|
-
# @return [String] the keyword of the `until` statement
|
15
|
-
def keyword
|
16
|
-
'until'
|
17
|
-
end
|
18
|
-
|
19
|
-
# Returns the inverse keyword of the `until` node as a string.
|
20
|
-
# Returns `while` for `until` nodes and vice versa.
|
21
|
-
#
|
22
|
-
# @return [String] the inverse keyword of the `until` statement
|
23
|
-
def inverse_keyword
|
24
|
-
'while'
|
25
|
-
end
|
26
|
-
|
27
|
-
# Checks whether the `until` node has a `do` keyword.
|
28
|
-
#
|
29
|
-
# @return [Boolean] whether the `until` node has a `do` keyword
|
30
|
-
def do?
|
31
|
-
loc.begin&.is?('do')
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `when` nodes. This will be used in place of a plain
|
6
|
-
# node when the builder constructs the AST, making its methods available
|
7
|
-
# to all `when` nodes within RuboCop.
|
8
|
-
class WhenNode < Node
|
9
|
-
# Returns an array of all the conditions in the `when` branch.
|
10
|
-
#
|
11
|
-
# @return [Array<Node>] an array of condition nodes
|
12
|
-
def conditions
|
13
|
-
node_parts[0...-1]
|
14
|
-
end
|
15
|
-
|
16
|
-
# Calls the given block for each condition node in the `when` branch.
|
17
|
-
# If no block is given, an `Enumerator` is returned.
|
18
|
-
#
|
19
|
-
# @return [self] if a block is given
|
20
|
-
# @return [Enumerator] if no block is given
|
21
|
-
def each_condition
|
22
|
-
return conditions.to_enum(__method__) unless block_given?
|
23
|
-
|
24
|
-
conditions.each do |condition|
|
25
|
-
yield condition
|
26
|
-
end
|
27
|
-
|
28
|
-
self
|
29
|
-
end
|
30
|
-
|
31
|
-
# Returns the index of the `when` branch within the `case` statement.
|
32
|
-
#
|
33
|
-
# @return [Integer] the index of the `when` branch
|
34
|
-
def branch_index
|
35
|
-
parent.when_branches.index(self)
|
36
|
-
end
|
37
|
-
|
38
|
-
# Checks whether the `when` node has a `then` keyword.
|
39
|
-
#
|
40
|
-
# @return [Boolean] whether the `when` node has a `then` keyword
|
41
|
-
def then?
|
42
|
-
loc.begin&.is?('then')
|
43
|
-
end
|
44
|
-
|
45
|
-
# Returns the body of the `when` node.
|
46
|
-
#
|
47
|
-
# @return [Node, nil] the body of the `when` node
|
48
|
-
def body
|
49
|
-
node_parts[-1]
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `while` nodes. This will be used in place of a plain
|
6
|
-
# node when the builder constructs the AST, making its methods available
|
7
|
-
# to all `while` nodes within RuboCop.
|
8
|
-
class WhileNode < Node
|
9
|
-
include ConditionalNode
|
10
|
-
include ModifierNode
|
11
|
-
|
12
|
-
# Returns the keyword of the `while` statement as a string.
|
13
|
-
#
|
14
|
-
# @return [String] the keyword of the `while` statement
|
15
|
-
def keyword
|
16
|
-
'while'
|
17
|
-
end
|
18
|
-
|
19
|
-
# Returns the inverse keyword of the `while` node as a string.
|
20
|
-
# Returns `until` for `while` nodes and vice versa.
|
21
|
-
#
|
22
|
-
# @return [String] the inverse keyword of the `while` statement
|
23
|
-
def inverse_keyword
|
24
|
-
'until'
|
25
|
-
end
|
26
|
-
|
27
|
-
# Checks whether the `until` node has a `do` keyword.
|
28
|
-
#
|
29
|
-
# @return [Boolean] whether the `until` node has a `do` keyword
|
30
|
-
def do?
|
31
|
-
loc.begin&.is?('do')
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# A node extension for `yield` nodes. This will be used in place of a plain
|
6
|
-
# node when the builder constructs the AST, making its methods available
|
7
|
-
# to all `yield` nodes within RuboCop.
|
8
|
-
class YieldNode < Node
|
9
|
-
include ParameterizedNode
|
10
|
-
include MethodDispatchNode
|
11
|
-
|
12
|
-
# Custom destructuring method. This can be used to normalize
|
13
|
-
# destructuring for different variations of the node.
|
14
|
-
#
|
15
|
-
# @return [Array] the different parts of the `send` node
|
16
|
-
def node_parts
|
17
|
-
[nil, :yield, *to_a]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
data/lib/rubocop/ast/sexp.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module AST
|
5
|
-
# This module provides a shorthand method to create a {Node} like
|
6
|
-
# `Parser::AST::Sexp`.
|
7
|
-
#
|
8
|
-
# @see https://www.rubydoc.info/gems/ast/AST/Sexp
|
9
|
-
module Sexp
|
10
|
-
# Creates a {Node} with type `type` and children `children`.
|
11
|
-
def s(type, *children)
|
12
|
-
Node.new(type, children)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,200 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# rubocop:disable Metrics/ModuleLength
|
4
|
-
module RuboCop
|
5
|
-
module AST
|
6
|
-
# Provides methods for traversing an AST.
|
7
|
-
# Does not transform an AST; for that, use Parser::AST::Processor.
|
8
|
-
# Override methods to perform custom processing. Remember to call `super`
|
9
|
-
# if you want to recursively process descendant nodes.
|
10
|
-
module Traversal
|
11
|
-
def walk(node)
|
12
|
-
return if node.nil?
|
13
|
-
|
14
|
-
send(:"on_#{node.type}", node)
|
15
|
-
nil
|
16
|
-
end
|
17
|
-
|
18
|
-
NO_CHILD_NODES = %i[true false nil int float complex
|
19
|
-
rational str sym regopt self lvar
|
20
|
-
ivar cvar gvar nth_ref back_ref cbase
|
21
|
-
arg restarg blockarg shadowarg
|
22
|
-
kwrestarg zsuper lambda redo retry
|
23
|
-
forward_args forwarded_args
|
24
|
-
match_var match_nil_pattern].freeze
|
25
|
-
ONE_CHILD_NODE = %i[splat kwsplat block_pass not break next
|
26
|
-
preexe postexe match_current_line defined?
|
27
|
-
arg_expr pin match_rest if_guard unless_guard
|
28
|
-
match_with_trailing_comma].freeze
|
29
|
-
MANY_CHILD_NODES = %i[dstr dsym xstr regexp array hash pair
|
30
|
-
mlhs masgn or_asgn and_asgn
|
31
|
-
undef alias args super yield or and
|
32
|
-
while_post until_post iflipflop eflipflop
|
33
|
-
match_with_lvasgn begin kwbegin return
|
34
|
-
in_match case_match in_pattern match_alt
|
35
|
-
match_as array_pattern array_pattern_with_tail
|
36
|
-
hash_pattern const_pattern].freeze
|
37
|
-
SECOND_CHILD_ONLY = %i[lvasgn ivasgn cvasgn gvasgn optarg kwarg
|
38
|
-
kwoptarg].freeze
|
39
|
-
|
40
|
-
NO_CHILD_NODES.each do |type|
|
41
|
-
module_eval("def on_#{type}(node); end", __FILE__, __LINE__)
|
42
|
-
end
|
43
|
-
|
44
|
-
ONE_CHILD_NODE.each do |type|
|
45
|
-
module_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
46
|
-
def on_#{type}(node)
|
47
|
-
if (child = node.children[0])
|
48
|
-
send(:"on_\#{child.type}", child)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
RUBY
|
52
|
-
end
|
53
|
-
|
54
|
-
MANY_CHILD_NODES.each do |type|
|
55
|
-
module_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
56
|
-
def on_#{type}(node)
|
57
|
-
node.children.each { |child| send(:"on_\#{child.type}", child) }
|
58
|
-
nil
|
59
|
-
end
|
60
|
-
RUBY
|
61
|
-
end
|
62
|
-
|
63
|
-
SECOND_CHILD_ONLY.each do |type|
|
64
|
-
# Guard clause is for nodes nested within mlhs
|
65
|
-
module_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
66
|
-
def on_#{type}(node)
|
67
|
-
if (child = node.children[1])
|
68
|
-
send(:"on_\#{child.type}", child)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
RUBY
|
72
|
-
end
|
73
|
-
|
74
|
-
def on_const(node)
|
75
|
-
return unless (child = node.children[0])
|
76
|
-
|
77
|
-
send(:"on_#{child.type}", child)
|
78
|
-
end
|
79
|
-
|
80
|
-
def on_casgn(node)
|
81
|
-
children = node.children
|
82
|
-
if (child = children[0]) # always const???
|
83
|
-
send(:"on_#{child.type}", child)
|
84
|
-
end
|
85
|
-
return unless (child = children[2])
|
86
|
-
|
87
|
-
send(:"on_#{child.type}", child)
|
88
|
-
end
|
89
|
-
|
90
|
-
def on_class(node)
|
91
|
-
children = node.children
|
92
|
-
child = children[0] # always const???
|
93
|
-
send(:"on_#{child.type}", child)
|
94
|
-
if (child = children[1])
|
95
|
-
send(:"on_#{child.type}", child)
|
96
|
-
end
|
97
|
-
return unless (child = children[2])
|
98
|
-
|
99
|
-
send(:"on_#{child.type}", child)
|
100
|
-
end
|
101
|
-
|
102
|
-
def on_def(node)
|
103
|
-
children = node.children
|
104
|
-
on_args(children[1])
|
105
|
-
return unless (child = children[2])
|
106
|
-
|
107
|
-
send(:"on_#{child.type}", child)
|
108
|
-
end
|
109
|
-
|
110
|
-
def on_send(node)
|
111
|
-
node.children.each_with_index do |child, i|
|
112
|
-
next if i == 1
|
113
|
-
|
114
|
-
send(:"on_#{child.type}", child) if child
|
115
|
-
end
|
116
|
-
nil
|
117
|
-
end
|
118
|
-
|
119
|
-
alias on_csend on_send
|
120
|
-
|
121
|
-
def on_op_asgn(node)
|
122
|
-
children = node.children
|
123
|
-
child = children[0]
|
124
|
-
send(:"on_#{child.type}", child)
|
125
|
-
child = children[2]
|
126
|
-
send(:"on_#{child.type}", child)
|
127
|
-
end
|
128
|
-
|
129
|
-
def on_defs(node)
|
130
|
-
children = node.children
|
131
|
-
child = children[0]
|
132
|
-
send(:"on_#{child.type}", child)
|
133
|
-
on_args(children[2])
|
134
|
-
return unless (child = children[3])
|
135
|
-
|
136
|
-
send(:"on_#{child.type}", child)
|
137
|
-
end
|
138
|
-
|
139
|
-
def on_if(node)
|
140
|
-
children = node.children
|
141
|
-
child = children[0]
|
142
|
-
send(:"on_#{child.type}", child)
|
143
|
-
if (child = children[1])
|
144
|
-
send(:"on_#{child.type}", child)
|
145
|
-
end
|
146
|
-
return unless (child = children[2])
|
147
|
-
|
148
|
-
send(:"on_#{child.type}", child)
|
149
|
-
end
|
150
|
-
|
151
|
-
def on_while(node)
|
152
|
-
children = node.children
|
153
|
-
child = children[0]
|
154
|
-
send(:"on_#{child.type}", child)
|
155
|
-
return unless (child = children[1])
|
156
|
-
|
157
|
-
send(:"on_#{child.type}", child)
|
158
|
-
end
|
159
|
-
|
160
|
-
alias on_until on_while
|
161
|
-
alias on_module on_while
|
162
|
-
alias on_sclass on_while
|
163
|
-
|
164
|
-
def on_block(node)
|
165
|
-
children = node.children
|
166
|
-
child = children[0]
|
167
|
-
send(:"on_#{child.type}", child) # can be send, zsuper...
|
168
|
-
on_args(children[1])
|
169
|
-
return unless (child = children[2])
|
170
|
-
|
171
|
-
send(:"on_#{child.type}", child)
|
172
|
-
end
|
173
|
-
|
174
|
-
def on_case(node)
|
175
|
-
node.children.each do |child|
|
176
|
-
send(:"on_#{child.type}", child) if child
|
177
|
-
end
|
178
|
-
nil
|
179
|
-
end
|
180
|
-
|
181
|
-
alias on_rescue on_case
|
182
|
-
alias on_resbody on_case
|
183
|
-
alias on_ensure on_case
|
184
|
-
alias on_for on_case
|
185
|
-
alias on_when on_case
|
186
|
-
alias on_irange on_case
|
187
|
-
alias on_erange on_case
|
188
|
-
|
189
|
-
def on_numblock(node)
|
190
|
-
children = node.children
|
191
|
-
child = children[0]
|
192
|
-
send(:"on_#{child.type}", child)
|
193
|
-
return unless (child = children[2])
|
194
|
-
|
195
|
-
send(:"on_#{child.type}", child)
|
196
|
-
end
|
197
|
-
end
|
198
|
-
end
|
199
|
-
end
|
200
|
-
# rubocop:enable Metrics/ModuleLength
|