rubocop 1.75.3 → 1.75.5
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/lib/rubocop/cop/layout/hash_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/leading_comment_space.rb +13 -1
- data/lib/rubocop/cop/layout/space_after_semicolon.rb +10 -0
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +4 -1
- data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +3 -0
- data/lib/rubocop/cop/lint/array_literal_in_regexp.rb +2 -3
- data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
- data/lib/rubocop/cop/lint/circular_argument_reference.rb +2 -5
- data/lib/rubocop/cop/lint/literal_as_condition.rb +25 -11
- data/lib/rubocop/cop/lint/void.rb +2 -2
- data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +15 -14
- data/lib/rubocop/cop/mixin/trailing_comma.rb +6 -2
- data/lib/rubocop/cop/style/arguments_forwarding.rb +4 -1
- data/lib/rubocop/cop/style/class_and_module_children.rb +12 -2
- data/lib/rubocop/cop/style/comparable_between.rb +2 -2
- data/lib/rubocop/cop/style/identical_conditional_branches.rb +3 -3
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +3 -0
- data/lib/rubocop/cop/style/redundant_parentheses.rb +11 -3
- data/lib/rubocop/cop/style/safe_navigation.rb +1 -1
- data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +7 -1
- data/lib/rubocop/rspec/cop_helper.rb +2 -2
- data/lib/rubocop/rspec/shared_contexts.rb +1 -2
- data/lib/rubocop/version.rb +1 -1
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9421b54201da724554271e44969dd9b78ea86635ba622fd5d3f1807d9e3e3530
|
4
|
+
data.tar.gz: 6f76b18333faee3119a32957b72a5906a9a99cde620b95dc88014b1ebdbfa4f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfbad1a5c263aa4de3704954e0835a71d4d6b56bbf564dfec23dc1cc7b75913ae064ddf70a01c942a1ebfb3502fe881d840826a306ce24ed450747058f59541e
|
7
|
+
data.tar.gz: 88be3812e81036e0e8dde18c38548052f447ae76cf3195fc1b16189eb4c5d7e5b460f8425ecee663d96bfcb4c543f592f8471b7306906262426894fa76301da1
|
@@ -250,7 +250,7 @@ module RuboCop
|
|
250
250
|
reset!
|
251
251
|
|
252
252
|
alignment_for(first_pair).each do |alignment|
|
253
|
-
delta = alignment.deltas_for_first_pair(first_pair
|
253
|
+
delta = alignment.deltas_for_first_pair(first_pair)
|
254
254
|
check_delta delta, node: first_pair, alignment: alignment
|
255
255
|
end
|
256
256
|
|
@@ -58,6 +58,12 @@ module RuboCop
|
|
58
58
|
# attr_reader :name #: String
|
59
59
|
# attr_reader :age #: Integer?
|
60
60
|
#
|
61
|
+
# #: (
|
62
|
+
# #| Integer,
|
63
|
+
# #| String
|
64
|
+
# #| ) -> void
|
65
|
+
# def foo; end
|
66
|
+
#
|
61
67
|
# @example AllowRBSInlineAnnotation: true
|
62
68
|
#
|
63
69
|
# # good
|
@@ -67,6 +73,12 @@ module RuboCop
|
|
67
73
|
# attr_reader :name #: String
|
68
74
|
# attr_reader :age #: Integer?
|
69
75
|
#
|
76
|
+
# #: (
|
77
|
+
# #| Integer,
|
78
|
+
# #| String
|
79
|
+
# #| ) -> void
|
80
|
+
# def foo; end
|
81
|
+
#
|
70
82
|
# @example AllowSteepAnnotation: false (default)
|
71
83
|
#
|
72
84
|
# # bad
|
@@ -175,7 +187,7 @@ module RuboCop
|
|
175
187
|
end
|
176
188
|
|
177
189
|
def rbs_inline_annotation?(comment)
|
178
|
-
allow_rbs_inline_annotation? && comment.text.start_with?(/#:|#\[.+\]
|
190
|
+
allow_rbs_inline_annotation? && comment.text.start_with?(/#:|#\[.+\]|#\|/)
|
179
191
|
end
|
180
192
|
|
181
193
|
def allow_steep_annotation?
|
@@ -23,6 +23,16 @@ module RuboCop
|
|
23
23
|
def kind(token)
|
24
24
|
'semicolon' if token.semicolon?
|
25
25
|
end
|
26
|
+
|
27
|
+
def space_missing?(token1, token2)
|
28
|
+
super && !semicolon_sequence?(token1, token2)
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def semicolon_sequence?(token, next_token)
|
34
|
+
token.semicolon? && next_token.semicolon?
|
35
|
+
end
|
26
36
|
end
|
27
37
|
end
|
28
38
|
end
|
@@ -6,6 +6,8 @@ module RuboCop
|
|
6
6
|
# Checks that brackets used for array literals have or don't have
|
7
7
|
# surrounding space depending on configuration.
|
8
8
|
#
|
9
|
+
# Array pattern matching is handled in the same way.
|
10
|
+
#
|
9
11
|
# @example EnforcedStyle: no_space (default)
|
10
12
|
# # The `no_space` style enforces that array literals have
|
11
13
|
# # no surrounding space.
|
@@ -82,7 +84,7 @@ module RuboCop
|
|
82
84
|
EMPTY_MSG = '%<command>s space inside empty array brackets.'
|
83
85
|
|
84
86
|
def on_array(node)
|
85
|
-
return
|
87
|
+
return if node.array_type? && !node.square_brackets?
|
86
88
|
|
87
89
|
tokens, left, right = array_brackets(node)
|
88
90
|
|
@@ -95,6 +97,7 @@ module RuboCop
|
|
95
97
|
|
96
98
|
issue_offenses(node, left, right, start_ok, end_ok)
|
97
99
|
end
|
100
|
+
alias on_array_pattern on_array
|
98
101
|
|
99
102
|
private
|
100
103
|
|
@@ -6,6 +6,8 @@ module RuboCop
|
|
6
6
|
# Checks that braces used for hash literals have or don't have
|
7
7
|
# surrounding space depending on configuration.
|
8
8
|
#
|
9
|
+
# Hash pattern matching is handled in the same way.
|
10
|
+
#
|
9
11
|
# @example EnforcedStyle: space (default)
|
10
12
|
# # The `space` style enforces that hash literals have
|
11
13
|
# # surrounding space.
|
@@ -87,6 +89,7 @@ module RuboCop
|
|
87
89
|
check(tokens[-2], tokens[-1]) if tokens.size > 2
|
88
90
|
check_whitespace_only_hash(node) if enforce_no_space_style_for_empty_braces?
|
89
91
|
end
|
92
|
+
alias on_hash_pattern on_hash
|
90
93
|
|
91
94
|
private
|
92
95
|
|
@@ -51,10 +51,9 @@ module RuboCop
|
|
51
51
|
'in a regexp.'
|
52
52
|
|
53
53
|
def on_interpolation(begin_node)
|
54
|
-
final_node = begin_node.children.last
|
55
|
-
|
56
|
-
return unless begin_node.parent.regexp_type?
|
54
|
+
return unless (final_node = begin_node.children.last)
|
57
55
|
return unless final_node.array_type?
|
56
|
+
return unless begin_node.parent.regexp_type?
|
58
57
|
|
59
58
|
if array_of_literal_values?(final_node)
|
60
59
|
register_array_of_literal_values(begin_node, final_node)
|
@@ -48,7 +48,7 @@ module RuboCop
|
|
48
48
|
def autocorrect(corrector, node)
|
49
49
|
boolean_literal = node.source.delete(':')
|
50
50
|
parent = node.parent
|
51
|
-
if parent&.pair_type? && node.equal?(parent.children[0])
|
51
|
+
if parent&.pair_type? && parent.colon? && node.equal?(parent.children[0])
|
52
52
|
corrector.remove(parent.loc.operator)
|
53
53
|
boolean_literal = "#{node.source} =>"
|
54
54
|
end
|
@@ -6,9 +6,8 @@ module RuboCop
|
|
6
6
|
# Checks for circular argument references in optional keyword
|
7
7
|
# arguments and optional ordinal arguments.
|
8
8
|
#
|
9
|
-
# This
|
10
|
-
#
|
11
|
-
# NOTE: This syntax is no longer valid on Ruby 2.7 or higher.
|
9
|
+
# NOTE: This syntax was made invalid on Ruby 2.7 - Ruby 3.3 but is allowed
|
10
|
+
# again since Ruby 3.4.
|
12
11
|
#
|
13
12
|
# @example
|
14
13
|
#
|
@@ -41,8 +40,6 @@ module RuboCop
|
|
41
40
|
|
42
41
|
MSG = 'Circular argument reference - `%<arg_name>s`.'
|
43
42
|
|
44
|
-
maximum_target_ruby_version 2.6
|
45
|
-
|
46
43
|
def on_kwoptarg(node)
|
47
44
|
check_for_circular_argument_references(*node)
|
48
45
|
end
|
@@ -57,13 +57,9 @@ module RuboCop
|
|
57
57
|
def on_if(node)
|
58
58
|
cond = condition(node)
|
59
59
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
else
|
64
|
-
correct_if_node(node, cond, true) if cond.truthy_literal?
|
65
|
-
correct_if_node(node, cond, false) if cond.falsey_literal?
|
66
|
-
end
|
60
|
+
return unless cond.falsey_literal? || cond.truthy_literal?
|
61
|
+
|
62
|
+
correct_if_node(node, cond)
|
67
63
|
end
|
68
64
|
|
69
65
|
def on_while(node)
|
@@ -232,9 +228,27 @@ module RuboCop
|
|
232
228
|
)
|
233
229
|
end
|
234
230
|
|
235
|
-
|
236
|
-
|
237
|
-
|
231
|
+
def condition_evaluation(node, cond)
|
232
|
+
if node.unless?
|
233
|
+
cond.falsey_literal?
|
234
|
+
else
|
235
|
+
cond.truthy_literal?
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
240
|
+
def correct_if_node(node, cond)
|
241
|
+
result = condition_evaluation(node, cond)
|
242
|
+
|
243
|
+
if node.elsif? && result
|
244
|
+
add_offense(cond) do |corrector|
|
245
|
+
corrector.replace(node, "else\n #{node.if_branch.source}")
|
246
|
+
end
|
247
|
+
elsif node.elsif? && !result
|
248
|
+
add_offense(cond) do |corrector|
|
249
|
+
corrector.replace(node, "else\n #{node.else_branch.source}")
|
250
|
+
end
|
251
|
+
elsif node.if_branch && result
|
238
252
|
add_offense(cond) do |corrector|
|
239
253
|
corrector.replace(node, node.if_branch.source)
|
240
254
|
end
|
@@ -252,7 +266,7 @@ module RuboCop
|
|
252
266
|
end
|
253
267
|
end
|
254
268
|
end
|
255
|
-
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
269
|
+
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
256
270
|
end
|
257
271
|
end
|
258
272
|
end
|
@@ -128,8 +128,8 @@ module RuboCop
|
|
128
128
|
|
129
129
|
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
130
130
|
def check_void_op(node, &block)
|
131
|
-
node = node.children.first while node
|
132
|
-
return unless node
|
131
|
+
node = node.children.first while node&.begin_type?
|
132
|
+
return unless node&.call_type? && OPERATORS.include?(node.method_name)
|
133
133
|
if !UNARY_OPERATORS.include?(node.method_name) && node.loc.dot && node.arguments.none?
|
134
134
|
return
|
135
135
|
end
|
@@ -10,7 +10,7 @@ module RuboCop
|
|
10
10
|
true
|
11
11
|
end
|
12
12
|
|
13
|
-
def deltas_for_first_pair(first_pair
|
13
|
+
def deltas_for_first_pair(first_pair)
|
14
14
|
{
|
15
15
|
separator: separator_delta(first_pair),
|
16
16
|
value: value_delta(first_pair)
|
@@ -81,13 +81,7 @@ module RuboCop
|
|
81
81
|
class TableAlignment
|
82
82
|
include ValueAlignment
|
83
83
|
|
84
|
-
def
|
85
|
-
self.max_key_width = 0
|
86
|
-
end
|
87
|
-
|
88
|
-
def deltas_for_first_pair(first_pair, node)
|
89
|
-
self.max_key_width = node.keys.map { |key| key.source.length }.max
|
90
|
-
|
84
|
+
def deltas_for_first_pair(first_pair)
|
91
85
|
separator_delta = separator_delta(first_pair, first_pair, 0)
|
92
86
|
{
|
93
87
|
separator: separator_delta,
|
@@ -97,30 +91,37 @@ module RuboCop
|
|
97
91
|
|
98
92
|
private
|
99
93
|
|
100
|
-
attr_accessor :max_key_width
|
101
|
-
|
102
94
|
def key_delta(first_pair, current_pair)
|
103
95
|
first_pair.key_delta(current_pair)
|
104
96
|
end
|
105
97
|
|
106
98
|
def hash_rocket_delta(first_pair, current_pair)
|
107
|
-
first_pair.loc.column + max_key_width + 1 -
|
99
|
+
first_pair.loc.column + max_key_width(first_pair.parent) + 1 -
|
100
|
+
current_pair.loc.operator.column
|
108
101
|
end
|
109
102
|
|
110
103
|
def value_delta(first_pair, current_pair)
|
111
104
|
correct_value_column = first_pair.key.loc.column +
|
112
|
-
|
113
|
-
|
105
|
+
max_key_width(first_pair.parent) +
|
106
|
+
max_delimiter_width(first_pair.parent)
|
114
107
|
|
115
108
|
current_pair.value_omission? ? 0 : correct_value_column - current_pair.value.loc.column
|
116
109
|
end
|
110
|
+
|
111
|
+
def max_key_width(hash_node)
|
112
|
+
hash_node.keys.map { |key| key.source.length }.max
|
113
|
+
end
|
114
|
+
|
115
|
+
def max_delimiter_width(hash_node)
|
116
|
+
hash_node.pairs.map { |pair| pair.delimiter(true).length }.max
|
117
|
+
end
|
117
118
|
end
|
118
119
|
|
119
120
|
# Handles calculation of deltas when the enforced style is 'separator'.
|
120
121
|
class SeparatorAlignment
|
121
122
|
include ValueAlignment
|
122
123
|
|
123
|
-
def deltas_for_first_pair(
|
124
|
+
def deltas_for_first_pair(_first_pair)
|
124
125
|
{}
|
125
126
|
end
|
126
127
|
|
@@ -107,7 +107,7 @@ module RuboCop
|
|
107
107
|
# of the argument is not considered multiline, even if the argument
|
108
108
|
# itself might span multiple lines.
|
109
109
|
def allowed_multiline_argument?(node)
|
110
|
-
elements(node).one? && !Util.begins_its_line?(node
|
110
|
+
elements(node).one? && !Util.begins_its_line?(node_end_location(node))
|
111
111
|
end
|
112
112
|
|
113
113
|
def elements(node)
|
@@ -127,10 +127,14 @@ module RuboCop
|
|
127
127
|
|
128
128
|
def no_elements_on_same_line?(node)
|
129
129
|
items = elements(node).map(&:source_range)
|
130
|
-
items << node
|
130
|
+
items << node_end_location(node)
|
131
131
|
items.each_cons(2).none? { |a, b| on_same_line?(a, b) }
|
132
132
|
end
|
133
133
|
|
134
|
+
def node_end_location(node)
|
135
|
+
node.loc.end || node.source_range.end.adjust(begin_pos: -1)
|
136
|
+
end
|
137
|
+
|
134
138
|
def on_same_line?(range1, range2)
|
135
139
|
range1.last_line == range2.line
|
136
140
|
end
|
@@ -146,7 +146,7 @@ module RuboCop
|
|
146
146
|
minimum_target_ruby_version 2.7
|
147
147
|
|
148
148
|
FORWARDING_LVAR_TYPES = %i[splat kwsplat block_pass].freeze
|
149
|
-
ADDITIONAL_ARG_TYPES = %i[lvar arg].freeze
|
149
|
+
ADDITIONAL_ARG_TYPES = %i[lvar arg optarg].freeze
|
150
150
|
|
151
151
|
FORWARDING_MSG = 'Use shorthand syntax `...` for arguments forwarding.'
|
152
152
|
ARGS_MSG = 'Use anonymous positional arguments forwarding (`*`).'
|
@@ -479,6 +479,9 @@ module RuboCop
|
|
479
479
|
end
|
480
480
|
|
481
481
|
def ruby_32_only_anonymous_forwarding?
|
482
|
+
# A block argument and an anonymous block argument are never passed together.
|
483
|
+
return false if @send_node.each_ancestor(:any_block).any?
|
484
|
+
|
482
485
|
def_all_anonymous_args?(@def_node) && send_all_anonymous_args?(@send_node)
|
483
486
|
end
|
484
487
|
|
@@ -149,9 +149,9 @@ module RuboCop
|
|
149
149
|
return unless node.body.children.last
|
150
150
|
|
151
151
|
last_child_leading_spaces = leading_spaces(node.body.children.last)
|
152
|
-
return if leading_spaces(node)
|
152
|
+
return if spaces_size(leading_spaces(node)) == spaces_size(last_child_leading_spaces)
|
153
153
|
|
154
|
-
column_delta = configured_indentation_width - last_child_leading_spaces
|
154
|
+
column_delta = configured_indentation_width - spaces_size(last_child_leading_spaces)
|
155
155
|
return if column_delta.zero?
|
156
156
|
|
157
157
|
AlignmentCorrector.correct(corrector, processed_source, node, column_delta)
|
@@ -161,6 +161,16 @@ module RuboCop
|
|
161
161
|
node.source_range.source_line[/\A\s*/]
|
162
162
|
end
|
163
163
|
|
164
|
+
def spaces_size(spaces_string)
|
165
|
+
mapping = { "\t" => tab_indentation_width }
|
166
|
+
spaces_string.chars.sum { |character| mapping.fetch(character, 1) }
|
167
|
+
end
|
168
|
+
|
169
|
+
def tab_indentation_width
|
170
|
+
config.for_cop('Layout/IndentationStyle')['IndentationWidth'] ||
|
171
|
+
configured_indentation_width
|
172
|
+
end
|
173
|
+
|
164
174
|
def check_style(node, body, style)
|
165
175
|
return if node.identifier.namespace&.cbase_type?
|
166
176
|
|
@@ -61,8 +61,8 @@ module RuboCop
|
|
61
61
|
|
62
62
|
def register_offense(node, min_and_value, max_and_value)
|
63
63
|
value = (min_and_value & max_and_value).first
|
64
|
-
min = min_and_value.find { _1 != value }
|
65
|
-
max = max_and_value.find { _1 != value }
|
64
|
+
min = min_and_value.find { _1 != value } || value
|
65
|
+
max = max_and_value.find { _1 != value } || value
|
66
66
|
|
67
67
|
prefer = "#{value.source}.between?(#{min.source}, #{max.source})"
|
68
68
|
add_offense(node, message: format(MSG, prefer: prefer)) do |corrector|
|
@@ -189,7 +189,7 @@ module RuboCop
|
|
189
189
|
end
|
190
190
|
end
|
191
191
|
|
192
|
-
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
|
192
|
+
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
|
193
193
|
def check_expressions(node, expressions, insert_position)
|
194
194
|
return if expressions.any?(&:nil?)
|
195
195
|
|
@@ -197,7 +197,7 @@ module RuboCop
|
|
197
197
|
|
198
198
|
expressions.each do |expression|
|
199
199
|
add_offense(expression) do |corrector|
|
200
|
-
next if node.if_type? && node.ternary?
|
200
|
+
next if node.if_type? && (node.ternary? || node.then?)
|
201
201
|
|
202
202
|
range = range_by_whole_lines(expression.source_range, include_final_newline: true)
|
203
203
|
corrector.remove(range)
|
@@ -213,7 +213,7 @@ module RuboCop
|
|
213
213
|
end
|
214
214
|
end
|
215
215
|
end
|
216
|
-
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
|
216
|
+
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
|
217
217
|
|
218
218
|
def correct_assignment(corrector, node, expression, insert_position)
|
219
219
|
if insert_position == :after_condition
|
@@ -222,6 +222,9 @@ module RuboCop
|
|
222
222
|
end
|
223
223
|
|
224
224
|
def unary_literal?(node)
|
225
|
+
# NOTE: should be removed after releasing https://github.com/rubocop/rubocop-ast/pull/379
|
226
|
+
return node.source.match?(/\A[+-]/) if node.complex_type?
|
227
|
+
|
225
228
|
(node.numeric_type? && node.sign?) ||
|
226
229
|
(node.parent&.send_type? && node.parent.unary_operation?)
|
227
230
|
end
|
@@ -180,10 +180,18 @@ module RuboCop
|
|
180
180
|
# @!method interpolation?(node)
|
181
181
|
def_node_matcher :interpolation?, '[^begin ^^dstr]'
|
182
182
|
|
183
|
-
def argument_of_parenthesized_method_call?(
|
184
|
-
|
183
|
+
def argument_of_parenthesized_method_call?(begin_node)
|
184
|
+
node = begin_node.children.first
|
185
|
+
return false if node.basic_conditional? || method_call_parentheses_required?(node)
|
186
|
+
return false unless (parent = begin_node.parent)
|
187
|
+
|
188
|
+
parent.call_type? && parent.parenthesized? && parent.receiver != begin_node
|
189
|
+
end
|
190
|
+
|
191
|
+
def method_call_parentheses_required?(node)
|
192
|
+
return false unless node.call_type?
|
185
193
|
|
186
|
-
|
194
|
+
(node.receiver.nil? || node.loc.dot) && node.arguments.any?
|
187
195
|
end
|
188
196
|
|
189
197
|
def allow_in_multiline_conditions?
|
@@ -321,7 +321,7 @@ module RuboCop
|
|
321
321
|
end
|
322
322
|
|
323
323
|
def matching_call_nodes?(left, right)
|
324
|
-
return false unless left && right
|
324
|
+
return false unless left && right.respond_to?(:call_type?)
|
325
325
|
|
326
326
|
left.call_type? && right.call_type? && left.children == right.children
|
327
327
|
end
|
@@ -79,10 +79,16 @@ module RuboCop
|
|
79
79
|
# # bad
|
80
80
|
# method(1, 2,)
|
81
81
|
#
|
82
|
+
# # bad
|
83
|
+
# object[1, 2,]
|
84
|
+
#
|
82
85
|
# # good
|
83
86
|
# method(1, 2)
|
84
87
|
#
|
85
88
|
# # good
|
89
|
+
# object[1, 2]
|
90
|
+
#
|
91
|
+
# # good
|
86
92
|
# method(
|
87
93
|
# 1,
|
88
94
|
# 2
|
@@ -96,7 +102,7 @@ module RuboCop
|
|
96
102
|
end
|
97
103
|
|
98
104
|
def on_send(node)
|
99
|
-
return unless node.arguments? && node.parenthesized?
|
105
|
+
return unless node.arguments? && (node.parenthesized? || node.method?(:[]))
|
100
106
|
|
101
107
|
check(node, node.arguments, 'parameter of %<article>s method call',
|
102
108
|
node.last_argument.source_range.end_pos,
|
@@ -11,8 +11,8 @@ module CopHelper
|
|
11
11
|
ENV['PARSER_ENGINE'] == 'parser_prism' ? 3.3 : RuboCop::TargetRuby::DEFAULT_VERSION
|
12
12
|
end
|
13
13
|
let(:parser_engine) do
|
14
|
-
# The maximum version Parser can parse is 3.
|
15
|
-
ruby_version >= 3.
|
14
|
+
# The maximum version Parser can correctly parse is 3.3.
|
15
|
+
ruby_version >= 3.4 ? :parser_prism : ENV.fetch('PARSER_ENGINE', :parser_whitequark).to_sym
|
16
16
|
end
|
17
17
|
let(:rails_version) { false }
|
18
18
|
|
data/lib/rubocop/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.75.
|
4
|
+
version: 1.75.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
8
8
|
- Jonas Arvidsson
|
9
9
|
- Yuji Nakayama
|
10
|
+
autorequire:
|
10
11
|
bindir: exe
|
11
12
|
cert_chain: []
|
12
|
-
date: 2025-
|
13
|
+
date: 2025-05-05 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: json
|
@@ -1080,11 +1081,12 @@ licenses:
|
|
1080
1081
|
- MIT
|
1081
1082
|
metadata:
|
1082
1083
|
homepage_uri: https://rubocop.org/
|
1083
|
-
changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.75.
|
1084
|
+
changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.75.5
|
1084
1085
|
source_code_uri: https://github.com/rubocop/rubocop/
|
1085
1086
|
documentation_uri: https://docs.rubocop.org/rubocop/1.75/
|
1086
1087
|
bug_tracker_uri: https://github.com/rubocop/rubocop/issues
|
1087
1088
|
rubygems_mfa_required: 'true'
|
1089
|
+
post_install_message:
|
1088
1090
|
rdoc_options: []
|
1089
1091
|
require_paths:
|
1090
1092
|
- lib
|
@@ -1099,7 +1101,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1099
1101
|
- !ruby/object:Gem::Version
|
1100
1102
|
version: '0'
|
1101
1103
|
requirements: []
|
1102
|
-
rubygems_version: 3.
|
1104
|
+
rubygems_version: 3.3.7
|
1105
|
+
signing_key:
|
1103
1106
|
specification_version: 4
|
1104
1107
|
summary: Automatic Ruby code style checking tool.
|
1105
1108
|
test_files: []
|