rubocop-ast 1.28.1 → 1.30.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rubocop/ast/node/block_node.rb +18 -0
- data/lib/rubocop/ast/node/if_node.rb +1 -1
- data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +17 -6
- data/lib/rubocop/ast/node_pattern/lexer.rex.rb +1 -1
- data/lib/rubocop/ast/node_pattern/node.rb +2 -2
- data/lib/rubocop/ast/node_pattern/parser.racc.rb +3 -1
- data/lib/rubocop/ast/version.rb +1 -1
- metadata +3 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84c917625cddd9b79c0979e269fdd324f8119b9d2b3c6081fae0ef449669bea5
|
4
|
+
data.tar.gz: 8d053cac9c670216326df54b5b7b6a8961bf89614defa16e93ad1c557a8b25a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c95bd42a576592153d70f61367aafacd9677021515534a487706b736cc02cfcf717fc6db39e3df7212088301383cb7d60af9b929b4ca65b7baa5a66f5eca059e
|
7
|
+
data.tar.gz: f0d99d3695e651ec10709dd729696a2b137c3b11603598164b433f61583218b16807c44ea1637ebe1922b496b8472795e4d54a4dc1312908f049e6f43b242ff8
|
@@ -21,6 +21,24 @@ module RuboCop
|
|
21
21
|
node_parts[0]
|
22
22
|
end
|
23
23
|
|
24
|
+
# A shorthand for getting the first argument of this block.
|
25
|
+
# Equivalent to `arguments.first`.
|
26
|
+
#
|
27
|
+
# @return [Node, nil] the first argument of this block,
|
28
|
+
# or `nil` if there are no arguments
|
29
|
+
def first_argument
|
30
|
+
arguments[0]
|
31
|
+
end
|
32
|
+
|
33
|
+
# A shorthand for getting the last argument of this block.
|
34
|
+
# Equivalent to `arguments.last`.
|
35
|
+
#
|
36
|
+
# @return [Node, nil] the last argument of this block,
|
37
|
+
# or `nil` if there are no arguments
|
38
|
+
def last_argument
|
39
|
+
arguments[-1]
|
40
|
+
end
|
41
|
+
|
24
42
|
# The arguments of this block.
|
25
43
|
# Note that if the block has destructured arguments, `arguments` will
|
26
44
|
# return a `mlhs` node, whereas `argument_list` will return only
|
@@ -5,7 +5,7 @@ module RuboCop
|
|
5
5
|
# Common functionality for nodes that are a kind of method dispatch:
|
6
6
|
# `send`, `csend`, `super`, `zsuper`, `yield`, `defined?`,
|
7
7
|
# and (modern only): `index`, `indexasgn`, `lambda`
|
8
|
-
module MethodDispatchNode
|
8
|
+
module MethodDispatchNode # rubocop:disable Metrics/ModuleLength
|
9
9
|
extend NodePattern::Macros
|
10
10
|
include MethodIdentifierPredicates
|
11
11
|
|
@@ -28,6 +28,17 @@ module RuboCop
|
|
28
28
|
node_parts[1]
|
29
29
|
end
|
30
30
|
|
31
|
+
# The source range for the method name or keyword that dispatches this call.
|
32
|
+
#
|
33
|
+
# @return [Parser::Source::Range] the source range for the method name or keyword
|
34
|
+
def selector
|
35
|
+
if loc.respond_to? :keyword
|
36
|
+
loc.keyword
|
37
|
+
else
|
38
|
+
loc.selector
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
31
42
|
# The `block` or `numblock` node associated with this method dispatch, if any.
|
32
43
|
#
|
33
44
|
# @return [BlockNode, nil] the `block` or `numblock` node associated with this method
|
@@ -147,7 +158,7 @@ module RuboCop
|
|
147
158
|
#
|
148
159
|
# @return [Boolean] whether the method is the implicit form of `#call`
|
149
160
|
def implicit_call?
|
150
|
-
method?(:call) && !
|
161
|
+
method?(:call) && !selector
|
151
162
|
end
|
152
163
|
|
153
164
|
# Whether this method dispatch has an explicit block.
|
@@ -222,9 +233,9 @@ module RuboCop
|
|
222
233
|
#
|
223
234
|
# @return [Boolean] whether this method is a unary operation
|
224
235
|
def unary_operation?
|
225
|
-
return false unless
|
236
|
+
return false unless selector
|
226
237
|
|
227
|
-
operator_method? && loc.expression.begin_pos ==
|
238
|
+
operator_method? && loc.expression.begin_pos == selector.begin_pos
|
228
239
|
end
|
229
240
|
|
230
241
|
# Checks whether this is a binary operation.
|
@@ -235,9 +246,9 @@ module RuboCop
|
|
235
246
|
#
|
236
247
|
# @return [Boolean] whether this method is a binary operation
|
237
248
|
def binary_operation?
|
238
|
-
return false unless
|
249
|
+
return false unless selector
|
239
250
|
|
240
|
-
operator_method? && loc.expression.begin_pos !=
|
251
|
+
operator_method? && loc.expression.begin_pos != selector.begin_pos
|
241
252
|
end
|
242
253
|
|
243
254
|
private
|
@@ -207,7 +207,7 @@ module RuboCop
|
|
207
207
|
include ForbidInSeqHead
|
208
208
|
|
209
209
|
def arity
|
210
|
-
min, max = children.map
|
210
|
+
min, max = children.map { |child| child.arity_range.minmax }.transpose.map(&:sum)
|
211
211
|
min == max ? min || 0 : min..max # NOTE: || 0 for empty case, where min == max == nil.
|
212
212
|
end
|
213
213
|
|
@@ -223,7 +223,7 @@ module RuboCop
|
|
223
223
|
# Node class for `{ ... }`
|
224
224
|
class Union < Node
|
225
225
|
def arity
|
226
|
-
minima, maxima = children.map
|
226
|
+
minima, maxima = children.map { |child| child.arity_range.minmax }.transpose
|
227
227
|
min = minima.min
|
228
228
|
max = maxima.max
|
229
229
|
min == max ? min : min..max
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# DO NOT MODIFY!!!!
|
4
|
-
# This file is automatically generated by Racc 1.
|
4
|
+
# This file is automatically generated by Racc 1.7.1
|
5
5
|
# from Racc grammar file "".
|
6
6
|
#
|
7
7
|
|
@@ -239,6 +239,7 @@ Racc_arg = [
|
|
239
239
|
racc_shift_n,
|
240
240
|
racc_reduce_n,
|
241
241
|
racc_use_result_var ]
|
242
|
+
Ractor.make_shareable(Racc_arg) if defined?(Ractor)
|
242
243
|
|
243
244
|
Racc_token_to_s_table = [
|
244
245
|
"$end",
|
@@ -289,6 +290,7 @@ Racc_token_to_s_table = [
|
|
289
290
|
"opt_rest",
|
290
291
|
"rest",
|
291
292
|
"arg_list" ]
|
293
|
+
Ractor.make_shareable(Racc_token_to_s_table) if defined?(Ractor)
|
292
294
|
|
293
295
|
Racc_debug_parser = false
|
294
296
|
|
data/lib/rubocop/ast/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-ast
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.30.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2023-
|
13
|
+
date: 2023-10-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: parser
|
@@ -26,26 +26,6 @@ dependencies:
|
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: 3.2.1.0
|
29
|
-
- !ruby/object:Gem::Dependency
|
30
|
-
name: bundler
|
31
|
-
requirement: !ruby/object:Gem::Requirement
|
32
|
-
requirements:
|
33
|
-
- - ">="
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version: 1.15.0
|
36
|
-
- - "<"
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: '3.0'
|
39
|
-
type: :development
|
40
|
-
prerelease: false
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
requirements:
|
43
|
-
- - ">="
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 1.15.0
|
46
|
-
- - "<"
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '3.0'
|
49
29
|
description: " RuboCop's Node and NodePattern classes.\n"
|
50
30
|
email: rubocop@googlegroups.com
|
51
31
|
executables: []
|
@@ -176,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
176
156
|
- !ruby/object:Gem::Version
|
177
157
|
version: '0'
|
178
158
|
requirements: []
|
179
|
-
rubygems_version: 3.4.
|
159
|
+
rubygems_version: 3.4.10
|
180
160
|
signing_key:
|
181
161
|
specification_version: 4
|
182
162
|
summary: RuboCop tools to deal with Ruby code AST.
|