rubocop-ast 1.26.0 → 1.30.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bc10e7c795dab5de6b3af9e4256ac4312e5c3593dac55ac4bf290386813d8375
4
- data.tar.gz: 4f5712401b5ce837a33b44a9e1e5061ca134fe794a04a9bdb46d7941564be73d
3
+ metadata.gz: 84c917625cddd9b79c0979e269fdd324f8119b9d2b3c6081fae0ef449669bea5
4
+ data.tar.gz: 8d053cac9c670216326df54b5b7b6a8961bf89614defa16e93ad1c557a8b25a5
5
5
  SHA512:
6
- metadata.gz: db2491014949e08395d008635c29a22d56b6495d020adc3ecc83071bf9f8614be7ff00088a69e82cc4add3ea118a71a28f3903ed3905012312191988cb61ec92
7
- data.tar.gz: 7ba42b76e1fa3721ac7d41e83d9ad4a87ec214c02938af1b6f2162e80ec55a4706698bee254591cdf50c3467648a95d972ad615fc559f0e8669a8de64552aa83
6
+ metadata.gz: c95bd42a576592153d70f61367aafacd9677021515534a487706b736cc02cfcf717fc6db39e3df7212088301383cb7d60af9b929b4ca65b7baa5a66f5eca059e
7
+ data.tar.gz: f0d99d3695e651ec10709dd729696a2b137c3b11603598164b433f61583218b16807c44ea1637ebe1922b496b8472795e4d54a4dc1312908f049e6f43b242ff8
@@ -19,76 +19,77 @@ module RuboCop
19
19
 
20
20
  # @api private
21
21
  NODE_MAP = {
22
- and: AndNode,
23
- and_asgn: AndAsgnNode,
24
- alias: AliasNode,
25
- arg: ArgNode,
26
- blockarg: ArgNode,
27
- forward_arg: ArgNode,
28
- kwarg: ArgNode,
29
- kwoptarg: ArgNode,
30
- kwrestarg: ArgNode,
31
- optarg: ArgNode,
32
- restarg: ArgNode,
33
- shadowarg: ArgNode,
34
- args: ArgsNode,
35
- array: ArrayNode,
36
- lvasgn: AsgnNode,
37
- ivasgn: AsgnNode,
38
- cvasgn: AsgnNode,
39
- gvasgn: AsgnNode,
40
- block: BlockNode,
41
- numblock: BlockNode,
42
- break: BreakNode,
43
- case_match: CaseMatchNode,
44
- casgn: CasgnNode,
45
- case: CaseNode,
46
- class: ClassNode,
47
- const: ConstNode,
48
- def: DefNode,
49
- defined?: DefinedNode,
50
- defs: DefNode,
51
- dstr: DstrNode,
52
- ensure: EnsureNode,
53
- for: ForNode,
54
- forward_args: ForwardArgsNode,
55
- float: FloatNode,
56
- hash: HashNode,
57
- if: IfNode,
58
- in_pattern: InPatternNode,
59
- int: IntNode,
60
- index: IndexNode,
61
- indexasgn: IndexasgnNode,
62
- irange: RangeNode,
63
- erange: RangeNode,
64
- kwargs: HashNode,
65
- kwsplat: KeywordSplatNode,
66
- lambda: LambdaNode,
67
- module: ModuleNode,
68
- next: NextNode,
69
- op_asgn: OpAsgnNode,
70
- or_asgn: OrAsgnNode,
71
- or: OrNode,
72
- pair: PairNode,
73
- procarg0: Procarg0Node,
74
- regexp: RegexpNode,
75
- rescue: RescueNode,
76
- resbody: ResbodyNode,
77
- return: ReturnNode,
78
- csend: CsendNode,
79
- send: SendNode,
80
- str: StrNode,
81
- xstr: StrNode,
82
- sclass: SelfClassNode,
83
- super: SuperNode,
84
- zsuper: SuperNode,
85
- sym: SymbolNode,
86
- until: UntilNode,
87
- until_post: UntilNode,
88
- when: WhenNode,
89
- while: WhileNode,
90
- while_post: WhileNode,
91
- yield: YieldNode
22
+ and: AndNode,
23
+ and_asgn: AndAsgnNode,
24
+ alias: AliasNode,
25
+ arg: ArgNode,
26
+ blockarg: ArgNode,
27
+ forward_arg: ArgNode,
28
+ kwarg: ArgNode,
29
+ kwoptarg: ArgNode,
30
+ kwrestarg: ArgNode,
31
+ optarg: ArgNode,
32
+ restarg: ArgNode,
33
+ shadowarg: ArgNode,
34
+ args: ArgsNode,
35
+ array: ArrayNode,
36
+ lvasgn: AsgnNode,
37
+ ivasgn: AsgnNode,
38
+ cvasgn: AsgnNode,
39
+ gvasgn: AsgnNode,
40
+ block: BlockNode,
41
+ numblock: BlockNode,
42
+ break: BreakNode,
43
+ case_match: CaseMatchNode,
44
+ casgn: CasgnNode,
45
+ case: CaseNode,
46
+ class: ClassNode,
47
+ const: ConstNode,
48
+ def: DefNode,
49
+ defined?: DefinedNode,
50
+ defs: DefNode,
51
+ dstr: DstrNode,
52
+ ensure: EnsureNode,
53
+ for: ForNode,
54
+ forward_args: ForwardArgsNode,
55
+ forwarded_kwrestarg: KeywordSplatNode,
56
+ float: FloatNode,
57
+ hash: HashNode,
58
+ if: IfNode,
59
+ in_pattern: InPatternNode,
60
+ int: IntNode,
61
+ index: IndexNode,
62
+ indexasgn: IndexasgnNode,
63
+ irange: RangeNode,
64
+ erange: RangeNode,
65
+ kwargs: HashNode,
66
+ kwsplat: KeywordSplatNode,
67
+ lambda: LambdaNode,
68
+ module: ModuleNode,
69
+ next: NextNode,
70
+ op_asgn: OpAsgnNode,
71
+ or_asgn: OrAsgnNode,
72
+ or: OrNode,
73
+ pair: PairNode,
74
+ procarg0: Procarg0Node,
75
+ regexp: RegexpNode,
76
+ rescue: RescueNode,
77
+ resbody: ResbodyNode,
78
+ return: ReturnNode,
79
+ csend: CsendNode,
80
+ send: SendNode,
81
+ str: StrNode,
82
+ xstr: StrNode,
83
+ sclass: SelfClassNode,
84
+ super: SuperNode,
85
+ zsuper: SuperNode,
86
+ sym: SymbolNode,
87
+ until: UntilNode,
88
+ until_post: UntilNode,
89
+ when: WhenNode,
90
+ while: WhileNode,
91
+ while_post: WhileNode,
92
+ yield: YieldNode
92
93
  }.freeze
93
94
 
94
95
  # Generates {Node} from the given information.
@@ -15,8 +15,8 @@ module RuboCop
15
15
  # :bar
16
16
  # ]
17
17
  #
18
- # node.loc.begin.line_span # => 1..1
19
- # node.loc.expression.line_span(exclude_end: true) # => 1...4
18
+ # node.loc.begin.line_span # => 1..1
19
+ # node.source_range.line_span(exclude_end: true) # => 1...4
20
20
  def line_span(exclude_end: false)
21
21
  ::Range.new(first_line, last_line, exclude_end)
22
22
  end
@@ -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
@@ -81,7 +81,7 @@ module RuboCop
81
81
  (if? || unless?) && super
82
82
  end
83
83
 
84
- # Chacks whether the `if` node has nested `if` nodes in any of its
84
+ # Checks whether the `if` node has nested `if` nodes in any of its
85
85
  # branches.
86
86
  #
87
87
  # @note This performs a shallow search.
@@ -2,9 +2,9 @@
2
2
 
3
3
  module RuboCop
4
4
  module AST
5
- # A node extension for `kwsplat` 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 `kwsplat` nodes within RuboCop.
5
+ # A node extension for `kwsplat` and `forwarded_kwrestarg` nodes. This will be used in
6
+ # place of a plain node when the builder constructs the AST, making its methods available to
7
+ # all `kwsplat` and `forwarded_kwrestarg` nodes within RuboCop.
8
8
  class KeywordSplatNode < Node
9
9
  include HashElementNode
10
10
 
@@ -41,6 +41,13 @@ module RuboCop
41
41
  def node_parts
42
42
  [self, self]
43
43
  end
44
+
45
+ # This provides `forwarded_kwrestarg` node to return true to be compatible with `kwsplat` node.
46
+ #
47
+ # @return [true]
48
+ def kwsplat_type?
49
+ true
50
+ end
44
51
  end
45
52
  end
46
53
  end
@@ -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) && !loc.selector
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 loc.selector
236
+ return false unless selector
226
237
 
227
- operator_method? && loc.expression.begin_pos == loc.selector.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 loc.selector
249
+ return false unless selector
239
250
 
240
- operator_method? && loc.expression.begin_pos != loc.selector.begin_pos
251
+ operator_method? && loc.expression.begin_pos != selector.begin_pos
241
252
  end
242
253
 
243
254
  private
@@ -38,7 +38,7 @@ module RuboCop
38
38
  end
39
39
 
40
40
  def visit_set
41
- set = node.children.map(&:child).to_set.freeze
41
+ set = node.children.to_set(&:child).freeze
42
42
  NodePattern::Sets[set]
43
43
  end
44
44
 
@@ -47,7 +47,7 @@ module RuboCop
47
47
  # @return [String] a Rainbow colorized version of ruby
48
48
  def colorize(color_scheme = COLOR_SCHEME)
49
49
  map = color_map(color_scheme)
50
- ast.loc.expression.source_buffer.source.chars.map.with_index do |char, i|
50
+ ast.source_range.source_buffer.source.chars.map.with_index do |char, i|
51
51
  Rainbow(char).color(map[i])
52
52
  end.join
53
53
  end
@@ -2,7 +2,7 @@
2
2
  # encoding: UTF-8
3
3
  #--
4
4
  # This file is automatically generated. Do not modify it.
5
- # Generated by: oedipus_lex version 2.6.0.
5
+ # Generated by: oedipus_lex version 2.6.1.
6
6
  # Source: lib/rubocop/ast/node_pattern/lexer.rex
7
7
  #++
8
8
 
@@ -75,6 +75,10 @@ module RuboCop
75
75
  self.class.new(type, children, { location: location })
76
76
  end
77
77
 
78
+ def source_range
79
+ loc.expression
80
+ end
81
+
78
82
  INT_TO_RANGE = Hash.new { |h, k| h[k] = k..k }
79
83
  private_constant :INT_TO_RANGE
80
84
 
@@ -203,7 +207,7 @@ module RuboCop
203
207
  include ForbidInSeqHead
204
208
 
205
209
  def arity
206
- min, max = children.map(&:arity_range).map(&:minmax).transpose.map(&:sum)
210
+ min, max = children.map { |child| child.arity_range.minmax }.transpose.map(&:sum)
207
211
  min == max ? min || 0 : min..max # NOTE: || 0 for empty case, where min == max == nil.
208
212
  end
209
213
 
@@ -219,7 +223,7 @@ module RuboCop
219
223
  # Node class for `{ ... }`
220
224
  class Union < Node
221
225
  def arity
222
- minima, maxima = children.map(&:arity_range).map(&:minmax).transpose
226
+ minima, maxima = children.map { |child| child.arity_range.minmax }.transpose
223
227
  min = minima.min
224
228
  max = maxima.max
225
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.5.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
 
@@ -48,12 +48,12 @@ module RuboCop
48
48
 
49
49
  def emit_unary_op(type, operator_t = nil, *children)
50
50
  children[-1] = children[-1].first if children[-1].is_a?(Array) # token?
51
- map = source_map(children.first.loc.expression, operator_t: operator_t)
51
+ map = source_map(children.first.source_range, operator_t: operator_t)
52
52
  n(type, children, map)
53
53
  end
54
54
 
55
55
  def emit_list(type, begin_t, children, end_t)
56
- expr = children.first.loc.expression.join(children.last.loc.expression)
56
+ expr = children.first.source_range.join(children.last.source_range)
57
57
  map = source_map(expr, begin_t: begin_t, end_t: end_t)
58
58
  n(type, children, map)
59
59
  end
@@ -79,8 +79,7 @@ module RuboCop
79
79
  end
80
80
 
81
81
  def join_exprs(left_expr, right_expr)
82
- left_expr.loc.expression
83
- .join(right_expr.loc.expression)
82
+ left_expr.source_range.join(right_expr.source_range)
84
83
  end
85
84
 
86
85
  def source_map(token_or_range, begin_t: nil, end_t: nil, operator_t: nil, selector_t: nil)
@@ -27,7 +27,7 @@ module RuboCop
27
27
  # Defaults source encoding to UTF-8, regardless of the encoding it has
28
28
  # been read with, which could be non-utf8 depending on the default
29
29
  # external encoding.
30
- source.force_encoding(Encoding::UTF_8) unless source.encoding == Encoding::UTF_8
30
+ (+source).force_encoding(Encoding::UTF_8) unless source.encoding == Encoding::UTF_8
31
31
 
32
32
  @raw_source = source
33
33
  @path = path
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module AST
5
5
  module Version
6
- STRING = '1.26.0'
6
+ STRING = '1.30.0'
7
7
  end
8
8
  end
9
9
  end
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.26.0
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-02-11 00:00:00.000000000 Z
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.1
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.