ruby-lsp 0.1.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -0
  3. data/README.md +2 -1
  4. data/VERSION +1 -1
  5. data/exe/ruby-lsp +1 -3
  6. data/lib/ruby-lsp.rb +2 -2
  7. data/lib/ruby_lsp/document.rb +10 -3
  8. data/lib/ruby_lsp/handler.rb +30 -134
  9. data/lib/ruby_lsp/internal.rb +3 -1
  10. data/lib/ruby_lsp/requests/code_actions.rb +2 -0
  11. data/lib/ruby_lsp/requests/diagnostics.rb +14 -9
  12. data/lib/ruby_lsp/requests/document_highlight.rb +27 -42
  13. data/lib/ruby_lsp/requests/document_link.rb +59 -0
  14. data/lib/ruby_lsp/requests/document_symbol.rb +2 -0
  15. data/lib/ruby_lsp/requests/folding_ranges.rb +26 -21
  16. data/lib/ruby_lsp/requests/formatting.rb +21 -16
  17. data/lib/ruby_lsp/requests/selection_ranges.rb +2 -0
  18. data/lib/ruby_lsp/requests/semantic_highlighting.rb +85 -11
  19. data/lib/ruby_lsp/requests/support/highlight_target.rb +88 -0
  20. data/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb +9 -2
  21. data/lib/ruby_lsp/requests/support/rubocop_diagnostics_runner.rb +61 -0
  22. data/lib/ruby_lsp/requests/support/rubocop_formatting_runner.rb +50 -0
  23. data/lib/ruby_lsp/requests.rb +14 -1
  24. data/lib/ruby_lsp/server.rb +192 -0
  25. data/lib/ruby_lsp/store.rb +12 -5
  26. metadata +10 -87
  27. data/.github/dependabot.yml +0 -11
  28. data/.github/probots.yml +0 -2
  29. data/.github/pull_request_template.md +0 -15
  30. data/.github/workflows/ci.yml +0 -31
  31. data/.github/workflows/publish_docs.yml +0 -32
  32. data/.gitignore +0 -9
  33. data/.rubocop.yml +0 -39
  34. data/.vscode/extensions.json +0 -5
  35. data/.vscode/settings.json +0 -5
  36. data/.vscode/tasks.json +0 -25
  37. data/CODE_OF_CONDUCT.md +0 -78
  38. data/Gemfile +0 -17
  39. data/Gemfile.lock +0 -124
  40. data/Rakefile +0 -21
  41. data/bin/rubocop +0 -29
  42. data/bin/tapioca +0 -29
  43. data/bin/test +0 -9
  44. data/dev.yml +0 -20
  45. data/lib/ruby_lsp/cli.rb +0 -88
  46. data/lib/ruby_lsp/requests/rubocop_request.rb +0 -60
  47. data/rakelib/check_docs.rake +0 -57
  48. data/ruby-lsp.gemspec +0 -26
  49. data/service.yml +0 -2
  50. data/sorbet/config +0 -4
  51. data/sorbet/rbi/.rubocop.yml +0 -8
  52. data/sorbet/rbi/gems/ansi@1.5.0.rbi +0 -338
  53. data/sorbet/rbi/gems/ast@2.4.2.rbi +0 -522
  54. data/sorbet/rbi/gems/builder@3.2.4.rbi +0 -418
  55. data/sorbet/rbi/gems/coderay@1.1.3.rbi +0 -8
  56. data/sorbet/rbi/gems/debug@1.5.0.rbi +0 -1273
  57. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +0 -867
  58. data/sorbet/rbi/gems/io-console@0.5.11.rbi +0 -8
  59. data/sorbet/rbi/gems/irb@1.4.1.rbi +0 -376
  60. data/sorbet/rbi/gems/language_server-protocol@3.16.0.3.rbi +0 -7325
  61. data/sorbet/rbi/gems/method_source@1.0.0.rbi +0 -8
  62. data/sorbet/rbi/gems/minitest-reporters@1.5.0.rbi +0 -612
  63. data/sorbet/rbi/gems/minitest@5.15.0.rbi +0 -994
  64. data/sorbet/rbi/gems/parallel@1.22.1.rbi +0 -163
  65. data/sorbet/rbi/gems/parser@3.1.2.0.rbi +0 -3968
  66. data/sorbet/rbi/gems/prettier_print@0.1.0.rbi +0 -734
  67. data/sorbet/rbi/gems/pry@0.14.1.rbi +0 -8
  68. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +0 -227
  69. data/sorbet/rbi/gems/rake@13.0.6.rbi +0 -1853
  70. data/sorbet/rbi/gems/rbi@0.0.14.rbi +0 -2337
  71. data/sorbet/rbi/gems/regexp_parser@2.5.0.rbi +0 -1854
  72. data/sorbet/rbi/gems/reline@0.3.1.rbi +0 -1274
  73. data/sorbet/rbi/gems/rexml@3.2.5.rbi +0 -3852
  74. data/sorbet/rbi/gems/rubocop-ast@1.18.0.rbi +0 -4180
  75. data/sorbet/rbi/gems/rubocop-minitest@0.20.0.rbi +0 -1369
  76. data/sorbet/rbi/gems/rubocop-rake@0.6.0.rbi +0 -246
  77. data/sorbet/rbi/gems/rubocop-shopify@2.6.0.rbi +0 -8
  78. data/sorbet/rbi/gems/rubocop-sorbet@0.6.8.rbi +0 -652
  79. data/sorbet/rbi/gems/rubocop@1.30.0.rbi +0 -36729
  80. data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +0 -732
  81. data/sorbet/rbi/gems/spoom@1.1.11.rbi +0 -1600
  82. data/sorbet/rbi/gems/syntax_tree@2.7.1.rbi +0 -6777
  83. data/sorbet/rbi/gems/tapioca@0.8.1.rbi +0 -1972
  84. data/sorbet/rbi/gems/thor@1.2.1.rbi +0 -2921
  85. data/sorbet/rbi/gems/unicode-display_width@2.1.0.rbi +0 -27
  86. data/sorbet/rbi/gems/unparser@0.6.5.rbi +0 -2789
  87. data/sorbet/rbi/gems/webrick@1.7.0.rbi +0 -1779
  88. data/sorbet/rbi/gems/yard-sorbet@0.6.1.rbi +0 -289
  89. data/sorbet/rbi/gems/yard@0.9.27.rbi +0 -13048
  90. data/sorbet/rbi/shims/fiddle.rbi +0 -4
  91. data/sorbet/rbi/shims/hash.rbi +0 -6
  92. data/sorbet/rbi/shims/rdoc.rbi +0 -4
  93. data/sorbet/tapioca/config.yml +0 -13
  94. data/sorbet/tapioca/require.rb +0 -7
@@ -1,4180 +0,0 @@
1
- # typed: true
2
-
3
- # DO NOT EDIT MANUALLY
4
- # This is an autogenerated file for types exported from the `rubocop-ast` gem.
5
- # Please instead update this file by running `bin/tapioca gem rubocop-ast`.
6
-
7
- module RuboCop; end
8
-
9
- # ...
10
- module RuboCop::AST
11
- extend ::RuboCop::AST::RuboCopCompatibility
12
- end
13
-
14
- # A node extension for `alias` nodes. This will be used in place of a plain
15
- # node when the builder constructs the AST, making its methods available
16
- # to all `alias` nodes within RuboCop.
17
- class RuboCop::AST::AliasNode < ::RuboCop::AST::Node
18
- # Returns the new identifier as specified by the `alias`.
19
- #
20
- # @return [SymbolNode] the new identifier
21
- def new_identifier; end
22
-
23
- # Returns the old identifier as specified by the `alias`.
24
- #
25
- # @return [SymbolNode] the old identifier
26
- def old_identifier; end
27
- end
28
-
29
- # A node extension for `op_asgn` nodes.
30
- # This will be used in place of a plain node when the builder constructs
31
- # the AST, making its methods available to all assignment nodes within RuboCop.
32
- class RuboCop::AST::AndAsgnNode < ::RuboCop::AST::OpAsgnNode
33
- # The operator being used for assignment as a symbol.
34
- #
35
- # @return [Symbol] the assignment operator
36
- def operator; end
37
- end
38
-
39
- # A node extension for `until` nodes. This will be used in place of a plain
40
- # node when the builder constructs the AST, making its methods available
41
- # to all `until` nodes within RuboCop.
42
- class RuboCop::AST::AndNode < ::RuboCop::AST::Node
43
- include ::RuboCop::AST::BinaryOperatorNode
44
- include ::RuboCop::AST::PredicateOperatorNode
45
-
46
- # Returns the alternate operator of the `and` as a string.
47
- # Returns `and` for `&&` and vice versa.
48
- #
49
- # @return [String] the alternate of the `and` operator
50
- def alternate_operator; end
51
-
52
- # Returns the inverse keyword of the `and` node as a string.
53
- # Returns `||` for `&&` and `or` for `and`.
54
- #
55
- # @return [String] the inverse of the `and` operator
56
- def inverse_operator; end
57
- end
58
-
59
- # A node extension for `arg`, `optarg`, `restarg`, `kwarg`, `kwoptarg`,
60
- # `kwrestarg`, `blockarg`, `shadowarg` and `forward_arg` nodes.
61
- # This will be used in place of a plain node when the builder constructs
62
- # the AST, making its methods available to all `arg` nodes within RuboCop.
63
- class RuboCop::AST::ArgNode < ::RuboCop::AST::Node
64
- # Checks whether the argument has a default value
65
- #
66
- # @return [Boolean] whether the argument has a default value
67
- def default?; end
68
-
69
- # Returns the default value of the argument, if any.
70
- #
71
- # @return [Node, nil] the default value of the argument
72
- def default_value; end
73
-
74
- # Returns the name of an argument.
75
- #
76
- # @return [Symbol, nil] the name of the argument
77
- def name; end
78
- end
79
-
80
- # A node extension for `args` nodes. This will be used in place of a plain
81
- # node when the builder constructs the AST, making its methods available
82
- # to all `args` nodes within RuboCop.
83
- class RuboCop::AST::ArgsNode < ::RuboCop::AST::Node
84
- include ::RuboCop::AST::CollectionNode
85
-
86
- # Yield each argument from the collection.
87
- # Arguments can be inside `mlhs` nodes in the case of destructuring, so this
88
- # flattens the collection to just `arg`, `optarg`, `restarg`, `kwarg`,
89
- # `kwoptarg`, `kwrestarg`, `blockarg`, `forward_arg` and `shadowarg`.
90
- #
91
- # @return [Array<Node>] array of argument nodes.
92
- def argument_list; end
93
-
94
- # It returns true if arguments are empty and delimiters do not exist.
95
- # @example:
96
- # # true
97
- # def x; end
98
- # x { }
99
- # -> {}
100
- #
101
- # # false
102
- # def x(); end
103
- # def x a; end
104
- # x { || }
105
- # -> () {}
106
- # -> a {}
107
- #
108
- # @return [Boolean]
109
- def empty_and_without_delimiters?; end
110
- end
111
-
112
- # A node extension for `array` nodes. This will be used in place of a plain
113
- # node when the builder constructs the AST, making its methods available
114
- # to all `array` nodes within RuboCop.
115
- class RuboCop::AST::ArrayNode < ::RuboCop::AST::Node
116
- # Checks whether the `array` literal is delimited by either percent or
117
- # square brackets
118
- #
119
- # brackets
120
- #
121
- # @return [Boolean] whether the array is enclosed in percent or square
122
- def bracketed?; end
123
-
124
- # @deprecated Use `values.each` (a.k.a. `children.each`)
125
- def each_value(&block); end
126
-
127
- # Checks whether the `array` literal is delimited by percent brackets.
128
- #
129
- # @overload percent_literal?
130
- # @overload percent_literal?
131
- # @return [Boolean] whether the array is enclosed in percent brackets
132
- def percent_literal?(type = T.unsafe(nil)); end
133
-
134
- # Checks whether the `array` literal is delimited by square brackets.
135
- #
136
- # @return [Boolean] whether the array is enclosed in square brackets
137
- def square_brackets?; end
138
-
139
- # Returns an array of all value nodes in the `array` literal.
140
- #
141
- # @return [Array<Node>] an array of value nodes
142
- def values; end
143
- end
144
-
145
- RuboCop::AST::ArrayNode::PERCENT_LITERAL_TYPES = T.let(T.unsafe(nil), Hash)
146
-
147
- # A node extension for `lvasgn`, `ivasgn`, `cvasgn`, and `gvasgn` nodes.
148
- # This will be used in place of a plain node when the builder constructs
149
- # the AST, making its methods available to all assignment nodes within RuboCop.
150
- class RuboCop::AST::AsgnNode < ::RuboCop::AST::Node
151
- # The expression being assigned to the variable.
152
- #
153
- # @return [Node] the expression being assigned.
154
- def expression; end
155
-
156
- # The name of the variable being assigned as a symbol.
157
- #
158
- # @return [Symbol] the name of the variable being assigned
159
- def name; end
160
- end
161
-
162
- # Common functionality for primitive literal nodes: `sym`, `str`,
163
- # `int`, `float`, ...
164
- module RuboCop::AST::BasicLiteralNode
165
- # Returns the value of the literal.
166
- #
167
- # @return [mixed] the value of the literal
168
- def value; end
169
- end
170
-
171
- # Common functionality for nodes that are binary operations:
172
- # `or`, `and` ...
173
- module RuboCop::AST::BinaryOperatorNode
174
- # Returns all of the conditions, including nested conditions,
175
- # of the binary operation.
176
- #
177
- # operation and the let and right hand side of any nested binary
178
- # operators
179
- #
180
- # @return [Array<Node>] the left and right hand side of the binary
181
- def conditions; end
182
-
183
- # Returns the left hand side node of the binary operation.
184
- #
185
- # @return [Node] the left hand side of the binary operation
186
- def lhs; end
187
-
188
- # Returns the right hand side node of the binary operation.
189
- #
190
- # @return [Node] the right hand side of the binary operation
191
- def rhs; end
192
- end
193
-
194
- # A node extension for `block` nodes. This will be used in place of a plain
195
- # node when the builder constructs the AST, making its methods available
196
- # to all `send` nodes within RuboCop.
197
- #
198
- # A `block` node is essentially a method send with a block. Parser nests
199
- # the `send` node inside the `block` node.
200
- class RuboCop::AST::BlockNode < ::RuboCop::AST::Node
201
- include ::RuboCop::AST::MethodIdentifierPredicates
202
-
203
- # Returns a collection of all descendants of this node that are
204
- # argument type nodes. See `ArgsNode#argument_list` for details.
205
- #
206
- # @return [Array<Node>]
207
- def argument_list; end
208
-
209
- # The arguments of this block.
210
- # Note that if the block has destructured arguments, `arguments` will
211
- # return a `mlhs` node, whereas `argument_list` will return only
212
- # actual argument nodes.
213
- #
214
- # @return [Array<Node>]
215
- def arguments; end
216
-
217
- # Checks whether this block takes any arguments.
218
- #
219
- # @return [Boolean] whether this `block` node takes any arguments
220
- def arguments?; end
221
-
222
- # The body of this block.
223
- #
224
- # @return [Node, nil] the body of the `block` node or `nil`
225
- def body; end
226
-
227
- # Checks whether the `block` literal is delimited by curly braces.
228
- #
229
- # @return [Boolean] whether the `block` literal is enclosed in braces
230
- def braces?; end
231
-
232
- # The closing delimiter for this `block` literal.
233
- #
234
- # @return [String] the closing delimiter for the `block` literal
235
- def closing_delimiter; end
236
-
237
- # The delimiters for this `block` literal.
238
- #
239
- # @return [Array<String>] the delimiters for the `block` literal
240
- def delimiters; end
241
-
242
- # Checks whether the `block` literal is delimited by `do`-`end` keywords.
243
- #
244
- # @return [Boolean] whether the `block` literal is enclosed in `do`-`end`
245
- def keywords?; end
246
-
247
- # Checks whether this `block` literal belongs to a lambda.
248
- #
249
- # @return [Boolean] whether the `block` literal belongs to a lambda
250
- def lambda?; end
251
-
252
- # The name of the dispatched method as a symbol.
253
- #
254
- # @return [Symbol] the name of the dispatched method
255
- def method_name; end
256
-
257
- # Checks whether this is a multiline block. This is overridden here
258
- # because the general version in `Node` does not work for `block` nodes.
259
- #
260
- # @return [Boolean] whether the `block` literal is on a several lines
261
- def multiline?; end
262
-
263
- # The opening delimiter for this `block` literal.
264
- #
265
- # @return [String] the opening delimiter for the `block` literal
266
- def opening_delimiter; end
267
-
268
- # The `send` node associated with this block.
269
- #
270
- # @return [SendNode] the `send` node associated with the `block` node
271
- def send_node; end
272
-
273
- # Checks whether this is a single line block. This is overridden here
274
- # because the general version in `Node` does not work for `block` nodes.
275
- #
276
- # @return [Boolean] whether the `block` literal is on a single line
277
- def single_line?; end
278
-
279
- # Checks whether this node body is a void context.
280
- #
281
- # @return [Boolean] whether the `block` node body is a void context
282
- def void_context?; end
283
-
284
- private
285
-
286
- # Numbered arguments of this `numblock`.
287
- def numbered_arguments; end
288
- end
289
-
290
- RuboCop::AST::BlockNode::VOID_CONTEXT_METHODS = T.let(T.unsafe(nil), Array)
291
-
292
- # A node extension for `break` nodes. This will be used in place of a
293
- # plain node when the builder constructs the AST, making its methods
294
- # available to all `break` nodes within RuboCop.
295
- class RuboCop::AST::BreakNode < ::RuboCop::AST::Node
296
- include ::RuboCop::AST::ParameterizedNode
297
- include ::RuboCop::AST::ParameterizedNode::WrappedArguments
298
- end
299
-
300
- # `RuboCop::AST::Builder` is an AST builder that is utilized to let `Parser`
301
- # generate ASTs with {RuboCop::AST::Node}.
302
- #
303
- # @example
304
- # buffer = Parser::Source::Buffer.new('(string)')
305
- # buffer.source = 'puts :foo'
306
- #
307
- # builder = RuboCop::AST::Builder.new
308
- # require 'parser/ruby25'
309
- # parser = Parser::Ruby25.new(builder)
310
- # root_node = parser.parse(buffer)
311
- class RuboCop::AST::Builder < ::Parser::Builders::Default
312
- # Generates {Node} from the given information.
313
- #
314
- # @return [Node] the generated node
315
- def n(type, children, source_map); end
316
-
317
- # TODO: Figure out what to do about literal encoding handling...
318
- # More details here https://github.com/whitequark/parser/issues/283
319
- def string_value(token); end
320
-
321
- private
322
-
323
- def node_klass(type); end
324
- end
325
-
326
- # @api private
327
- RuboCop::AST::Builder::NODE_MAP = T.let(T.unsafe(nil), Hash)
328
-
329
- # A node extension for `case_match` nodes. This will be used in place of
330
- # a plain node when the builder constructs the AST, making its methods
331
- # available to all `case_match` nodes within RuboCop.
332
- class RuboCop::AST::CaseMatchNode < ::RuboCop::AST::Node
333
- include ::RuboCop::AST::ConditionalNode
334
-
335
- # Returns an array of all the when branches in the `case` statement.
336
- #
337
- # and the `else` (if any). Note that these bodies could be nil.
338
- #
339
- # @return [Array<Node, nil>] an array of the bodies of the `in` branches
340
- def branches; end
341
-
342
- # @deprecated Use `in_pattern_branches.each`
343
- def each_in_pattern(&block); end
344
-
345
- # Checks whether this case statement has an `else` branch.
346
- #
347
- # @return [Boolean] whether the `case` statement has an `else` branch
348
- def else?; end
349
-
350
- # Returns the else branch of the `case` statement, if any.
351
- #
352
- # @return [Node] the else branch node of the `case` statement
353
- # @return [EmptyElse] the empty else branch node of the `case` statement
354
- # @return [nil] if the case statement does not have an else branch.
355
- def else_branch; end
356
-
357
- # Returns an array of all the `in` pattern branches in the `case` statement.
358
- #
359
- # @return [Array<InPatternNode>] an array of `in_pattern` nodes
360
- def in_pattern_branches; end
361
-
362
- # Returns the keyword of the `case` statement as a string.
363
- #
364
- # @return [String] the keyword of the `case` statement
365
- def keyword; end
366
- end
367
-
368
- # A node extension for `case` nodes. This will be used in place of a plain
369
- # node when the builder constructs the AST, making its methods available
370
- # to all `case` nodes within RuboCop.
371
- class RuboCop::AST::CaseNode < ::RuboCop::AST::Node
372
- include ::RuboCop::AST::ConditionalNode
373
-
374
- # Returns an array of all the when branches in the `case` statement.
375
- #
376
- # and the else (if any). Note that these bodies could be nil.
377
- #
378
- # @return [Array<Node, nil>] an array of the bodies of the when branches
379
- def branches; end
380
-
381
- # @deprecated Use `when_branches.each`
382
- def each_when(&block); end
383
-
384
- # Checks whether this case statement has an `else` branch.
385
- #
386
- # @return [Boolean] whether the `case` statement has an `else` branch
387
- def else?; end
388
-
389
- # Returns the else branch of the `case` statement, if any.
390
- #
391
- # @return [Node] the else branch node of the `case` statement
392
- # @return [nil] if the case statement does not have an else branch.
393
- def else_branch; end
394
-
395
- # Returns the keyword of the `case` statement as a string.
396
- #
397
- # @return [String] the keyword of the `case` statement
398
- def keyword; end
399
-
400
- # Returns an array of all the when branches in the `case` statement.
401
- #
402
- # @return [Array<WhenNode>] an array of `when` nodes
403
- def when_branches; end
404
- end
405
-
406
- # A node extension for `casgn` nodes.
407
- # This will be used in place of a plain node when the builder constructs
408
- # the AST, making its methods available to all assignment nodes within RuboCop.
409
- class RuboCop::AST::CasgnNode < ::RuboCop::AST::Node
410
- # The expression being assigned to the variable.
411
- #
412
- # @return [Node] the expression being assigned.
413
- def expression; end
414
-
415
- # The name of the variable being assigned as a symbol.
416
- #
417
- # @return [Symbol] the name of the variable being assigned
418
- def name; end
419
-
420
- # The namespace of the constant being assigned.
421
- #
422
- # @return [Node, nil] the node associated with the scope (e.g. cbase, const, ...)
423
- def namespace; end
424
- end
425
-
426
- # A node extension for `class` nodes. This will be used in place of a plain
427
- # node when the builder constructs the AST, making its methods available
428
- # to all `class` nodes within RuboCop.
429
- class RuboCop::AST::ClassNode < ::RuboCop::AST::Node
430
- # The body of this `class` node.
431
- #
432
- # @return [Node, nil] the body of the class
433
- def body; end
434
-
435
- # The identifier for this `class` node.
436
- #
437
- # @return [Node] the identifier of the class
438
- def identifier; end
439
-
440
- # The parent class for this `class` node.
441
- #
442
- # @return [Node, nil] the parent class of the class
443
- def parent_class; end
444
- end
445
-
446
- # A mixin that helps give collection nodes array polymorphism.
447
- module RuboCop::AST::CollectionNode
448
- extend ::Forwardable
449
-
450
- def &(*args, **_arg1, &block); end
451
- def *(*args, **_arg1, &block); end
452
- def +(*args, **_arg1, &block); end
453
- def -(*args, **_arg1, &block); end
454
- def <<(*args, **_arg1, &block); end
455
- def [](*args, **_arg1, &block); end
456
- def []=(*args, **_arg1, &block); end
457
- def all?(*args, **_arg1, &block); end
458
- def any?(*args, **_arg1, &block); end
459
- def append(*args, **_arg1, &block); end
460
- def assoc(*args, **_arg1, &block); end
461
- def at(*args, **_arg1, &block); end
462
- def bsearch(*args, **_arg1, &block); end
463
- def bsearch_index(*args, **_arg1, &block); end
464
- def chain(*args, **_arg1, &block); end
465
- def chunk(*args, **_arg1, &block); end
466
- def chunk_while(*args, **_arg1, &block); end
467
- def clear(*args, **_arg1, &block); end
468
- def collect(*args, **_arg1, &block); end
469
- def collect!(*args, **_arg1, &block); end
470
- def collect_concat(*args, **_arg1, &block); end
471
- def combination(*args, **_arg1, &block); end
472
- def compact(*args, **_arg1, &block); end
473
- def compact!(*args, **_arg1, &block); end
474
- def concat(*args, **_arg1, &block); end
475
- def count(*args, **_arg1, &block); end
476
- def cycle(*args, **_arg1, &block); end
477
- def deconstruct(*args, **_arg1, &block); end
478
- def delete(*args, **_arg1, &block); end
479
- def delete_at(*args, **_arg1, &block); end
480
- def delete_if(*args, **_arg1, &block); end
481
- def detect(*args, **_arg1, &block); end
482
- def difference(*args, **_arg1, &block); end
483
- def dig(*args, **_arg1, &block); end
484
- def drop(*args, **_arg1, &block); end
485
- def drop_while(*args, **_arg1, &block); end
486
- def each(*args, **_arg1, &block); end
487
- def each_cons(*args, **_arg1, &block); end
488
- def each_entry(*args, **_arg1, &block); end
489
- def each_index(*args, **_arg1, &block); end
490
- def each_slice(*args, **_arg1, &block); end
491
- def each_with_index(*args, **_arg1, &block); end
492
- def each_with_object(*args, **_arg1, &block); end
493
- def empty?(*args, **_arg1, &block); end
494
- def entries(*args, **_arg1, &block); end
495
- def fetch(*args, **_arg1, &block); end
496
- def fill(*args, **_arg1, &block); end
497
- def filter(*args, **_arg1, &block); end
498
- def filter!(*args, **_arg1, &block); end
499
- def filter_map(*args, **_arg1, &block); end
500
- def find(*args, **_arg1, &block); end
501
- def find_all(*args, **_arg1, &block); end
502
- def find_index(*args, **_arg1, &block); end
503
- def first(*args, **_arg1, &block); end
504
- def flat_map(*args, **_arg1, &block); end
505
- def flatten(*args, **_arg1, &block); end
506
- def flatten!(*args, **_arg1, &block); end
507
- def grep(*args, **_arg1, &block); end
508
- def grep_v(*args, **_arg1, &block); end
509
- def group_by(*args, **_arg1, &block); end
510
- def include?(*args, **_arg1, &block); end
511
- def index(*args, **_arg1, &block); end
512
- def inject(*args, **_arg1, &block); end
513
- def insert(*args, **_arg1, &block); end
514
- def intersect?(*args, **_arg1, &block); end
515
- def intersection(*args, **_arg1, &block); end
516
- def join(*args, **_arg1, &block); end
517
- def keep_if(*args, **_arg1, &block); end
518
- def last(*args, **_arg1, &block); end
519
- def lazy(*args, **_arg1, &block); end
520
- def length(*args, **_arg1, &block); end
521
- def map(*args, **_arg1, &block); end
522
- def map!(*args, **_arg1, &block); end
523
- def max(*args, **_arg1, &block); end
524
- def max_by(*args, **_arg1, &block); end
525
- def member?(*args, **_arg1, &block); end
526
- def min(*args, **_arg1, &block); end
527
- def min_by(*args, **_arg1, &block); end
528
- def minmax(*args, **_arg1, &block); end
529
- def minmax_by(*args, **_arg1, &block); end
530
- def none?(*args, **_arg1, &block); end
531
- def one?(*args, **_arg1, &block); end
532
- def pack(*args, **_arg1, &block); end
533
- def partition(*args, **_arg1, &block); end
534
- def permutation(*args, **_arg1, &block); end
535
- def place(*args, **_arg1, &block); end
536
- def pop(*args, **_arg1, &block); end
537
- def prepend(*args, **_arg1, &block); end
538
- def product(*args, **_arg1, &block); end
539
- def push(*args, **_arg1, &block); end
540
- def rassoc(*args, **_arg1, &block); end
541
- def reduce(*args, **_arg1, &block); end
542
- def reject(*args, **_arg1, &block); end
543
- def reject!(*args, **_arg1, &block); end
544
- def repeated_combination(*args, **_arg1, &block); end
545
- def repeated_permutation(*args, **_arg1, &block); end
546
- def replace(*args, **_arg1, &block); end
547
- def reverse(*args, **_arg1, &block); end
548
- def reverse!(*args, **_arg1, &block); end
549
- def reverse_each(*args, **_arg1, &block); end
550
- def rindex(*args, **_arg1, &block); end
551
- def rotate(*args, **_arg1, &block); end
552
- def rotate!(*args, **_arg1, &block); end
553
- def sample(*args, **_arg1, &block); end
554
- def select(*args, **_arg1, &block); end
555
- def select!(*args, **_arg1, &block); end
556
- def shelljoin(*args, **_arg1, &block); end
557
- def shift(*args, **_arg1, &block); end
558
- def shuffle(*args, **_arg1, &block); end
559
- def shuffle!(*args, **_arg1, &block); end
560
- def size(*args, **_arg1, &block); end
561
- def slice(*args, **_arg1, &block); end
562
- def slice!(*args, **_arg1, &block); end
563
- def slice_after(*args, **_arg1, &block); end
564
- def slice_before(*args, **_arg1, &block); end
565
- def slice_when(*args, **_arg1, &block); end
566
- def sort(*args, **_arg1, &block); end
567
- def sort!(*args, **_arg1, &block); end
568
- def sort_by(*args, **_arg1, &block); end
569
- def sort_by!(*args, **_arg1, &block); end
570
- def sum(*args, **_arg1, &block); end
571
- def take(*args, **_arg1, &block); end
572
- def take_while(*args, **_arg1, &block); end
573
- def tally(*args, **_arg1, &block); end
574
- def to_ary(*args, **_arg1, &block); end
575
- def to_h(*args, **_arg1, &block); end
576
- def to_set(*args, **_arg1, &block); end
577
- def transpose(*args, **_arg1, &block); end
578
- def union(*args, **_arg1, &block); end
579
- def uniq(*args, **_arg1, &block); end
580
- def uniq!(*args, **_arg1, &block); end
581
- def unshift(*args, **_arg1, &block); end
582
- def values_at(*args, **_arg1, &block); end
583
- def zip(*args, **_arg1, &block); end
584
- def |(*args, **_arg1, &block); end
585
- end
586
-
587
- RuboCop::AST::CollectionNode::ARRAY_METHODS = T.let(T.unsafe(nil), Array)
588
-
589
- # Common functionality for nodes that have conditions:
590
- # `if`, `while`, `until`, `case`.
591
- # This currently doesn't include `when` nodes, because they have multiple
592
- # conditions, and need to be checked for that.
593
- module RuboCop::AST::ConditionalNode
594
- # Returns the body associated with the condition. This works together with
595
- # each node's custom destructuring method to select the correct part of
596
- # the node.
597
- #
598
- # @note For `if` nodes, this is the truthy branch.
599
- # @return [Node, nil] the body of the node
600
- def body; end
601
-
602
- # Returns the condition of the node. This works together with each node's
603
- # custom destructuring method to select the correct part of the node.
604
- #
605
- # @return [Node, nil] the condition of the node
606
- def condition; end
607
-
608
- # Checks whether the condition of the node is written on more than
609
- # one line.
610
- #
611
- # @return [Boolean] whether the condition is on more than one line
612
- def multiline_condition?; end
613
-
614
- # Checks whether the condition of the node is written on a single line.
615
- #
616
- # @return [Boolean] whether the condition is on a single line
617
- def single_line_condition?; end
618
- end
619
-
620
- # A node extension for `const` nodes.
621
- class RuboCop::AST::ConstNode < ::RuboCop::AST::Node
622
- # @return [Boolean] if the constant starts with `::` (aka s(:cbase))
623
- def absolute?; end
624
-
625
- # @return [Boolean] if the constant is a Module / Class, according to the standard convention.
626
- # Note: some classes might have uppercase in which case this method
627
- # returns false
628
- def class_name?; end
629
-
630
- # Yield nodes for the namespace
631
- #
632
- # For `::Foo::Bar::BAZ` => yields:
633
- # s(:cbase), then
634
- # s(:const, :Foo), then
635
- # s(:const, s(:const, :Foo), :Bar)
636
- def each_path(&block); end
637
-
638
- # @return [Boolean] if the constant is a Module / Class, according to the standard convention.
639
- # Note: some classes might have uppercase in which case this method
640
- # returns false
641
- def module_name?; end
642
-
643
- # @return [Node, nil] the node associated with the scope (e.g. cbase, const, ...)
644
- def namespace; end
645
-
646
- # @return [Boolean] if the constant does not start with `::` (aka s(:cbase))
647
- def relative?; end
648
-
649
- # @return [Symbol] the demodulized name of the constant: "::Foo::Bar" => :Bar
650
- def short_name; end
651
- end
652
-
653
- # A node extension for `def` nodes. This will be used in place of a plain
654
- # node when the builder constructs the AST, making its methods available
655
- # to all `def` nodes within RuboCop.
656
- class RuboCop::AST::DefNode < ::RuboCop::AST::Node
657
- include ::RuboCop::AST::ParameterizedNode
658
- include ::RuboCop::AST::MethodIdentifierPredicates
659
-
660
- # Checks whether this method definition node forwards its arguments
661
- # as per the feature added in Ruby 2.7.
662
- #
663
- # @note This is written in a way that may support lead arguments
664
- # which are rumored to be added in a later version of Ruby.
665
- # @return [Boolean] whether the `def` node uses argument forwarding
666
- def argument_forwarding?; end
667
-
668
- # An array containing the arguments of the method definition.
669
- #
670
- # @return [Array<Node>] the arguments of the method definition
671
- def arguments; end
672
-
673
- # The body of the method definition.
674
- #
675
- # @note this can be either a `begin` node, if the method body contains
676
- # multiple expressions, or any other node, if it contains a single
677
- # expression.
678
- # @return [Node] the body of the method definition
679
- def body; end
680
-
681
- # @return [Boolean] if the definition is without an `end` or not.
682
- def endless?; end
683
-
684
- # The name of the defined method as a symbol.
685
- #
686
- # @return [Symbol] the name of the defined method
687
- def method_name; end
688
-
689
- # The receiver of the method definition, if any.
690
- #
691
- # @return [Node, nil] the receiver of the method definition, or `nil`.
692
- def receiver; end
693
-
694
- # Checks whether this node body is a void context.
695
- #
696
- # @return [Boolean] whether the `def` node body is a void context
697
- def void_context?; end
698
- end
699
-
700
- # A node extension for `defined?` nodes. This will be used in place of a
701
- # plain node when the builder constructs the AST, making its methods
702
- # available to all `send` nodes within RuboCop.
703
- class RuboCop::AST::DefinedNode < ::RuboCop::AST::Node
704
- include ::RuboCop::AST::ParameterizedNode
705
- include ::RuboCop::AST::MethodIdentifierPredicates
706
- include ::RuboCop::AST::MethodDispatchNode
707
-
708
- def arguments; end
709
- def node_parts; end
710
- end
711
-
712
- # Common functionality for primitive literal nodes: `sym`, `str`,
713
- # `int`, `float`, ...
714
- module RuboCop::AST::Descendence
715
- # Returns an array of child nodes.
716
- # This is a shorthand for `node.each_child_node.to_a`.
717
- #
718
- # @return [Array<Node>] an array of child nodes
719
- def child_nodes; end
720
-
721
- # Returns an array of descendant nodes.
722
- # This is a shorthand for `node.each_descendant.to_a`.
723
- #
724
- # @return [Array<Node>] an array of descendant nodes
725
- def descendants; end
726
-
727
- # Calls the given block for each child node.
728
- # If no block is given, an `Enumerator` is returned.
729
- #
730
- # Note that this is different from `node.children.each { |child| ... }`
731
- # which yields all children including non-node elements.
732
- #
733
- # @overload each_child_node
734
- # @overload each_child_node
735
- # @return [self] if a block is given
736
- # @return [Enumerator] if no block is given
737
- # @yieldparam node [Node] each child node
738
- def each_child_node(*types); end
739
-
740
- # Calls the given block for each descendant node with depth first order.
741
- # If no block is given, an `Enumerator` is returned.
742
- #
743
- # @overload each_descendant
744
- # @overload each_descendant
745
- # @overload each_descendant
746
- # @return [self] if a block is given
747
- # @return [Enumerator] if no block is given
748
- # @yieldparam node [Node] each descendant node
749
- def each_descendant(*types, &block); end
750
-
751
- # Calls the given block for the receiver and each descendant node in
752
- # depth-first order.
753
- # If no block is given, an `Enumerator` is returned.
754
- #
755
- # This method would be useful when you treat the receiver node as the root
756
- # of a tree and want to iterate over all nodes in the tree.
757
- #
758
- # @overload each_node
759
- # @overload each_node
760
- # @overload each_node
761
- # @return [self] if a block is given
762
- # @return [Enumerator] if no block is given
763
- # @yieldparam node [Node] each node
764
- def each_node(*types, &block); end
765
-
766
- protected
767
-
768
- def visit_descendants(types, &block); end
769
- end
770
-
771
- # A node extension for `dstr` nodes. This will be used
772
- # in place of a plain node when the builder constructs the AST, making
773
- # its methods available to all `dstr` nodes within RuboCop.
774
- class RuboCop::AST::DstrNode < ::RuboCop::AST::StrNode
775
- def value; end
776
- end
777
-
778
- # A node extension for `ensure` nodes. This will be used in place of a plain
779
- # node when the builder constructs the AST, making its methods available
780
- # to all `ensure` nodes within RuboCop.
781
- class RuboCop::AST::EnsureNode < ::RuboCop::AST::Node
782
- # Returns the body of the `ensure` clause.
783
- #
784
- # @return [Node, nil] The body of the `ensure`.
785
- def body; end
786
- end
787
-
788
- module RuboCop::AST::Ext; end
789
-
790
- # Extensions to Parser::AST::Range
791
- module RuboCop::AST::Ext::Range
792
- # If `exclude_end` is `true`, then the range will be exclusive.
793
- #
794
- # Assume that `node` corresponds to the following array literal:
795
- #
796
- # [
797
- # :foo,
798
- # :bar
799
- # ]
800
- #
801
- # node.loc.begin.line_span # => 1..1
802
- # node.loc.expression.line_span(exclude_end: true) # => 1...4
803
- #
804
- # @return [Range] the range of line numbers for the node
805
- def line_span(exclude_end: T.unsafe(nil)); end
806
- end
807
-
808
- # Refinement to circumvent broken `Range#minmax` for infinity ranges in 2.6-
809
- module RuboCop::AST::Ext::RangeMinMax; end
810
-
811
- # A node extension for `float` nodes. This will be used in place of a plain
812
- # node when the builder constructs the AST, making its methods available to
813
- # all `float` nodes within RuboCop.
814
- class RuboCop::AST::FloatNode < ::RuboCop::AST::Node
815
- include ::RuboCop::AST::BasicLiteralNode
816
- include ::RuboCop::AST::NumericNode
817
- end
818
-
819
- # A node extension for `for` nodes. This will be used in place of a plain
820
- # node when the builder constructs the AST, making its methods available
821
- # to all `for` nodes within RuboCop.
822
- class RuboCop::AST::ForNode < ::RuboCop::AST::Node
823
- # Returns the body of the `for` loop.
824
- #
825
- # @return [Node, nil] The body of the `for` loop.
826
- def body; end
827
-
828
- # Returns the collection the `for` loop is iterating over.
829
- #
830
- # @return [Node] The collection the `for` loop is iterating over
831
- def collection; end
832
-
833
- # Checks whether the `for` node has a `do` keyword.
834
- #
835
- # @return [Boolean] whether the `for` node has a `do` keyword
836
- def do?; end
837
-
838
- # Returns the keyword of the `for` statement as a string.
839
- #
840
- # @return [String] the keyword of the `until` statement
841
- def keyword; end
842
-
843
- # Returns the iteration variable of the `for` loop.
844
- #
845
- # @return [Node] The iteration variable of the `for` loop
846
- def variable; end
847
-
848
- # Checks whether this node body is a void context.
849
- # Always `true` for `for`.
850
- #
851
- # @return [true] whether the `for` node body is a void context
852
- def void_context?; end
853
- end
854
-
855
- # A node extension for `forward-args` nodes. This will be used in place
856
- # of a plain node when the builder constructs the AST, making its methods
857
- # available to all `forward-args` nodes within RuboCop.
858
- #
859
- # Not used with modern emitters:
860
- #
861
- # $ ruby-parse -e "def foo(...); end"
862
- # (def :foo
863
- # (args
864
- # (forward-arg)) nil)
865
- # $ ruby-parse --legacy -e "->(foo) { bar }"
866
- # (def :foo
867
- # (forward-args) nil)
868
- #
869
- # Note the extra 's' with legacy form.
870
- #
871
- # The main RuboCop runs in legacy mode; this node is only used
872
- # if user `AST::Builder.modernize` or `AST::Builder.emit_lambda=true`
873
- class RuboCop::AST::ForwardArgsNode < ::RuboCop::AST::Node
874
- include ::RuboCop::AST::CollectionNode
875
-
876
- # Node wraps itself in an array to be compatible with other
877
- # enumerable argument types.
878
- def to_a; end
879
- end
880
-
881
- # Common functionality for nodes that can be used as hash elements:
882
- # `pair`, `kwsplat`
883
- module RuboCop::AST::HashElementNode
884
- # Returns the delta between this element's delimiter and the argument's.
885
- #
886
- # @note Pairs with different delimiter styles return a delta of 0
887
- # @return [Integer] the delta between the two delimiters
888
- def delimiter_delta(other); end
889
-
890
- # Returns the key of this `hash` element.
891
- #
892
- # @note For keyword splats, this returns the whole node
893
- # @return [Node] the key of the hash element
894
- def key; end
895
-
896
- # Returns the delta between this pair's key and the argument pair's.
897
- #
898
- # @note Keys on the same line always return a delta of 0
899
- # @note Keyword splats always return a delta of 0 for right alignment
900
- # @param alignment [Symbol] whether to check the left or right side
901
- # @return [Integer] the delta between the two keys
902
- def key_delta(other, alignment = T.unsafe(nil)); end
903
-
904
- # Checks whether this `hash` element is on the same line as `other`.
905
- #
906
- # @note A multiline element is considered to be on the same line if it
907
- # shares any of its lines with `other`
908
- # @return [Boolean] whether this element is on the same line as `other`
909
- def same_line?(other); end
910
-
911
- # Returns the value of this `hash` element.
912
- #
913
- # @note For keyword splats, this returns the whole node
914
- # @return [Node] the value of the hash element
915
- def value; end
916
-
917
- # Returns the delta between this element's value and the argument's.
918
- #
919
- # @note Keyword splats always return a delta of 0
920
- # @return [Integer] the delta between the two values
921
- def value_delta(other); end
922
- end
923
-
924
- # A helper class for comparing the positions of different parts of a
925
- # `pair` node.
926
- class RuboCop::AST::HashElementNode::HashElementDelta
927
- # @raise [ArgumentError]
928
- # @return [HashElementDelta] a new instance of HashElementDelta
929
- def initialize(first, second); end
930
-
931
- def delimiter_delta; end
932
- def key_delta(alignment = T.unsafe(nil)); end
933
- def value_delta; end
934
-
935
- private
936
-
937
- def delta(first, second, alignment = T.unsafe(nil)); end
938
-
939
- # Returns the value of attribute first.
940
- def first; end
941
-
942
- # @return [Boolean]
943
- def keyword_splat?; end
944
-
945
- # Returns the value of attribute second.
946
- def second; end
947
-
948
- # @return [Boolean]
949
- def valid_argument_types?; end
950
- end
951
-
952
- # A node extension for `hash` nodes. This will be used in place of a plain
953
- # node when the builder constructs the AST, making its methods available
954
- # to all `hash` nodes within RuboCop.
955
- class RuboCop::AST::HashNode < ::RuboCop::AST::Node
956
- # Checks whether the `hash` literal is delimited by curly braces.
957
- #
958
- # @return [Boolean] whether the `hash` literal is enclosed in braces
959
- def braces?; end
960
-
961
- # Calls the given block for each `key` node in the `hash` literal.
962
- # If no block is given, an `Enumerator` is returned.
963
- #
964
- # @note `kwsplat` nodes are ignored.
965
- # @return [self] if a block is given
966
- # @return [Enumerator] if no block is given
967
- def each_key(&block); end
968
-
969
- # Calls the given block for each `pair` node in the `hash` literal.
970
- # If no block is given, an `Enumerator` is returned.
971
- #
972
- # @note `kwsplat` nodes are ignored.
973
- # @return [self] if a block is given
974
- # @return [Enumerator] if no block is given
975
- def each_pair; end
976
-
977
- # Calls the given block for each `value` node in the `hash` literal.
978
- # If no block is given, an `Enumerator` is returned.
979
- #
980
- # @note `kwsplat` nodes are ignored.
981
- # @return [self] if a block is given
982
- # @return [Enumerator] if no block is given
983
- def each_value(&block); end
984
-
985
- # Checks whether the `hash` node contains any `pair`- or `kwsplat` nodes.
986
- #
987
- # @return[Boolean] whether the `hash` is empty
988
- #
989
- # @return [Boolean]
990
- def empty?; end
991
-
992
- # Returns an array of all the keys in the `hash` literal.
993
- #
994
- # @note `kwsplat` nodes are ignored.
995
- # @return [Array<Node>] an array of keys in the `hash` literal
996
- def keys; end
997
-
998
- # Checks whether this `hash` uses a mix of hash rocket and colon
999
- # delimiters for its pairs.
1000
- #
1001
- # @note `kwsplat` nodes are ignored.
1002
- # @return [Boolean] whether the `hash` uses mixed delimiters
1003
- def mixed_delimiters?; end
1004
-
1005
- # Returns an array of all the key value pairs in the `hash` literal.
1006
- #
1007
- # ignored.
1008
- #
1009
- # @note this may be different from children as `kwsplat` nodes are
1010
- # @return [Array<PairNode>] an array of `pair` nodes
1011
- def pairs; end
1012
-
1013
- # Checks whether any of the key value pairs in the `hash` literal are on
1014
- # the same line.
1015
- #
1016
- # @note A multiline `pair` is considered to be on the same line if it
1017
- # shares any of its lines with another `pair`
1018
- # @note `kwsplat` nodes are ignored.
1019
- # @return [Boolean] whether any `pair` nodes are on the same line
1020
- def pairs_on_same_line?; end
1021
-
1022
- # Returns an array of all the values in the `hash` literal.
1023
- #
1024
- # @note `kwsplat` nodes are ignored.
1025
- # @return [Array<Node>] an array of values in the `hash` literal
1026
- def values; end
1027
- end
1028
-
1029
- # A node extension for `if` nodes. This will be used in place of a plain
1030
- # node when the builder constructs the AST, making its methods available
1031
- # to all `if` nodes within RuboCop.
1032
- class RuboCop::AST::IfNode < ::RuboCop::AST::Node
1033
- include ::RuboCop::AST::ConditionalNode
1034
- include ::RuboCop::AST::ModifierNode
1035
-
1036
- # Returns an array of all the branches in the conditional statement.
1037
- #
1038
- # @return [Array<Node>] an array of branch nodes
1039
- def branches; end
1040
-
1041
- # @deprecated Use `branches.each`
1042
- def each_branch(&block); end
1043
-
1044
- # Checks whether the `if` node has an `else` clause.
1045
- #
1046
- # @note This returns `true` for nodes containing an `elsif` clause.
1047
- # This is legacy behavior, and many cops rely on it.
1048
- # @return [Boolean] whether the node has an `else` clause
1049
- def else?; end
1050
-
1051
- # Returns the branch of the `if` node that gets evaluated when its
1052
- # condition is falsey.
1053
- #
1054
- # @note This is normalized for `unless` nodes.
1055
- # @return [Node] the falsey branch node of the `if` node
1056
- # @return [nil] when there is no else branch
1057
- def else_branch; end
1058
-
1059
- # Checks whether the `if` is an `elsif`. Parser handles these by nesting
1060
- # `if` nodes in the `else` branch.
1061
- #
1062
- # @return [Boolean] whether the node is an `elsif`
1063
- def elsif?; end
1064
-
1065
- # Checks whether the `if` node has at least one `elsif` branch. Returns
1066
- # true if this `if` node itself is an `elsif`.
1067
- #
1068
- # @return [Boolean] whether the `if` node has at least one `elsif` branch
1069
- def elsif_conditional?; end
1070
-
1071
- # Checks whether this node is an `if` statement. (This is not true of
1072
- # ternary operators and `unless` statements.)
1073
- #
1074
- # @return [Boolean] whether the node is an `if` statement
1075
- def if?; end
1076
-
1077
- # Returns the branch of the `if` node that gets evaluated when its
1078
- # condition is truthy.
1079
- #
1080
- # @note This is normalized for `unless` nodes.
1081
- # @return [Node] the truthy branch node of the `if` node
1082
- # @return [nil] if the truthy branch is empty
1083
- def if_branch; end
1084
-
1085
- # Returns the inverse keyword of the `if` node as a string. Returns `if`
1086
- # for `unless` nodes and vice versa. Returns an empty string for ternary
1087
- # operators.
1088
- #
1089
- # @return [String] the inverse keyword of the `if` statement
1090
- def inverse_keyword; end
1091
-
1092
- # Returns the keyword of the `if` statement as a string. Returns an empty
1093
- # string for ternary operators.
1094
- #
1095
- # @return [String] the keyword of the `if` statement
1096
- def keyword; end
1097
-
1098
- # Checks whether the `if` node is in a modifier form, i.e. a condition
1099
- # trailing behind an expression. Only `if` and `unless` nodes without
1100
- # other branches can be modifiers.
1101
- #
1102
- # @return [Boolean] whether the `if` node is a modifier
1103
- def modifier_form?; end
1104
-
1105
- # Chacks whether the `if` node has nested `if` nodes in any of its
1106
- # branches.
1107
- #
1108
- # @note This performs a shallow search.
1109
- # @return [Boolean] whether the `if` node contains nested conditionals
1110
- def nested_conditional?; end
1111
-
1112
- # Custom destructuring method. This is used to normalize the branches
1113
- # for `if` and `unless` nodes, to aid comparisons and conversions.
1114
- #
1115
- # @return [Array<Node>] the different parts of the `if` statement
1116
- def node_parts; end
1117
-
1118
- # Checks whether the `if` node is a ternary operator.
1119
- #
1120
- # @return [Boolean] whether the `if` node is a ternary operator
1121
- def ternary?; end
1122
-
1123
- # Checks whether this node is an `unless` statement. (This is not true
1124
- # of ternary operators and `if` statements.)
1125
- #
1126
- # @return [Boolean] whether the node is an `unless` statement
1127
- def unless?; end
1128
- end
1129
-
1130
- # A node extension for `in` nodes. This will be used in place of a plain
1131
- # node when the builder constructs the AST, making its methods available
1132
- # to all `in` nodes within RuboCop.
1133
- class RuboCop::AST::InPatternNode < ::RuboCop::AST::Node
1134
- # Returns the body of the `in` node.
1135
- #
1136
- # @return [Node, nil] the body of the `in` node
1137
- def body; end
1138
-
1139
- # Returns the index of the `in` branch within the `case` statement.
1140
- #
1141
- # @return [Integer] the index of the `in` branch
1142
- def branch_index; end
1143
-
1144
- # Returns a node of the pattern in the `in` branch.
1145
- #
1146
- # @return [Node] a pattern node
1147
- def pattern; end
1148
-
1149
- # Checks whether the `in` node has a `then` keyword.
1150
- #
1151
- # @return [Boolean] whether the `in` node has a `then` keyword
1152
- def then?; end
1153
- end
1154
-
1155
- # Used for modern support only!
1156
- # Not as thoroughly tested as legacy equivalent
1157
- #
1158
- # $ ruby-parse -e "foo[:bar]"
1159
- # (index
1160
- # (send nil :foo)
1161
- # (sym :bar))
1162
- # $ ruby-parse --legacy -e "foo[:bar]"
1163
- # (send
1164
- # (send nil :foo) :[]
1165
- # (sym :bar))
1166
- #
1167
- # The main RuboCop runs in legacy mode; this node is only used
1168
- # if user `AST::Builder.modernize` or `AST::Builder.emit_index=true`
1169
- class RuboCop::AST::IndexNode < ::RuboCop::AST::Node
1170
- include ::RuboCop::AST::ParameterizedNode
1171
- include ::RuboCop::AST::ParameterizedNode::RestArguments
1172
- include ::RuboCop::AST::MethodIdentifierPredicates
1173
- include ::RuboCop::AST::MethodDispatchNode
1174
-
1175
- # For similarity with legacy mode
1176
- #
1177
- # @return [Boolean]
1178
- def assignment_method?; end
1179
-
1180
- # For similarity with legacy mode
1181
- #
1182
- # @return [Boolean]
1183
- def attribute_accessor?; end
1184
-
1185
- # For similarity with legacy mode
1186
- def method_name; end
1187
-
1188
- private
1189
-
1190
- # An array containing the arguments of the dispatched method.
1191
- #
1192
- # @return [Array<Node>] the arguments of the dispatched method
1193
- def first_argument_index; end
1194
- end
1195
-
1196
- # Used for modern support only!
1197
- # Not as thoroughly tested as legacy equivalent
1198
- #
1199
- # $ ruby-parse -e "foo[:bar] = :baz"
1200
- # (indexasgn
1201
- # (send nil :foo)
1202
- # (sym :bar)
1203
- # (sym :baz))
1204
- # $ ruby-parse --legacy -e "foo[:bar] = :baz"
1205
- # (send
1206
- # (send nil :foo) :[]=
1207
- # (sym :bar)
1208
- # (sym :baz))
1209
- #
1210
- # The main RuboCop runs in legacy mode; this node is only used
1211
- # if user `AST::Builder.modernize` or `AST::Builder.emit_index=true`
1212
- class RuboCop::AST::IndexasgnNode < ::RuboCop::AST::Node
1213
- include ::RuboCop::AST::ParameterizedNode
1214
- include ::RuboCop::AST::ParameterizedNode::RestArguments
1215
- include ::RuboCop::AST::MethodIdentifierPredicates
1216
- include ::RuboCop::AST::MethodDispatchNode
1217
-
1218
- # For similarity with legacy mode
1219
- #
1220
- # @return [Boolean]
1221
- def assignment_method?; end
1222
-
1223
- # For similarity with legacy mode
1224
- #
1225
- # @return [Boolean]
1226
- def attribute_accessor?; end
1227
-
1228
- # For similarity with legacy mode
1229
- def method_name; end
1230
-
1231
- private
1232
-
1233
- # An array containing the arguments of the dispatched method.
1234
- #
1235
- # @return [Array<Node>] the arguments of the dispatched method
1236
- def first_argument_index; end
1237
- end
1238
-
1239
- # A node extension for `int` nodes. This will be used in place of a plain
1240
- # node when the builder constructs the AST, making its methods available to
1241
- # all `int` nodes within RuboCop.
1242
- class RuboCop::AST::IntNode < ::RuboCop::AST::Node
1243
- include ::RuboCop::AST::BasicLiteralNode
1244
- include ::RuboCop::AST::NumericNode
1245
- end
1246
-
1247
- # A node extension for `kwsplat` nodes. This will be used in place of a
1248
- # plain node when the builder constructs the AST, making its methods
1249
- # available to all `kwsplat` nodes within RuboCop.
1250
- class RuboCop::AST::KeywordSplatNode < ::RuboCop::AST::Node
1251
- include ::RuboCop::AST::HashElementNode
1252
-
1253
- # This is used for duck typing with `pair` nodes which also appear as
1254
- # `hash` elements.
1255
- #
1256
- # @return [false]
1257
- def colon?; end
1258
-
1259
- # This is used for duck typing with `pair` nodes which also appear as
1260
- # `hash` elements.
1261
- #
1262
- # @return [false]
1263
- def hash_rocket?; end
1264
-
1265
- # Custom destructuring method. This is used to normalize the branches
1266
- # for `pair` and `kwsplat` nodes, to add duck typing to `hash` elements.
1267
- #
1268
- # @return [Array<KeywordSplatNode>] the different parts of the `kwsplat`
1269
- def node_parts; end
1270
-
1271
- # Returns the operator for the `kwsplat` as a string.
1272
- #
1273
- # @return [String] the double splat operator
1274
- def operator; end
1275
- end
1276
-
1277
- RuboCop::AST::KeywordSplatNode::DOUBLE_SPLAT = T.let(T.unsafe(nil), String)
1278
-
1279
- # Used for modern support only:
1280
- # Not as thoroughly tested as legacy equivalent
1281
- #
1282
- # $ ruby-parse -e "->(foo) { bar }"
1283
- # (block
1284
- # (lambda)
1285
- # (args
1286
- # (arg :foo))
1287
- # (send nil :bar))
1288
- # $ ruby-parse --legacy -e "->(foo) { bar }"
1289
- # (block
1290
- # (send nil :lambda)
1291
- # (args
1292
- # (arg :foo))
1293
- # (send nil :bar))
1294
- #
1295
- # The main RuboCop runs in legacy mode; this node is only used
1296
- # if user `AST::Builder.modernize` or `AST::Builder.emit_lambda=true`
1297
- class RuboCop::AST::LambdaNode < ::RuboCop::AST::Node
1298
- include ::RuboCop::AST::ParameterizedNode
1299
- include ::RuboCop::AST::ParameterizedNode::RestArguments
1300
- include ::RuboCop::AST::MethodIdentifierPredicates
1301
- include ::RuboCop::AST::MethodDispatchNode
1302
-
1303
- # For similarity with legacy mode
1304
- #
1305
- # @return [Boolean]
1306
- def assignment_method?; end
1307
-
1308
- # For similarity with legacy mode
1309
- #
1310
- # @return [Boolean]
1311
- def attribute_accessor?; end
1312
-
1313
- # For similarity with legacy mode
1314
- #
1315
- # @return [Boolean]
1316
- def lambda?; end
1317
-
1318
- # For similarity with legacy mode
1319
- #
1320
- # @return [Boolean]
1321
- def lambda_literal?; end
1322
-
1323
- # For similarity with legacy mode
1324
- def method_name; end
1325
-
1326
- # For similarity with legacy mode
1327
- def receiver; end
1328
-
1329
- private
1330
-
1331
- # For similarity with legacy mode
1332
- def first_argument_index; end
1333
- end
1334
-
1335
- # Common functionality for nodes that are a kind of method dispatch:
1336
- # `send`, `csend`, `super`, `zsuper`, `yield`, `defined?`,
1337
- # and (modern only): `index`, `indexasgn`, `lambda`
1338
- module RuboCop::AST::MethodDispatchNode
1339
- include ::RuboCop::AST::MethodIdentifierPredicates
1340
- extend ::RuboCop::AST::NodePattern::Macros
1341
-
1342
- # Checks whether the dispatched method is an access modifier.
1343
- #
1344
- # @return [Boolean] whether the dispatched method is an access modifier
1345
- def access_modifier?; end
1346
-
1347
- def adjacent_def_modifier?(param0 = T.unsafe(nil)); end
1348
-
1349
- # Checks whether this node is an arithmetic operation
1350
- #
1351
- # @return [Boolean] whether the dispatched method is an arithmetic
1352
- # operation
1353
- def arithmetic_operation?; end
1354
-
1355
- # Checks whether the dispatched method is a setter method.
1356
- #
1357
- # @return [Boolean] whether the dispatched method is a setter
1358
- def assignment?; end
1359
-
1360
- # Checks whether the dispatched method is a bare access modifier that
1361
- # affects all methods defined after the macro.
1362
- #
1363
- # @return [Boolean] whether the dispatched method is a bare
1364
- # access modifier
1365
- def bare_access_modifier?; end
1366
-
1367
- def bare_access_modifier_declaration?(param0 = T.unsafe(nil)); end
1368
-
1369
- # Checks whether this is a binary operation.
1370
- #
1371
- # @example
1372
- #
1373
- # foo + bar
1374
- # @return [Bookean] whether this method is a binary operation
1375
- def binary_operation?; end
1376
-
1377
- # Whether this method dispatch has an explicit block.
1378
- #
1379
- # @return [Boolean] whether the dispatched method has a block
1380
- def block_literal?; end
1381
-
1382
- # The `block` or `numblock` node associated with this method dispatch, if any.
1383
- #
1384
- # @return [BlockNode, nil] the `block` or `numblock` node associated with this method
1385
- # call or `nil`
1386
- def block_node; end
1387
-
1388
- # Checks whether the name of the dispatched method matches the argument
1389
- # and has an implicit receiver.
1390
- #
1391
- # @param name [Symbol, String] the method name to check for
1392
- # @return [Boolean] whether the method name matches the argument
1393
- def command?(name); end
1394
-
1395
- # Checks whether the *explicit* receiver of this method dispatch is a
1396
- # `const` node.
1397
- #
1398
- # @return [Boolean] whether the receiver of this method dispatch
1399
- # is a `const` node
1400
- def const_receiver?; end
1401
-
1402
- # Checks if this node is part of a chain of `def` or `defs` modifiers.
1403
- #
1404
- # or `nil` if it isn't a def modifier
1405
- #
1406
- # @example
1407
- #
1408
- # private def foo; end
1409
- # @return [Node | nil] returns the `def|defs` node this is a modifier for,
1410
- def def_modifier(node = T.unsafe(nil)); end
1411
-
1412
- # Checks if this node is part of a chain of `def` or `defs` modifiers.
1413
- #
1414
- # See also `def_modifier` that returns the node or `nil`
1415
- #
1416
- # @example
1417
- #
1418
- # private def foo; end
1419
- # @return [Boolean] whether the `def|defs` node is a modifier or not.
1420
- def def_modifier?(node = T.unsafe(nil)); end
1421
-
1422
- # Checks whether the dispatched method uses a dot to connect the
1423
- # receiver and the method name.
1424
- #
1425
- # This is useful for comparison operators, which can be called either
1426
- # with or without a dot, i.e. `foo == bar` or `foo.== bar`.
1427
- #
1428
- # @return [Boolean] whether the method was called with a connecting dot
1429
- def dot?; end
1430
-
1431
- # Checks whether the dispatched method uses a double colon to connect the
1432
- # receiver and the method name.
1433
- #
1434
- # @return [Boolean] whether the method was called with a connecting dot
1435
- def double_colon?; end
1436
-
1437
- # Checks whether the method dispatch is the implicit form of `#call`,
1438
- # e.g. `foo.(bar)`.
1439
- #
1440
- # @return [Boolean] whether the method is the implicit form of `#call`
1441
- def implicit_call?; end
1442
-
1443
- def in_macro_scope?(param0 = T.unsafe(nil)); end
1444
-
1445
- # Checks whether this is a lambda. Some versions of parser parses
1446
- # non-literal lambdas as a method send.
1447
- #
1448
- # @return [Boolean] whether this method is a lambda
1449
- def lambda?; end
1450
-
1451
- # Checks whether this is a lambda literal (stabby lambda.)
1452
- #
1453
- # @example
1454
- #
1455
- # -> (foo) { bar }
1456
- # @return [Boolean] whether this method is a lambda literal
1457
- def lambda_literal?; end
1458
-
1459
- # Checks whether the dispatched method is a macro method. A macro method
1460
- # is defined as a method that sits in a class, module, or block body and
1461
- # has an implicit receiver.
1462
- #
1463
- # @note This does not include DSLs that use nested blocks, like RSpec
1464
- # @return [Boolean] whether the dispatched method is a macro method
1465
- def macro?; end
1466
-
1467
- # The name of the dispatched method as a symbol.
1468
- #
1469
- # @return [Symbol] the name of the dispatched method
1470
- def method_name; end
1471
-
1472
- # Checks whether the dispatched method is a non-bare access modifier that
1473
- # affects only the method it receives.
1474
- #
1475
- # @return [Boolean] whether the dispatched method is a non-bare
1476
- # access modifier
1477
- def non_bare_access_modifier?; end
1478
-
1479
- def non_bare_access_modifier_declaration?(param0 = T.unsafe(nil)); end
1480
-
1481
- # The receiving node of the method dispatch.
1482
- #
1483
- # @return [Node, nil] the receiver of the dispatched method or `nil`
1484
- def receiver; end
1485
-
1486
- # Checks whether the dispatched method uses a safe navigation operator to
1487
- # connect the receiver and the method name.
1488
- #
1489
- # @return [Boolean] whether the method was called with a connecting dot
1490
- def safe_navigation?; end
1491
-
1492
- # Checks whether the *explicit* receiver of this method dispatch is
1493
- # `self`.
1494
- #
1495
- # @return [Boolean] whether the receiver of this method dispatch is `self`
1496
- def self_receiver?; end
1497
-
1498
- # Checks whether the dispatched method is a setter method.
1499
- #
1500
- # @return [Boolean] whether the dispatched method is a setter
1501
- def setter_method?; end
1502
-
1503
- # Checks whether the dispatched method is a bare `private` or `protected`
1504
- # access modifier that affects all methods defined after the macro.
1505
- #
1506
- # @return [Boolean] whether the dispatched method is a bare
1507
- # `private` or `protected` access modifier
1508
- def special_modifier?; end
1509
-
1510
- # Checks whether this is a unary operation.
1511
- #
1512
- # @example
1513
- #
1514
- # -foo
1515
- # @return [Boolean] whether this method is a unary operation
1516
- def unary_operation?; end
1517
- end
1518
-
1519
- RuboCop::AST::MethodDispatchNode::ARITHMETIC_OPERATORS = T.let(T.unsafe(nil), Array)
1520
- RuboCop::AST::MethodDispatchNode::SPECIAL_MODIFIERS = T.let(T.unsafe(nil), Array)
1521
-
1522
- # Common predicates for nodes that reference method identifiers:
1523
- # `send`, `csend`, `def`, `defs`, `super`, `zsuper`
1524
- #
1525
- # @note this mixin expects `#method_name` and `#receiver` to be implemented
1526
- module RuboCop::AST::MethodIdentifierPredicates
1527
- # Checks whether the method is an assignment method.
1528
- #
1529
- # @return [Boolean] whether the method is an assignment
1530
- def assignment_method?; end
1531
-
1532
- # Checks whether the method is a bang method.
1533
- #
1534
- # @return [Boolean] whether the method is a bang method
1535
- def bang_method?; end
1536
-
1537
- # Checks whether the method is a camel case method,
1538
- # e.g. `Integer()`.
1539
- #
1540
- # @return [Boolean] whether the method is a camel case method
1541
- def camel_case_method?; end
1542
-
1543
- # Checks whether the method is a comparison method.
1544
- #
1545
- # @return [Boolean] whether the method is a comparison
1546
- def comparison_method?; end
1547
-
1548
- # Checks whether the *explicit* receiver of node is a `const` node.
1549
- #
1550
- # @return [Boolean] whether the receiver of this node is a `const` node
1551
- def const_receiver?; end
1552
-
1553
- # Checks whether the method is an Enumerable method.
1554
- #
1555
- # @return [Boolean] whether the method is an Enumerable method
1556
- def enumerable_method?; end
1557
-
1558
- # Checks whether the method is an enumerator method.
1559
- #
1560
- # @return [Boolean] whether the method is an enumerator
1561
- def enumerator_method?; end
1562
-
1563
- # Checks whether the method name matches the argument.
1564
- #
1565
- # @param name [Symbol, String] the method name to check for
1566
- # @return [Boolean] whether the method name matches the argument
1567
- def method?(name); end
1568
-
1569
- # Checks whether this is a negation method, i.e. `!` or keyword `not`.
1570
- #
1571
- # @return [Boolean] whether this method is a negation method
1572
- def negation_method?; end
1573
-
1574
- # Checks whether the method is a nonmutating Array method.
1575
- #
1576
- # @return [Boolean] whether the method is a nonmutating Array method
1577
- def nonmutating_array_method?; end
1578
-
1579
- # Checks whether the method is a nonmutating binary operator method.
1580
- #
1581
- # @return [Boolean] whether the method is a nonmutating binary operator method
1582
- def nonmutating_binary_operator_method?; end
1583
-
1584
- # Checks whether the method is a nonmutating Hash method.
1585
- #
1586
- # @return [Boolean] whether the method is a nonmutating Hash method
1587
- def nonmutating_hash_method?; end
1588
-
1589
- # Checks whether the method is a nonmutating operator method.
1590
- #
1591
- # @return [Boolean] whether the method is a nonmutating operator method
1592
- def nonmutating_operator_method?; end
1593
-
1594
- # Checks whether the method is a nonmutating String method.
1595
- #
1596
- # @return [Boolean] whether the method is a nonmutating String method
1597
- def nonmutating_string_method?; end
1598
-
1599
- # Checks whether the method is a nonmutating unary operator method.
1600
- #
1601
- # @return [Boolean] whether the method is a nonmutating unary operator method
1602
- def nonmutating_unary_operator_method?; end
1603
-
1604
- # Checks whether the method is an operator method.
1605
- #
1606
- # @return [Boolean] whether the method is an operator
1607
- def operator_method?; end
1608
-
1609
- # Checks whether the method is a predicate method.
1610
- #
1611
- # @return [Boolean] whether the method is a predicate method
1612
- def predicate_method?; end
1613
-
1614
- # Checks whether this is a prefix bang method, e.g. `!foo`.
1615
- #
1616
- # @return [Boolean] whether this method is a prefix bang
1617
- def prefix_bang?; end
1618
-
1619
- # Checks whether this is a prefix not method, e.g. `not foo`.
1620
- #
1621
- # @return [Boolean] whether this method is a prefix not
1622
- def prefix_not?; end
1623
-
1624
- # Checks whether the *explicit* receiver of this node is `self`.
1625
- #
1626
- # @return [Boolean] whether the receiver of this node is `self`
1627
- def self_receiver?; end
1628
- end
1629
-
1630
- RuboCop::AST::MethodIdentifierPredicates::ENUMERABLE_METHODS = T.let(T.unsafe(nil), Set)
1631
- RuboCop::AST::MethodIdentifierPredicates::ENUMERATOR_METHODS = T.let(T.unsafe(nil), Set)
1632
- RuboCop::AST::MethodIdentifierPredicates::NONMUTATING_ARRAY_METHODS = T.let(T.unsafe(nil), Set)
1633
- RuboCop::AST::MethodIdentifierPredicates::NONMUTATING_BINARY_OPERATOR_METHODS = T.let(T.unsafe(nil), Set)
1634
- RuboCop::AST::MethodIdentifierPredicates::NONMUTATING_HASH_METHODS = T.let(T.unsafe(nil), Set)
1635
- RuboCop::AST::MethodIdentifierPredicates::NONMUTATING_OPERATOR_METHODS = T.let(T.unsafe(nil), Set)
1636
- RuboCop::AST::MethodIdentifierPredicates::NONMUTATING_STRING_METHODS = T.let(T.unsafe(nil), Set)
1637
- RuboCop::AST::MethodIdentifierPredicates::NONMUTATING_UNARY_OPERATOR_METHODS = T.let(T.unsafe(nil), Set)
1638
-
1639
- # http://phrogz.net/programmingruby/language.html#table_18.4
1640
- RuboCop::AST::MethodIdentifierPredicates::OPERATOR_METHODS = T.let(T.unsafe(nil), Set)
1641
-
1642
- # Common functionality for nodes that can be used as modifiers:
1643
- # `if`, `while`, `until`
1644
- module RuboCop::AST::ModifierNode
1645
- # Checks whether the node is in a modifier form, i.e. a condition
1646
- # trailing behind an expression.
1647
- #
1648
- # @return [Boolean] whether the node is a modifier
1649
- def modifier_form?; end
1650
- end
1651
-
1652
- # A node extension for `module` nodes. This will be used in place of a
1653
- # plain node when the builder constructs the AST, making its methods
1654
- # available to all `module` nodes within RuboCop.
1655
- class RuboCop::AST::ModuleNode < ::RuboCop::AST::Node
1656
- # The body of this `module` node.
1657
- #
1658
- # @return [Node, nil] the body of the module
1659
- def body; end
1660
-
1661
- # The identifier for this `module` node.
1662
- #
1663
- # @return [Node] the identifier of the module
1664
- def identifier; end
1665
- end
1666
-
1667
- # A node extension for `next` nodes. This will be used in place of a
1668
- # plain node when the builder constructs the AST, making its methods
1669
- # available to all `next` nodes within RuboCop.
1670
- class RuboCop::AST::NextNode < ::RuboCop::AST::Node
1671
- include ::RuboCop::AST::ParameterizedNode
1672
- include ::RuboCop::AST::ParameterizedNode::WrappedArguments
1673
- end
1674
-
1675
- # `RuboCop::AST::Node` is a subclass of `Parser::AST::Node`. It provides
1676
- # access to parent nodes and an object-oriented way to traverse an AST with
1677
- # the power of `Enumerable`.
1678
- #
1679
- # It has predicate methods for every node type, like this:
1680
- #
1681
- # @example
1682
- # node.send_type? # Equivalent to: `node.type == :send`
1683
- # node.op_asgn_type? # Equivalent to: `node.type == :op_asgn`
1684
- #
1685
- # # Non-word characters (other than a-zA-Z0-9_) in type names are omitted.
1686
- # node.defined_type? # Equivalent to: `node.type == :defined?`
1687
- #
1688
- # # Find the first lvar node under the receiver node.
1689
- # lvar_node = node.each_descendant.find(&:lvar_type?)
1690
- class RuboCop::AST::Node < ::Parser::AST::Node
1691
- include ::RuboCop::AST::Sexp
1692
- include ::RuboCop::AST::Descendence
1693
- extend ::RuboCop::AST::NodePattern::Macros
1694
-
1695
- # @return [Node] a new instance of Node
1696
- # @see https://www.rubydoc.info/gems/ast/AST/Node:initialize
1697
- def initialize(type, children = T.unsafe(nil), properties = T.unsafe(nil)); end
1698
-
1699
- def __ENCODING___type?; end
1700
- def __FILE___type?; end
1701
- def __LINE___type?; end
1702
- def alias_type?; end
1703
-
1704
- # Returns an array of ancestor nodes.
1705
- # This is a shorthand for `node.each_ancestor.to_a`.
1706
- #
1707
- # @return [Array<Node>] an array of ancestor nodes
1708
- def ancestors; end
1709
-
1710
- def and_asgn_type?; end
1711
- def and_type?; end
1712
- def arg_expr_type?; end
1713
- def arg_type?; end
1714
- def args_type?; end
1715
-
1716
- # @return [Boolean]
1717
- def argument?; end
1718
-
1719
- # @return [Boolean]
1720
- def argument_type?; end
1721
-
1722
- def array_pattern_type?; end
1723
- def array_pattern_with_tail_type?; end
1724
- def array_type?; end
1725
-
1726
- # @return [Boolean]
1727
- def assignment?; end
1728
-
1729
- # Some cops treat the shovel operator as a kind of assignment.
1730
- def assignment_or_similar?(param0 = T.unsafe(nil)); end
1731
-
1732
- def back_ref_type?; end
1733
-
1734
- # @return [Boolean]
1735
- def basic_conditional?; end
1736
-
1737
- # @return [Boolean]
1738
- def basic_literal?; end
1739
-
1740
- def begin_type?; end
1741
- def block_pass_type?; end
1742
- def block_type?; end
1743
- def blockarg_expr_type?; end
1744
- def blockarg_type?; end
1745
-
1746
- # @return [Boolean]
1747
- def boolean_type?; end
1748
-
1749
- def break_type?; end
1750
-
1751
- # @return [Boolean]
1752
- def call_type?; end
1753
-
1754
- def case_match_type?; end
1755
- def case_type?; end
1756
- def casgn_type?; end
1757
- def cbase_type?; end
1758
-
1759
- # @return [Boolean]
1760
- def chained?; end
1761
-
1762
- def class_constructor?(param0 = T.unsafe(nil)); end
1763
- def class_definition?(param0 = T.unsafe(nil)); end
1764
- def class_type?; end
1765
- def complete!; end
1766
-
1767
- # @return [Boolean]
1768
- def complete?; end
1769
-
1770
- def complex_type?; end
1771
-
1772
- # @return [Boolean]
1773
- def conditional?; end
1774
-
1775
- def const_name; end
1776
- def const_pattern_type?; end
1777
- def const_type?; end
1778
- def csend_type?; end
1779
- def cvar_type?; end
1780
- def cvasgn_type?; end
1781
- def def_type?; end
1782
- def defined_module; end
1783
- def defined_module_name; end
1784
- def defined_type?; end
1785
- def defs_type?; end
1786
- def dstr_type?; end
1787
- def dsym_type?; end
1788
-
1789
- # Calls the given block for each ancestor node from parent to root.
1790
- # If no block is given, an `Enumerator` is returned.
1791
- #
1792
- # @overload each_ancestor
1793
- # @overload each_ancestor
1794
- # @overload each_ancestor
1795
- # @return [self] if a block is given
1796
- # @return [Enumerator] if no block is given
1797
- # @yieldparam node [Node] each ancestor node
1798
- def each_ancestor(*types, &block); end
1799
-
1800
- def eflipflop_type?; end
1801
- def empty_else_type?; end
1802
-
1803
- # @return [Boolean]
1804
- def empty_source?; end
1805
-
1806
- def ensure_type?; end
1807
-
1808
- # @return [Boolean]
1809
- def equals_asgn?; end
1810
-
1811
- def erange_type?; end
1812
- def false_type?; end
1813
-
1814
- # @return [Boolean]
1815
- def falsey_literal?; end
1816
-
1817
- def find_pattern_type?; end
1818
- def first_line; end
1819
- def float_type?; end
1820
- def for_type?; end
1821
- def forward_arg_type?; end
1822
- def forward_args_type?; end
1823
- def forwarded_args_type?; end
1824
- def global_const?(param0 = T.unsafe(nil), param1); end
1825
-
1826
- # @return [Boolean]
1827
- def guard_clause?; end
1828
-
1829
- def gvar_type?; end
1830
- def gvasgn_type?; end
1831
- def hash_pattern_type?; end
1832
- def hash_type?; end
1833
- def ident_type?; end
1834
- def if_guard_type?; end
1835
- def if_type?; end
1836
- def iflipflop_type?; end
1837
-
1838
- # @return [Boolean]
1839
- def immutable_literal?; end
1840
-
1841
- def in_match_type?; end
1842
- def in_pattern_type?; end
1843
- def index_type?; end
1844
- def indexasgn_type?; end
1845
- def int_type?; end
1846
- def irange_type?; end
1847
- def ivar_type?; end
1848
- def ivasgn_type?; end
1849
-
1850
- # @return [Boolean]
1851
- def keyword?; end
1852
-
1853
- def kwarg_type?; end
1854
- def kwargs_type?; end
1855
- def kwbegin_type?; end
1856
- def kwnilarg_type?; end
1857
- def kwoptarg_type?; end
1858
- def kwrestarg_type?; end
1859
- def kwsplat_type?; end
1860
- def lambda?(param0 = T.unsafe(nil)); end
1861
- def lambda_or_proc?(param0 = T.unsafe(nil)); end
1862
- def lambda_type?; end
1863
- def last_line; end
1864
-
1865
- # Use is discouraged, this is a potentially slow method and can lead
1866
- # to even slower algorithms
1867
- #
1868
- # @return [Node, nil] the left (aka previous) sibling
1869
- def left_sibling; end
1870
-
1871
- # Use is discouraged, this is a potentially slow method and can lead
1872
- # to even slower algorithms
1873
- #
1874
- # @return [Array<Node>] the left (aka previous) siblings
1875
- def left_siblings; end
1876
-
1877
- def line_count; end
1878
-
1879
- # @return [Boolean]
1880
- def literal?; end
1881
-
1882
- # NOTE: `loop { }` is a normal method call and thus not a loop keyword.
1883
- #
1884
- # @return [Boolean]
1885
- def loop_keyword?; end
1886
-
1887
- def lvar_type?; end
1888
- def lvasgn_type?; end
1889
- def masgn_type?; end
1890
- def match_alt_type?; end
1891
- def match_as_type?; end
1892
- def match_current_line_type?; end
1893
- def match_guard_clause?(param0 = T.unsafe(nil)); end
1894
- def match_nil_pattern_type?; end
1895
- def match_pattern_p_type?; end
1896
- def match_pattern_type?; end
1897
- def match_rest_type?; end
1898
- def match_var_type?; end
1899
- def match_with_lvasgn_type?; end
1900
- def match_with_trailing_comma_type?; end
1901
- def mlhs_type?; end
1902
- def module_definition?(param0 = T.unsafe(nil)); end
1903
- def module_type?; end
1904
-
1905
- # Predicates
1906
- #
1907
- # @return [Boolean]
1908
- def multiline?; end
1909
-
1910
- # @return [Boolean]
1911
- def mutable_literal?; end
1912
-
1913
- def new_class_or_module_block?(param0 = T.unsafe(nil)); end
1914
- def next_type?; end
1915
- def nil_type?; end
1916
-
1917
- # Common destructuring method. This can be used to normalize
1918
- # destructuring for different variations of the node.
1919
- # Some node types override this with their own custom
1920
- # destructuring method.
1921
- #
1922
- # @return [Array<Node>] the different parts of the ndde
1923
- def node_parts; end
1924
-
1925
- def nonempty_line_count; end
1926
- def not_type?; end
1927
- def nth_ref_type?; end
1928
- def numargs_type?; end
1929
- def numblock_type?; end
1930
-
1931
- # @return [Boolean]
1932
- def numeric_type?; end
1933
-
1934
- def objc_kwarg_type?; end
1935
- def objc_restarg_type?; end
1936
- def objc_varargs_type?; end
1937
- def op_asgn_type?; end
1938
-
1939
- # @return [Boolean]
1940
- def operator_keyword?; end
1941
-
1942
- def optarg_type?; end
1943
- def or_asgn_type?; end
1944
- def or_type?; end
1945
- def pair_type?; end
1946
-
1947
- # Returns the parent node, or `nil` if the receiver is a root node.
1948
- #
1949
- # @return [Node, nil] the parent node or `nil`
1950
- def parent; end
1951
-
1952
- # @return [Boolean]
1953
- def parent?; end
1954
-
1955
- # Searching the AST
1956
- def parent_module_name; end
1957
-
1958
- # @return [Boolean]
1959
- def parenthesized_call?; end
1960
-
1961
- def pin_type?; end
1962
-
1963
- # @return [Boolean]
1964
- def post_condition_loop?; end
1965
-
1966
- def postexe_type?; end
1967
- def preexe_type?; end
1968
- def proc?(param0 = T.unsafe(nil)); end
1969
- def procarg0_type?; end
1970
-
1971
- # Some expressions are evaluated for their value, some for their side
1972
- # effects, and some for both.
1973
- # If we know that expressions are useful only for their return values,
1974
- # and have no side effects, that means we can reorder them, change the
1975
- # number of times they are evaluated, or replace them with other
1976
- # expressions which are equivalent in value.
1977
- # So, is evaluation of this node free of side effects?
1978
- #
1979
- # @return [Boolean]
1980
- def pure?; end
1981
-
1982
- # @return [Boolean]
1983
- def range_type?; end
1984
-
1985
- def rational_type?; end
1986
- def receiver(param0 = T.unsafe(nil)); end
1987
- def recursive_basic_literal?; end
1988
- def recursive_literal?; end
1989
- def redo_type?; end
1990
-
1991
- # @return [Boolean]
1992
- def reference?; end
1993
-
1994
- def regexp_type?; end
1995
- def regopt_type?; end
1996
- def resbody_type?; end
1997
- def rescue_type?; end
1998
- def restarg_expr_type?; end
1999
- def restarg_type?; end
2000
- def retry_type?; end
2001
- def return_type?; end
2002
-
2003
- # Use is discouraged, this is a potentially slow method and can lead
2004
- # to even slower algorithms
2005
- #
2006
- # @return [Node, nil] the right (aka next) sibling
2007
- def right_sibling; end
2008
-
2009
- # Use is discouraged, this is a potentially slow method and can lead
2010
- # to even slower algorithms
2011
- #
2012
- # @return [Array<Node>] the right (aka next) siblings
2013
- def right_siblings; end
2014
-
2015
- # @return [Boolean]
2016
- def root?; end
2017
-
2018
- def sclass_type?; end
2019
- def self_type?; end
2020
- def send_type?; end
2021
- def shadowarg_type?; end
2022
-
2023
- # @return [Boolean]
2024
- def shorthand_asgn?; end
2025
-
2026
- # Returns the index of the receiver node in its siblings. (Sibling index
2027
- # uses zero based numbering.)
2028
- # Use is discouraged, this is a potentially slow method.
2029
- #
2030
- # @return [Integer, nil] the index of the receiver node in its siblings
2031
- def sibling_index; end
2032
-
2033
- # @return [Boolean]
2034
- def single_line?; end
2035
-
2036
- # NOTE: Some rare nodes may have no source, like `s(:args)` in `foo {}`
2037
- #
2038
- # @return [String, nil]
2039
- def source; end
2040
-
2041
- def source_length; end
2042
- def source_range; end
2043
-
2044
- # @return [Boolean]
2045
- def special_keyword?; end
2046
-
2047
- def splat_type?; end
2048
- def str_content(param0 = T.unsafe(nil)); end
2049
- def str_type?; end
2050
-
2051
- # @deprecated Use `:class_constructor?`
2052
- def struct_constructor?(param0 = T.unsafe(nil)); end
2053
-
2054
- def super_type?; end
2055
- def sym_type?; end
2056
- def true_type?; end
2057
-
2058
- # @return [Boolean]
2059
- def truthy_literal?; end
2060
-
2061
- def undef_type?; end
2062
- def unless_guard_type?; end
2063
- def until_post_type?; end
2064
- def until_type?; end
2065
-
2066
- # Override `AST::Node#updated` so that `AST::Processor` does not try to
2067
- # mutate our ASTs. Since we keep references from children to parents and
2068
- # not just the other way around, we cannot update an AST and share
2069
- # identical subtrees. Rather, the entire AST must be copied any time any
2070
- # part of it is changed.
2071
- def updated(type = T.unsafe(nil), children = T.unsafe(nil), properties = T.unsafe(nil)); end
2072
-
2073
- # Some expressions are evaluated for their value, some for their side
2074
- # effects, and some for both
2075
- # If we know that an expression is useful only for its side effects, that
2076
- # means we can transform it in ways which preserve the side effects, but
2077
- # change the return value
2078
- # So, does the return value of this node matter? If we changed it to
2079
- # `(...; nil)`, might that affect anything?
2080
- #
2081
- #
2082
- # @return [Boolean]
2083
- def value_used?; end
2084
-
2085
- # @return [Boolean]
2086
- def variable?; end
2087
-
2088
- def when_type?; end
2089
- def while_post_type?; end
2090
- def while_type?; end
2091
- def xstr_type?; end
2092
- def yield_type?; end
2093
- def zsuper_type?; end
2094
-
2095
- protected
2096
-
2097
- def parent=(node); end
2098
-
2099
- private
2100
-
2101
- # @return [Boolean]
2102
- def begin_value_used?; end
2103
-
2104
- # @return [Boolean]
2105
- def case_if_value_used?; end
2106
-
2107
- def defined_module0(param0 = T.unsafe(nil)); end
2108
-
2109
- # @return [Boolean]
2110
- def for_value_used?; end
2111
-
2112
- def parent_module_name_for_block(ancestor); end
2113
- def parent_module_name_for_sclass(sclass_node); end
2114
- def parent_module_name_part(node); end
2115
- def visit_ancestors(types); end
2116
-
2117
- # @return [Boolean]
2118
- def while_until_value_used?; end
2119
- end
2120
-
2121
- # @api private
2122
- RuboCop::AST::Node::ARGUMENT_TYPES = T.let(T.unsafe(nil), Set)
2123
-
2124
- # @api private
2125
- RuboCop::AST::Node::ASSIGNMENTS = T.let(T.unsafe(nil), Set)
2126
-
2127
- # @api private
2128
- RuboCop::AST::Node::BASIC_CONDITIONALS = T.let(T.unsafe(nil), Set)
2129
-
2130
- # @api private
2131
- RuboCop::AST::Node::BASIC_LITERALS = T.let(T.unsafe(nil), Set)
2132
-
2133
- # <=> isn't included here, because it doesn't return a boolean.
2134
- #
2135
- # @api private
2136
- RuboCop::AST::Node::COMPARISON_OPERATORS = T.let(T.unsafe(nil), Set)
2137
-
2138
- # @api private
2139
- RuboCop::AST::Node::COMPOSITE_LITERALS = T.let(T.unsafe(nil), Set)
2140
-
2141
- # @api private
2142
- RuboCop::AST::Node::CONDITIONALS = T.let(T.unsafe(nil), Set)
2143
-
2144
- # @api private
2145
- RuboCop::AST::Node::EQUALS_ASSIGNMENTS = T.let(T.unsafe(nil), Set)
2146
-
2147
- # @api private
2148
- RuboCop::AST::Node::FALSEY_LITERALS = T.let(T.unsafe(nil), Set)
2149
-
2150
- # @api private
2151
- RuboCop::AST::Node::IMMUTABLE_LITERALS = T.let(T.unsafe(nil), Set)
2152
-
2153
- # @api private
2154
- RuboCop::AST::Node::KEYWORDS = T.let(T.unsafe(nil), Set)
2155
-
2156
- # @api private
2157
- RuboCop::AST::Node::LITERALS = T.let(T.unsafe(nil), Set)
2158
-
2159
- RuboCop::AST::Node::LITERAL_RECURSIVE_METHODS = T.let(T.unsafe(nil), Set)
2160
- RuboCop::AST::Node::LITERAL_RECURSIVE_TYPES = T.let(T.unsafe(nil), Set)
2161
-
2162
- # @api private
2163
- RuboCop::AST::Node::LOOP_TYPES = T.let(T.unsafe(nil), Set)
2164
-
2165
- # @api private
2166
- RuboCop::AST::Node::MUTABLE_LITERALS = T.let(T.unsafe(nil), Set)
2167
-
2168
- # @api private
2169
- RuboCop::AST::Node::OPERATOR_KEYWORDS = T.let(T.unsafe(nil), Set)
2170
-
2171
- # @api private
2172
- RuboCop::AST::Node::POST_CONDITION_LOOP_TYPES = T.let(T.unsafe(nil), Set)
2173
-
2174
- # @api private
2175
- RuboCop::AST::Node::REFERENCES = T.let(T.unsafe(nil), Set)
2176
-
2177
- # @api private
2178
- RuboCop::AST::Node::SHORTHAND_ASSIGNMENTS = T.let(T.unsafe(nil), Set)
2179
-
2180
- # @api private
2181
- RuboCop::AST::Node::SPECIAL_KEYWORDS = T.let(T.unsafe(nil), Set)
2182
-
2183
- # @api private
2184
- RuboCop::AST::Node::TRUTHY_LITERALS = T.let(T.unsafe(nil), Set)
2185
-
2186
- # @api private
2187
- RuboCop::AST::Node::VARIABLES = T.let(T.unsafe(nil), Set)
2188
-
2189
- # This class performs a pattern-matching operation on an AST node.
2190
- #
2191
- # Detailed syntax: /docs/modules/ROOT/pages/node_pattern.adoc
2192
- #
2193
- # Initialize a new `NodePattern` with `NodePattern.new(pattern_string)`, then
2194
- # pass an AST node to `NodePattern#match`. Alternatively, use one of the class
2195
- # macros in `NodePattern::Macros` to define your own pattern-matching method.
2196
- #
2197
- # If the match fails, `nil` will be returned. If the match succeeds, the
2198
- # return value depends on whether a block was provided to `#match`, and
2199
- # whether the pattern contained any "captures" (values which are extracted
2200
- # from a matching AST.)
2201
- #
2202
- # - With block: #match yields the captures (if any) and passes the return
2203
- # value of the block through.
2204
- # - With no block, but one capture: the capture is returned.
2205
- # - With no block, but multiple captures: captures are returned as an array.
2206
- # - With no block and no captures: #match returns `true`.
2207
- class RuboCop::AST::NodePattern
2208
- include ::RuboCop::AST::NodePattern::MethodDefiner
2209
- extend ::Forwardable
2210
-
2211
- # @return [NodePattern] a new instance of NodePattern
2212
- def initialize(str, compiler: T.unsafe(nil)); end
2213
-
2214
- def ==(other); end
2215
- def as_json(_options = T.unsafe(nil)); end
2216
-
2217
- # Returns the value of attribute ast.
2218
- def ast; end
2219
-
2220
- def captures(*args, **_arg1, &block); end
2221
- def encode_with(coder); end
2222
- def eql?(other); end
2223
- def freeze; end
2224
- def init_with(coder); end
2225
- def marshal_dump; end
2226
- def marshal_load(pattern); end
2227
- def match(*args, **rest, &block); end
2228
-
2229
- # Returns the value of attribute match_code.
2230
- def match_code; end
2231
-
2232
- def named_parameters(*args, **_arg1, &block); end
2233
-
2234
- # Returns the value of attribute pattern.
2235
- def pattern; end
2236
-
2237
- def positional_parameters(*args, **_arg1, &block); end
2238
- def to_s; end
2239
-
2240
- class << self
2241
- # Yields its argument and any descendants, depth-first.
2242
- #
2243
- # @yield [element]
2244
- def descend(element, &block); end
2245
- end
2246
- end
2247
-
2248
- # Responsible to build the AST nodes for `NodePattern`
2249
- #
2250
- # Doc on how this fits in the compiling process:
2251
- # /docs/modules/ROOT/pages/node_pattern.adoc
2252
- class RuboCop::AST::NodePattern::Builder
2253
- def emit_atom(type, value); end
2254
- def emit_call(type, selector, args = T.unsafe(nil)); end
2255
- def emit_capture(capture_token, node); end
2256
- def emit_list(type, _begin, children, _end); end
2257
- def emit_subsequence(node_list); end
2258
- def emit_unary_op(type, _operator = T.unsafe(nil), *children); end
2259
- def emit_union(begin_t, pattern_lists, end_t); end
2260
-
2261
- private
2262
-
2263
- def n(type, *args); end
2264
-
2265
- # @return [Boolean]
2266
- def optimizable_as_set?(children); end
2267
-
2268
- def union_children(pattern_lists); end
2269
- end
2270
-
2271
- # A NodePattern comment, simplified version of ::Parser::Source::Comment
2272
- class RuboCop::AST::NodePattern::Comment
2273
- # @param range [Parser::Source::Range]
2274
- # @return [Comment] a new instance of Comment
2275
- def initialize(range); end
2276
-
2277
- # Compares comments. Two comments are equal if they
2278
- # correspond to the same source range.
2279
- #
2280
- # @param other [Object]
2281
- # @return [Boolean]
2282
- def ==(other); end
2283
-
2284
- # @return [String] a human-readable representation of this comment
2285
- def inspect; end
2286
-
2287
- # Returns the value of attribute location.
2288
- def loc; end
2289
-
2290
- # Returns the value of attribute location.
2291
- def location; end
2292
-
2293
- # @return [String]
2294
- def text; end
2295
- end
2296
-
2297
- # The top-level compiler holding the global state
2298
- # Defers work to its subcompilers
2299
- #
2300
- # Doc on how this fits in the compiling process:
2301
- # /docs/modules/ROOT/pages/node_pattern.adoc
2302
- class RuboCop::AST::NodePattern::Compiler
2303
- extend ::Forwardable
2304
-
2305
- # @return [Compiler] a new instance of Compiler
2306
- def initialize; end
2307
-
2308
- def bind(*args, **_arg1, &block); end
2309
-
2310
- # Returns the value of attribute binding.
2311
- def binding; end
2312
-
2313
- # Returns the value of attribute captures.
2314
- def captures; end
2315
-
2316
- def compile_as_atom(node); end
2317
- def compile_as_node_pattern(node, **options); end
2318
- def compile_sequence(sequence, var:); end
2319
-
2320
- # Enumerates `enum` while keeping track of state across
2321
- # union branches (captures and unification).
2322
- def each_union(enum, &block); end
2323
-
2324
- def freeze; end
2325
- def named_parameter(name); end
2326
-
2327
- # Returns the value of attribute named_parameters.
2328
- def named_parameters; end
2329
-
2330
- def next_capture; end
2331
- def parser; end
2332
- def positional_parameter(number); end
2333
-
2334
- # Returns the value of attribute positional_parameters.
2335
- def positional_parameters; end
2336
-
2337
- # Utilities
2338
- def with_temp_variables(*names, &block); end
2339
-
2340
- private
2341
-
2342
- def enforce_same_captures(enum); end
2343
- def new_capture; end
2344
- end
2345
-
2346
- # Generates code that evaluates to a value (Ruby object)
2347
- # This value responds to `===`.
2348
- #
2349
- # Doc on how this fits in the compiling process:
2350
- # /docs/modules/ROOT/pages/node_pattern.adoc
2351
- class RuboCop::AST::NodePattern::Compiler::AtomSubcompiler < ::RuboCop::AST::NodePattern::Compiler::Subcompiler
2352
- private
2353
-
2354
- def visit_const; end
2355
- def visit_named_parameter; end
2356
- def visit_number; end
2357
-
2358
- # Assumes other types are node patterns.
2359
- def visit_other_type; end
2360
-
2361
- def visit_positional_parameter; end
2362
- def visit_regexp; end
2363
- def visit_set; end
2364
- def visit_string; end
2365
- def visit_symbol; end
2366
- def visit_unify; end
2367
- end
2368
-
2369
- # Holds the list of bound variable names
2370
- class RuboCop::AST::NodePattern::Compiler::Binding
2371
- # @return [Binding] a new instance of Binding
2372
- def initialize; end
2373
-
2374
- # Yields the first time a given name is bound
2375
- #
2376
- # @return [String] bound variable name
2377
- def bind(name); end
2378
-
2379
- def union_bind(enum); end
2380
-
2381
- private
2382
-
2383
- def forbid(names); end
2384
- end
2385
-
2386
- # Variant of the Compiler with tracing information for nodes
2387
- class RuboCop::AST::NodePattern::Compiler::Debug < ::RuboCop::AST::NodePattern::Compiler
2388
- # @return [Debug] a new instance of Debug
2389
- def initialize; end
2390
-
2391
- def comments(*args, **_arg1, &block); end
2392
- def named_parameters; end
2393
-
2394
- # Returns the value of attribute node_ids.
2395
- def node_ids; end
2396
-
2397
- def parser; end
2398
- def tokens(*args, **_arg1, &block); end
2399
- end
2400
-
2401
- # @api private
2402
- class RuboCop::AST::NodePattern::Compiler::Debug::Colorizer
2403
- # @api private
2404
- # @return [Colorizer] a new instance of Colorizer
2405
- def initialize(pattern, compiler: T.unsafe(nil)); end
2406
-
2407
- # @api private
2408
- def compiler; end
2409
-
2410
- # @api private
2411
- def node_pattern; end
2412
-
2413
- # @api private
2414
- def pattern; end
2415
-
2416
- # @api private
2417
- # @return [Node] the Ruby AST
2418
- def test(ruby, trace: T.unsafe(nil)); end
2419
-
2420
- private
2421
-
2422
- # @api private
2423
- def ruby_ast(ruby); end
2424
-
2425
- # @api private
2426
- def ruby_parser; end
2427
- end
2428
-
2429
- # @api private
2430
- RuboCop::AST::NodePattern::Compiler::Debug::Colorizer::COLOR_SCHEME = T.let(T.unsafe(nil), Hash)
2431
-
2432
- # @api private
2433
- RuboCop::AST::NodePattern::Compiler::Debug::Colorizer::Compiler = RuboCop::AST::NodePattern::Compiler::Debug
2434
-
2435
- # Result of a NodePattern run against a particular AST
2436
- # Consider constructor is private
2437
- #
2438
- # @api private
2439
- class RuboCop::AST::NodePattern::Compiler::Debug::Colorizer::Result < ::Struct
2440
- # @api private
2441
- # @return [Hash] a map for {character_position => color}
2442
- def color_map(color_scheme = T.unsafe(nil)); end
2443
-
2444
- # @api private
2445
- # @return [String] a Rainbow colorized version of ruby
2446
- def colorize(color_scheme = T.unsafe(nil)); end
2447
-
2448
- # Returns the value of attribute colorizer
2449
- #
2450
- # @return [Object] the current value of colorizer
2451
- def colorizer; end
2452
-
2453
- # Sets the attribute colorizer
2454
- #
2455
- # @param value [Object] the value to set the attribute colorizer to.
2456
- # @return [Object] the newly set value
2457
- def colorizer=(_); end
2458
-
2459
- # @api private
2460
- # @return [Hash] a map for {node => matched?}, depth-first
2461
- def match_map; end
2462
-
2463
- # @api private
2464
- # @return [Boolean] a value of `Trace#matched?` or `:not_visitable`
2465
- def matched?(node); end
2466
-
2467
- # Returns the value of attribute returned
2468
- #
2469
- # @return [Object] the current value of returned
2470
- def returned; end
2471
-
2472
- # Sets the attribute returned
2473
- #
2474
- # @param value [Object] the value to set the attribute returned to.
2475
- # @return [Object] the newly set value
2476
- def returned=(_); end
2477
-
2478
- # Returns the value of attribute ruby_ast
2479
- #
2480
- # @return [Object] the current value of ruby_ast
2481
- def ruby_ast; end
2482
-
2483
- # Sets the attribute ruby_ast
2484
- #
2485
- # @param value [Object] the value to set the attribute ruby_ast to.
2486
- # @return [Object] the newly set value
2487
- def ruby_ast=(_); end
2488
-
2489
- # Returns the value of attribute trace
2490
- #
2491
- # @return [Object] the current value of trace
2492
- def trace; end
2493
-
2494
- # Sets the attribute trace
2495
- #
2496
- # @param value [Object] the value to set the attribute trace to.
2497
- # @return [Object] the newly set value
2498
- def trace=(_); end
2499
-
2500
- private
2501
-
2502
- # @api private
2503
- def ast; end
2504
-
2505
- # @api private
2506
- def color_map_for(node, color); end
2507
-
2508
- class << self
2509
- def [](*_arg0); end
2510
- def inspect; end
2511
- def keyword_init?; end
2512
- def members; end
2513
- def new(*_arg0); end
2514
- end
2515
- end
2516
-
2517
- # @api private
2518
- module RuboCop::AST::NodePattern::Compiler::Debug::InstrumentationSubcompiler
2519
- # @api private
2520
- def do_compile; end
2521
-
2522
- private
2523
-
2524
- # @api private
2525
- def node_id; end
2526
-
2527
- # @api private
2528
- def tracer(kind); end
2529
- end
2530
-
2531
- # @api private
2532
- class RuboCop::AST::NodePattern::Compiler::Debug::NodePatternSubcompiler < ::RuboCop::AST::NodePattern::Compiler::NodePatternSubcompiler
2533
- include ::RuboCop::AST::NodePattern::Compiler::Debug::InstrumentationSubcompiler
2534
- end
2535
-
2536
- # @api private
2537
- class RuboCop::AST::NodePattern::Compiler::Debug::SequenceSubcompiler < ::RuboCop::AST::NodePattern::Compiler::SequenceSubcompiler
2538
- include ::RuboCop::AST::NodePattern::Compiler::Debug::InstrumentationSubcompiler
2539
- end
2540
-
2541
- # Compiled node pattern requires a named parameter `trace`,
2542
- # which should be an instance of this class
2543
- class RuboCop::AST::NodePattern::Compiler::Debug::Trace
2544
- # @return [Trace] a new instance of Trace
2545
- def initialize; end
2546
-
2547
- def enter(node_id); end
2548
-
2549
- # return nil (not visited), false (not matched) or true (matched)
2550
- #
2551
- # @return [Boolean]
2552
- def matched?(node_id); end
2553
-
2554
- def success(node_id); end
2555
- end
2556
-
2557
- # Compiles code that evalues to true or false
2558
- # for a given value `var` (typically a RuboCop::AST::Node)
2559
- # or it's `node.type` if `seq_head` is true
2560
- #
2561
- # Doc on how this fits in the compiling process:
2562
- # /docs/modules/ROOT/pages/node_pattern.adoc
2563
- class RuboCop::AST::NodePattern::Compiler::NodePatternSubcompiler < ::RuboCop::AST::NodePattern::Compiler::Subcompiler
2564
- # @return [NodePatternSubcompiler] a new instance of NodePatternSubcompiler
2565
- def initialize(compiler, var: T.unsafe(nil), access: T.unsafe(nil), seq_head: T.unsafe(nil)); end
2566
-
2567
- # Returns the value of attribute access.
2568
- def access; end
2569
-
2570
- # Returns the value of attribute seq_head.
2571
- def seq_head; end
2572
-
2573
- private
2574
-
2575
- def access_element; end
2576
- def access_node; end
2577
-
2578
- # @param [Array<Node>, nil]
2579
- # @return [String, nil]
2580
- def compile_args(arg_list, first: T.unsafe(nil)); end
2581
-
2582
- def compile_guard_clause; end
2583
-
2584
- # Compiling helpers
2585
- def compile_value_match(value); end
2586
-
2587
- def multiple_access(kind); end
2588
- def visit_ascend; end
2589
- def visit_capture; end
2590
- def visit_descend; end
2591
- def visit_function_call; end
2592
- def visit_intersection; end
2593
- def visit_negation; end
2594
- def visit_node_type; end
2595
-
2596
- # Assumes other types are atoms.
2597
- def visit_other_type; end
2598
-
2599
- def visit_predicate; end
2600
- def visit_sequence; end
2601
- def visit_unify; end
2602
-
2603
- # Lists
2604
- def visit_union; end
2605
-
2606
- def visit_wildcard; end
2607
- end
2608
-
2609
- # Compiles terms within a sequence to code that evalues to true or false.
2610
- # Compilation of the nodes that can match only a single term is deferred to
2611
- # `NodePatternSubcompiler`; only nodes that can match multiple terms are
2612
- # compiled here.
2613
- # Assumes the given `var` is a `::RuboCop::AST::Node`
2614
- #
2615
- # Doc on how this fits in the compiling process:
2616
- # /docs/modules/ROOT/pages/node_pattern.adoc
2617
- #
2618
- class RuboCop::AST::NodePattern::Compiler::SequenceSubcompiler < ::RuboCop::AST::NodePattern::Compiler::Subcompiler
2619
- # Calls `compile_sequence`; the actual `compile` method
2620
- # will be used for the different terms of the sequence.
2621
- # The only case of re-entrant call to `compile` is `visit_capture`
2622
- #
2623
- # @return [SequenceSubcompiler] a new instance of SequenceSubcompiler
2624
- def initialize(compiler, sequence:, var:); end
2625
-
2626
- def compile_sequence; end
2627
-
2628
- # @api private
2629
- def in_sync; end
2630
-
2631
- protected
2632
-
2633
- def compile_terms(children = T.unsafe(nil), last_arity = T.unsafe(nil)); end
2634
-
2635
- # @api private
2636
- def cur_index; end
2637
-
2638
- # yield `sync_code` iff not already in sync
2639
- #
2640
- # @yield [code]
2641
- def sync; end
2642
-
2643
- private
2644
-
2645
- # Compilation helpers
2646
- def compile_and_advance(term); end
2647
-
2648
- def compile_any_order_branches(matched_var); end
2649
-
2650
- # @return [Array<String>] Else code, and init code (if any)
2651
- def compile_any_order_else; end
2652
-
2653
- def compile_captured_repetition(child_code, child_captures); end
2654
- def compile_case(when_branches, else_code); end
2655
- def compile_child_nb_guard(arity_range); end
2656
- def compile_cur_index; end
2657
- def compile_index(cur = T.unsafe(nil)); end
2658
- def compile_loop(term); end
2659
- def compile_loop_advance(to = T.unsafe(nil)); end
2660
-
2661
- # Assumes `@cur_index` is already updated
2662
- def compile_matched(kind); end
2663
-
2664
- def compile_max_matched; end
2665
-
2666
- # @return [String] code that evaluates to `false` if the matched arity is too small
2667
- def compile_min_check; end
2668
-
2669
- def compile_remaining; end
2670
-
2671
- # @return [Hash] of {subcompiler => code}
2672
- def compile_union_forks; end
2673
-
2674
- def empty_loop; end
2675
- def handle_prev; end
2676
-
2677
- # Modifies in place `forks`
2678
- # Syncs our state
2679
- def merge_forks!(forks); end
2680
-
2681
- # Modifies in place `forks` to insure that `cur_{child|index}_var` are ok
2682
- def preserve_union_start(forks); end
2683
-
2684
- # E.g. For sequence `(_ _? <_ _>)`, arities are: 1, 0..1, 2
2685
- # and remaining arities are: 3..4, 2..3, 2..2, 0..0
2686
- #
2687
- # @return [Array<Range>] total arities (as Ranges) of remaining children nodes
2688
- def remaining_arities(children, last_arity); end
2689
-
2690
- # returns truthy iff `@cur_index` switched to relative from end mode (i.e. < 0)
2691
- def use_index_from_end; end
2692
-
2693
- def visit_any_order; end
2694
- def visit_capture; end
2695
-
2696
- # Single node patterns are all handled here
2697
- def visit_other_type; end
2698
-
2699
- def visit_repetition; end
2700
- def visit_rest; end
2701
- def visit_union; end
2702
-
2703
- # NOTE: assumes `@cur_index != :seq_head`. Node types using `within_loop` must
2704
- # have `def in_sequence_head; :raise; end`
2705
- def within_loop; end
2706
- end
2707
-
2708
- RuboCop::AST::NodePattern::Compiler::SequenceSubcompiler::DELTA = T.let(T.unsafe(nil), Integer)
2709
- RuboCop::AST::NodePattern::Compiler::SequenceSubcompiler::POSITIVE = T.let(T.unsafe(nil), Proc)
2710
-
2711
- # Base class for subcompilers
2712
- # Implements visitor pattern
2713
- #
2714
- # Doc on how this fits in the compiling process:
2715
- # /docs/modules/ROOT/pages/node_pattern.adoc
2716
- class RuboCop::AST::NodePattern::Compiler::Subcompiler
2717
- # @return [Subcompiler] a new instance of Subcompiler
2718
- def initialize(compiler); end
2719
-
2720
- def compile(node); end
2721
-
2722
- # Returns the value of attribute compiler.
2723
- def compiler; end
2724
-
2725
- private
2726
-
2727
- def do_compile; end
2728
-
2729
- # Returns the value of attribute node.
2730
- def node; end
2731
-
2732
- class << self
2733
- # @private
2734
- def inherited(base); end
2735
-
2736
- # @private
2737
- def method_added(method); end
2738
-
2739
- # Returns the value of attribute registry.
2740
- def registry; end
2741
- end
2742
- end
2743
-
2744
- class RuboCop::AST::NodePattern::Invalid < ::StandardError; end
2745
-
2746
- # Lexer class for `NodePattern`
2747
- #
2748
- # Doc on how this fits in the compiling process:
2749
- # /docs/modules/ROOT/pages/node_pattern.adoc
2750
- class RuboCop::AST::NodePattern::Lexer < ::RuboCop::AST::NodePattern::LexerRex
2751
- # @return [Lexer] a new instance of Lexer
2752
- def initialize(source); end
2753
-
2754
- # Returns the value of attribute comments.
2755
- def comments; end
2756
-
2757
- # Returns the value of attribute source_buffer.
2758
- def source_buffer; end
2759
-
2760
- # Returns the value of attribute tokens.
2761
- def tokens; end
2762
-
2763
- private
2764
-
2765
- def do_parse; end
2766
-
2767
- # @return [token]
2768
- def emit(type); end
2769
-
2770
- def emit_comment; end
2771
- def emit_regexp; end
2772
- def token(type, value); end
2773
- end
2774
-
2775
- RuboCop::AST::NodePattern::Lexer::Error = RuboCop::AST::NodePattern::LexerRex::ScanError
2776
- RuboCop::AST::NodePattern::Lexer::REGEXP_OPTIONS = T.let(T.unsafe(nil), Hash)
2777
-
2778
- # The generated lexer RuboCop::AST::NodePattern::LexerRex
2779
- class RuboCop::AST::NodePattern::LexerRex
2780
- # Yields on the current action.
2781
- def action; end
2782
-
2783
- # The file name / path
2784
- def filename; end
2785
-
2786
- # The file name / path
2787
- def filename=(_arg0); end
2788
-
2789
- # The current location in the parse.
2790
- def location; end
2791
-
2792
- # The StringScanner for this lexer.
2793
- def match; end
2794
-
2795
- # The match groups for the current scan.
2796
- def matches; end
2797
-
2798
- # Lex the next token.
2799
- def next_token; end
2800
-
2801
- # Parse the given string.
2802
- def parse(str); end
2803
-
2804
- # Read in and parse the file at +path+.
2805
- def parse_file(path); end
2806
-
2807
- # The current scanner class. Must be overridden in subclasses.
2808
- def scanner_class; end
2809
-
2810
- # The StringScanner for this lexer.
2811
- def ss; end
2812
-
2813
- # The StringScanner for this lexer.
2814
- def ss=(_arg0); end
2815
-
2816
- # The current lexical state.
2817
- def state; end
2818
-
2819
- # The current lexical state.
2820
- def state=(_arg0); end
2821
- end
2822
-
2823
- RuboCop::AST::NodePattern::LexerRex::CALL = T.let(T.unsafe(nil), Regexp)
2824
-
2825
- # :stopdoc:
2826
- RuboCop::AST::NodePattern::LexerRex::CONST_NAME = T.let(T.unsafe(nil), Regexp)
2827
-
2828
- RuboCop::AST::NodePattern::LexerRex::IDENTIFIER = T.let(T.unsafe(nil), Regexp)
2829
-
2830
- # :startdoc:
2831
- # :stopdoc:
2832
- class RuboCop::AST::NodePattern::LexerRex::LexerError < ::StandardError; end
2833
-
2834
- RuboCop::AST::NodePattern::LexerRex::NODE_TYPE = T.let(T.unsafe(nil), Regexp)
2835
- RuboCop::AST::NodePattern::LexerRex::REGEXP = T.let(T.unsafe(nil), Regexp)
2836
- RuboCop::AST::NodePattern::LexerRex::REGEXP_BODY = T.let(T.unsafe(nil), Regexp)
2837
- RuboCop::AST::NodePattern::LexerRex::SYMBOL_NAME = T.let(T.unsafe(nil), Regexp)
2838
- class RuboCop::AST::NodePattern::LexerRex::ScanError < ::RuboCop::AST::NodePattern::LexerRex::LexerError; end
2839
-
2840
- # Helpers for defining methods based on a pattern string
2841
- module RuboCop::AST::NodePattern::Macros
2842
- # Define a method which applies a pattern to an AST node
2843
- #
2844
- # The new method will return nil if the node does not match.
2845
- # If the node matches, and a block is provided, the new method will
2846
- # yield to the block (passing any captures as block arguments).
2847
- # If the node matches, and no block is provided, the new method will
2848
- # return the captures, or `true` if there were none.
2849
- def def_node_matcher(method_name, pattern_str, **keyword_defaults); end
2850
-
2851
- # Define a method which recurses over the descendants of an AST node,
2852
- # checking whether any of them match the provided pattern
2853
- #
2854
- # If the method name ends with '?', the new method will return `true`
2855
- # as soon as it finds a descendant which matches. Otherwise, it will
2856
- # yield all descendants which match.
2857
- def def_node_search(method_name, pattern_str, **keyword_defaults); end
2858
- end
2859
-
2860
- # Functionality to turn `match_code` into methods/lambda
2861
- module RuboCop::AST::NodePattern::MethodDefiner
2862
- def as_lambda; end
2863
- def compile_as_lambda; end
2864
- def def_node_matcher(base, method_name, **defaults); end
2865
- def def_node_search(base, method_name, **defaults); end
2866
-
2867
- private
2868
-
2869
- def compile_init; end
2870
- def def_helper(base, method_name, **defaults); end
2871
- def emit_keyword_list(forwarding: T.unsafe(nil)); end
2872
- def emit_lambda_code; end
2873
- def emit_method_code; end
2874
- def emit_node_search(method_name); end
2875
- def emit_node_search_body(method_name, prelude:, on_match:); end
2876
- def emit_param_list; end
2877
- def emit_params(*first, forwarding: T.unsafe(nil)); end
2878
- def emit_retval; end
2879
- def emit_yield_capture(when_no_capture = T.unsafe(nil), yield_with: T.unsafe(nil)); end
2880
-
2881
- # This method minimizes the closure for our method
2882
- def wrapping_block(method_name, **defaults); end
2883
- end
2884
-
2885
- # Base class for AST Nodes of a `NodePattern`
2886
- class RuboCop::AST::NodePattern::Node < ::Parser::AST::Node
2887
- include ::RuboCop::AST::Descendence
2888
- extend ::Forwardable
2889
-
2890
- # Note: `arity.end` may be `Float::INFINITY`
2891
- #
2892
- # @return [Integer, Range] An Integer for fixed length terms, otherwise a Range.
2893
- def arity; end
2894
-
2895
- # @return [Range] arity as a Range
2896
- def arity_range; end
2897
-
2898
- # @return [Boolean]
2899
- def capture?; end
2900
-
2901
- # @return [Node] most nodes have only one child
2902
- def child; end
2903
-
2904
- # @return [Array<Node>]
2905
- def children_nodes; end
2906
-
2907
- # @return [Array<Node>, nil] replace node with result, or `nil` if no change requested.
2908
- def in_sequence_head; end
2909
-
2910
- # that matches within a Set (e.g. `42`, `:sym` but not `/regexp/`)
2911
- #
2912
- # @return [Boolean] returns true for nodes having a Ruby literal equivalent
2913
- def matches_within_set?; end
2914
-
2915
- # @return [Integer] nb of captures of that node and its descendants
2916
- def nb_captures; end
2917
-
2918
- # To be overridden by subclasses
2919
- #
2920
- # @return [Boolean]
2921
- def rest?; end
2922
-
2923
- # @return [Boolean] returns whether it matches a variable number of elements
2924
- def variadic?; end
2925
-
2926
- def with(type: T.unsafe(nil), children: T.unsafe(nil), location: T.unsafe(nil)); end
2927
- end
2928
-
2929
- # Node class for `<int str ...>`
2930
- class RuboCop::AST::NodePattern::Node::AnyOrder < ::RuboCop::AST::NodePattern::Node
2931
- include ::RuboCop::AST::NodePattern::Node::ForbidInSeqHead
2932
-
2933
- def arity; end
2934
-
2935
- # @return [Boolean]
2936
- def ends_with_rest?; end
2937
-
2938
- def rest_node; end
2939
- def term_nodes; end
2940
- end
2941
-
2942
- RuboCop::AST::NodePattern::Node::AnyOrder::ARITIES = T.let(T.unsafe(nil), Hash)
2943
-
2944
- # Node class for `$something`
2945
- class RuboCop::AST::NodePattern::Node::Capture < ::RuboCop::AST::NodePattern::Node
2946
- def arity(*args, **_arg1, &block); end
2947
-
2948
- # @return [Boolean]
2949
- def capture?; end
2950
-
2951
- def in_sequence_head; end
2952
- def nb_captures; end
2953
- def rest?(*args, **_arg1, &block); end
2954
- end
2955
-
2956
- module RuboCop::AST::NodePattern::Node::ForbidInSeqHead
2957
- # @raise [NodePattern::Invalid]
2958
- def in_sequence_head; end
2959
- end
2960
-
2961
- RuboCop::AST::NodePattern::Node::FunctionCall = RuboCop::AST::NodePattern::Node::Predicate
2962
- RuboCop::AST::NodePattern::Node::INT_TO_RANGE = T.let(T.unsafe(nil), Hash)
2963
-
2964
- # Registry
2965
- RuboCop::AST::NodePattern::Node::MAP = T.let(T.unsafe(nil), Hash)
2966
-
2967
- RuboCop::AST::NodePattern::Node::MATCHES_WITHIN_SET = T.let(T.unsafe(nil), Set)
2968
-
2969
- # Node class for `predicate?(:arg, :list)`
2970
- class RuboCop::AST::NodePattern::Node::Predicate < ::RuboCop::AST::NodePattern::Node
2971
- def arg_list; end
2972
- def method_name; end
2973
- end
2974
-
2975
- # Node class for `int+`
2976
- class RuboCop::AST::NodePattern::Node::Repetition < ::RuboCop::AST::NodePattern::Node
2977
- include ::RuboCop::AST::NodePattern::Node::ForbidInSeqHead
2978
-
2979
- def arity; end
2980
- def operator; end
2981
- end
2982
-
2983
- RuboCop::AST::NodePattern::Node::Repetition::ARITIES = T.let(T.unsafe(nil), Hash)
2984
-
2985
- # Node class for `...`
2986
- class RuboCop::AST::NodePattern::Node::Rest < ::RuboCop::AST::NodePattern::Node
2987
- def arity; end
2988
- def in_sequence_head; end
2989
-
2990
- # @return [Boolean]
2991
- def rest?; end
2992
- end
2993
-
2994
- RuboCop::AST::NodePattern::Node::Rest::ARITY = T.let(T.unsafe(nil), Range)
2995
-
2996
- # Node class for `(type first second ...)`
2997
- class RuboCop::AST::NodePattern::Node::Sequence < ::RuboCop::AST::NodePattern::Node
2998
- include ::RuboCop::AST::NodePattern::Node::ForbidInSeqHead
2999
-
3000
- # @return [Sequence] a new instance of Sequence
3001
- def initialize(type, children = T.unsafe(nil), properties = T.unsafe(nil)); end
3002
- end
3003
-
3004
- # A list (potentially empty) of nodes; part of a Union
3005
- class RuboCop::AST::NodePattern::Node::Subsequence < ::RuboCop::AST::NodePattern::Node
3006
- include ::RuboCop::AST::NodePattern::Node::ForbidInSeqHead
3007
-
3008
- def arity; end
3009
- def in_sequence_head; end
3010
- end
3011
-
3012
- # Node class for `{ ... }`
3013
- class RuboCop::AST::NodePattern::Node::Union < ::RuboCop::AST::NodePattern::Node
3014
- def arity; end
3015
- def in_sequence_head; end
3016
- end
3017
-
3018
- # Parser for NodePattern
3019
- # Note: class reopened in `parser.racc`
3020
- #
3021
- # Doc on how this fits in the compiling process:
3022
- # /docs/modules/ROOT/pages/node_pattern.adoc
3023
- class RuboCop::AST::NodePattern::Parser < ::Racc::Parser
3024
- extend ::Forwardable
3025
-
3026
- # @return [Parser] a new instance of Parser
3027
- def initialize(builder = T.unsafe(nil)); end
3028
-
3029
- def _reduce_10(val, _values); end
3030
- def _reduce_11(val, _values); end
3031
-
3032
- # reduce 12 omitted
3033
- def _reduce_13(val, _values); end
3034
-
3035
- def _reduce_14(val, _values); end
3036
- def _reduce_15(val, _values); end
3037
- def _reduce_16(val, _values); end
3038
- def _reduce_17(val, _values); end
3039
- def _reduce_18(val, _values); end
3040
- def _reduce_19(val, _values); end
3041
-
3042
- # reduce 1 omitted
3043
- def _reduce_2(val, _values); end
3044
-
3045
- def _reduce_20(val, _values); end
3046
- def _reduce_21(val, _values); end
3047
- def _reduce_22(val, _values); end
3048
-
3049
- # reduce 24 omitted
3050
- def _reduce_25(val, _values); end
3051
-
3052
- def _reduce_26(val, _values); end
3053
- def _reduce_3(val, _values); end
3054
-
3055
- # reduce 32 omitted
3056
- def _reduce_33(val, _values); end
3057
-
3058
- # reduce 36 omitted
3059
- def _reduce_37(val, _values); end
3060
-
3061
- def _reduce_38(val, _values); end
3062
- def _reduce_39(val, _values); end
3063
- def _reduce_4(val, _values); end
3064
- def _reduce_40(val, _values); end
3065
- def _reduce_41(val, _values); end
3066
- def _reduce_42(val, _values); end
3067
- def _reduce_43(val, _values); end
3068
- def _reduce_44(val, _values); end
3069
- def _reduce_45(val, _values); end
3070
- def _reduce_46(val, _values); end
3071
- def _reduce_5(val, _values); end
3072
- def _reduce_6(val, _values); end
3073
- def _reduce_7(val, _values); end
3074
- def _reduce_8(val, _values); end
3075
- def _reduce_9(val, _values); end
3076
- def _reduce_none(val, _values); end
3077
- def emit_atom(*args, **_arg1, &block); end
3078
- def emit_call(*args, **_arg1, &block); end
3079
- def emit_capture(*args, **_arg1, &block); end
3080
- def emit_list(*args, **_arg1, &block); end
3081
- def emit_unary_op(*args, **_arg1, &block); end
3082
- def emit_union(*args, **_arg1, &block); end
3083
- def inspect; end
3084
- def next_token(*args, **_arg1, &block); end
3085
-
3086
- # (Similar API to `parser` gem)
3087
- # Parses a source and returns the AST.
3088
- #
3089
- # @param source_buffer [Parser::Source::Buffer, String] The source buffer to parse.
3090
- # @return [NodePattern::Node]
3091
- def parse(source); end
3092
-
3093
- private
3094
-
3095
- # @raise [NodePattern::Invalid]
3096
- def enforce_unary(node); end
3097
-
3098
- # Overrides Racc::Parser's method:
3099
- #
3100
- # @raise [NodePattern::Invalid]
3101
- def on_error(token, val, _vstack); end
3102
- end
3103
-
3104
- RuboCop::AST::NodePattern::Parser::Builder = RuboCop::AST::NodePattern::Builder
3105
- RuboCop::AST::NodePattern::Parser::Lexer = RuboCop::AST::NodePattern::Lexer
3106
- RuboCop::AST::NodePattern::Parser::Racc_arg = T.let(T.unsafe(nil), Array)
3107
- RuboCop::AST::NodePattern::Parser::Racc_token_to_s_table = T.let(T.unsafe(nil), Array)
3108
-
3109
- # Overrides Parser to use `WithMeta` variants and provide additional methods
3110
- class RuboCop::AST::NodePattern::Parser::WithMeta < ::RuboCop::AST::NodePattern::Parser
3111
- # Returns the value of attribute comments.
3112
- def comments; end
3113
-
3114
- def do_parse; end
3115
-
3116
- # Returns the value of attribute tokens.
3117
- def tokens; end
3118
- end
3119
-
3120
- # Overrides Builder to emit nodes with locations
3121
- class RuboCop::AST::NodePattern::Parser::WithMeta::Builder < ::RuboCop::AST::NodePattern::Builder
3122
- def emit_atom(type, token); end
3123
- def emit_call(type, selector_t, args = T.unsafe(nil)); end
3124
- def emit_list(type, begin_t, children, end_t); end
3125
- def emit_unary_op(type, operator_t = T.unsafe(nil), *children); end
3126
-
3127
- private
3128
-
3129
- def join_exprs(left_expr, right_expr); end
3130
- def loc(token_or_range); end
3131
- def n(type, children, source_map); end
3132
- def source_map(token_or_range, begin_t: T.unsafe(nil), end_t: T.unsafe(nil), operator_t: T.unsafe(nil), selector_t: T.unsafe(nil)); end
3133
- end
3134
-
3135
- # Overrides Lexer to token locations and comments
3136
- class RuboCop::AST::NodePattern::Parser::WithMeta::Lexer < ::RuboCop::AST::NodePattern::Lexer
3137
- # @return [Lexer] a new instance of Lexer
3138
- def initialize(str_or_buffer); end
3139
-
3140
- def emit_comment; end
3141
-
3142
- # @return [::Parser::Source::Range] last match's position
3143
- def pos; end
3144
-
3145
- # Returns the value of attribute source_buffer.
3146
- def source_buffer; end
3147
-
3148
- def token(type, value); end
3149
- end
3150
-
3151
- # Utility to assign a set of values to a constant
3152
- module RuboCop::AST::NodePattern::Sets
3153
- class << self
3154
- def [](set); end
3155
- def name(set); end
3156
- def uniq(name); end
3157
- end
3158
- end
3159
-
3160
- RuboCop::AST::NodePattern::Sets::MAX = T.let(T.unsafe(nil), Integer)
3161
- RuboCop::AST::NodePattern::Sets::REGISTRY = T.let(T.unsafe(nil), Hash)
3162
- RuboCop::AST::NodePattern::Sets::SET_0_1 = T.let(T.unsafe(nil), Set)
3163
- RuboCop::AST::NodePattern::Sets::SET_10_10 = T.let(T.unsafe(nil), Set)
3164
- RuboCop::AST::NodePattern::Sets::SET_1_1 = T.let(T.unsafe(nil), Set)
3165
- RuboCop::AST::NodePattern::Sets::SET_ABSTRACT_OVERRIDE_OVERRIDABLE_ETC = T.let(T.unsafe(nil), Set)
3166
- RuboCop::AST::NodePattern::Sets::SET_ADD_DEPENDENCY_ADD_RUNTIME_DEPENDENCY_ADD_DEVELOPMENT_DEPENDENCY = T.let(T.unsafe(nil), Set)
3167
- RuboCop::AST::NodePattern::Sets::SET_ANY_ALL_NORETURN_ETC = T.let(T.unsafe(nil), Set)
3168
- RuboCop::AST::NodePattern::Sets::SET_ATTR_READER_ATTR_WRITER_ATTR_ACCESSOR = T.let(T.unsafe(nil), Set)
3169
- RuboCop::AST::NodePattern::Sets::SET_ATTR_READER_ATTR_WRITER_ATTR_ACCESSOR_ATTR = T.let(T.unsafe(nil), Set)
3170
- RuboCop::AST::NodePattern::Sets::SET_BRANCH_REF_TAG = T.let(T.unsafe(nil), Set)
3171
- RuboCop::AST::NodePattern::Sets::SET_CAPTURE2_CAPTURE2E_CAPTURE3_ETC = T.let(T.unsafe(nil), Set)
3172
- RuboCop::AST::NodePattern::Sets::SET_CIPHER_DIGEST = T.let(T.unsafe(nil), Set)
3173
- RuboCop::AST::NodePattern::Sets::SET_CLASS_EVAL_INSTANCE_EVAL = T.let(T.unsafe(nil), Set)
3174
- RuboCop::AST::NodePattern::Sets::SET_CLASS_EVAL_MODULE_EVAL = T.let(T.unsafe(nil), Set)
3175
- RuboCop::AST::NodePattern::Sets::SET_CLASS_MODULE = T.let(T.unsafe(nil), Set)
3176
- RuboCop::AST::NodePattern::Sets::SET_CLASS_MODULE_STRUCT = T.let(T.unsafe(nil), Set)
3177
- RuboCop::AST::NodePattern::Sets::SET_CONSTANTIZE_CONSTANTS_CONST_GET = T.let(T.unsafe(nil), Set)
3178
- RuboCop::AST::NodePattern::Sets::SET_COUNT_LENGTH_SIZE = T.let(T.unsafe(nil), Set)
3179
- RuboCop::AST::NodePattern::Sets::SET_DEFINE_METHOD = T.let(T.unsafe(nil), Set)
3180
- RuboCop::AST::NodePattern::Sets::SET_DEFINE_METHOD_DEFINE_SINGLETON_METHOD = T.let(T.unsafe(nil), Set)
3181
- RuboCop::AST::NodePattern::Sets::SET_EACH_WITH_INDEX_WITH_INDEX = T.let(T.unsafe(nil), Set)
3182
- RuboCop::AST::NodePattern::Sets::SET_EACH_WITH_OBJECT_WITH_OBJECT = T.let(T.unsafe(nil), Set)
3183
- RuboCop::AST::NodePattern::Sets::SET_ENUMERATOR_RATIONAL_COMPLEX_THREAD = T.let(T.unsafe(nil), Set)
3184
- RuboCop::AST::NodePattern::Sets::SET_ESCAPE_ENCODE_UNESCAPE_DECODE = T.let(T.unsafe(nil), Set)
3185
- RuboCop::AST::NodePattern::Sets::SET_EXIST_EXISTS = T.let(T.unsafe(nil), Set)
3186
- RuboCop::AST::NodePattern::Sets::SET_FIRST_LAST__ETC = T.let(T.unsafe(nil), Set)
3187
- RuboCop::AST::NodePattern::Sets::SET_FIXNUM_BIGNUM = T.let(T.unsafe(nil), Set)
3188
- RuboCop::AST::NodePattern::Sets::SET_FORMAT_SPRINTF_PRINTF = T.let(T.unsafe(nil), Set)
3189
- RuboCop::AST::NodePattern::Sets::SET_GSUB_GSUB = T.let(T.unsafe(nil), Set)
3190
- RuboCop::AST::NodePattern::Sets::SET_INCLUDE_EXTEND_PREPEND = T.let(T.unsafe(nil), Set)
3191
- RuboCop::AST::NodePattern::Sets::SET_INSTANCE_EVAL_CLASS_EVAL_MODULE_EVAL = T.let(T.unsafe(nil), Set)
3192
- RuboCop::AST::NodePattern::Sets::SET_INSTANCE_EXEC_CLASS_EXEC_MODULE_EXEC = T.let(T.unsafe(nil), Set)
3193
- RuboCop::AST::NodePattern::Sets::SET_KEYS_VALUES = T.let(T.unsafe(nil), Set)
3194
- RuboCop::AST::NodePattern::Sets::SET_KEY_HAS_KEY_FETCH_ETC = T.let(T.unsafe(nil), Set)
3195
- RuboCop::AST::NodePattern::Sets::SET_LAST_FIRST = T.let(T.unsafe(nil), Set)
3196
- RuboCop::AST::NodePattern::Sets::SET_LENGTH_SIZE = T.let(T.unsafe(nil), Set)
3197
- RuboCop::AST::NodePattern::Sets::SET_LOAD_RESTORE = T.let(T.unsafe(nil), Set)
3198
- RuboCop::AST::NodePattern::Sets::SET_MAP_COLLECT = T.let(T.unsafe(nil), Set)
3199
- RuboCop::AST::NodePattern::Sets::SET_NEW_ = T.let(T.unsafe(nil), Set)
3200
- RuboCop::AST::NodePattern::Sets::SET_NEW_OPEN = T.let(T.unsafe(nil), Set)
3201
- RuboCop::AST::NodePattern::Sets::SET_NIL_ = T.let(T.unsafe(nil), Set)
3202
- RuboCop::AST::NodePattern::Sets::SET_PIPELINE_PIPELINE_R_PIPELINE_RW_ETC = T.let(T.unsafe(nil), Set)
3203
- RuboCop::AST::NodePattern::Sets::SET_PRIVATE_PROTECTED = T.let(T.unsafe(nil), Set)
3204
- RuboCop::AST::NodePattern::Sets::SET_PRIVATE_PROTECTED_PUBLIC = T.let(T.unsafe(nil), Set)
3205
- RuboCop::AST::NodePattern::Sets::SET_PROP_CONST = T.let(T.unsafe(nil), Set)
3206
- RuboCop::AST::NodePattern::Sets::SET_PUBLIC_CONSTANT_PRIVATE_CONSTANT = T.let(T.unsafe(nil), Set)
3207
- RuboCop::AST::NodePattern::Sets::SET_PUBLIC_PROTECTED_PRIVATE_MODULE_FUNCTION = T.let(T.unsafe(nil), Set)
3208
- RuboCop::AST::NodePattern::Sets::SET_RAISE_FAIL = T.let(T.unsafe(nil), Set)
3209
- RuboCop::AST::NodePattern::Sets::SET_RAISE_FAIL_THROW_ETC = T.let(T.unsafe(nil), Set)
3210
- RuboCop::AST::NodePattern::Sets::SET_REDUCE_INJECT = T.let(T.unsafe(nil), Set)
3211
- RuboCop::AST::NodePattern::Sets::SET_REJECT_REJECT = T.let(T.unsafe(nil), Set)
3212
- RuboCop::AST::NodePattern::Sets::SET_REQUIRE_REQUIRE_RELATIVE = T.let(T.unsafe(nil), Set)
3213
- RuboCop::AST::NodePattern::Sets::SET_SELECT_SELECT = T.let(T.unsafe(nil), Set)
3214
- RuboCop::AST::NodePattern::Sets::SET_SEND_PUBLIC_SEND___SEND__ = T.let(T.unsafe(nil), Set)
3215
- RuboCop::AST::NodePattern::Sets::SET_SORT_BY_SORT = T.let(T.unsafe(nil), Set)
3216
- RuboCop::AST::NodePattern::Sets::SET_SPAWN_SYSTEM = T.let(T.unsafe(nil), Set)
3217
- RuboCop::AST::NodePattern::Sets::SET_SPRINTF_FORMAT = T.let(T.unsafe(nil), Set)
3218
- RuboCop::AST::NodePattern::Sets::SET_STRUCT_CLASS = T.let(T.unsafe(nil), Set)
3219
- RuboCop::AST::NodePattern::Sets::SET_SUCC_PRED_NEXT = T.let(T.unsafe(nil), Set)
3220
- RuboCop::AST::NodePattern::Sets::SET_TASK_NAMESPACE = T.let(T.unsafe(nil), Set)
3221
- RuboCop::AST::NodePattern::Sets::SET_TEMPFILE_STRINGIO = T.let(T.unsafe(nil), Set)
3222
- RuboCop::AST::NodePattern::Sets::SET_TO_ENUM_ENUM_FOR = T.let(T.unsafe(nil), Set)
3223
- RuboCop::AST::NodePattern::Sets::SET_TO_H_TO_HASH = T.let(T.unsafe(nil), Set)
3224
- RuboCop::AST::NodePattern::Sets::SET_TO_I_TO_F_TO_C_TO_R = T.let(T.unsafe(nil), Set)
3225
- RuboCop::AST::NodePattern::Sets::SET_TRUE_FALSE = T.let(T.unsafe(nil), Set)
3226
- RuboCop::AST::NodePattern::Sets::SET_TYPE_TEMPLATE_TYPE_MEMBER = T.let(T.unsafe(nil), Set)
3227
- RuboCop::AST::NodePattern::Sets::SET_ZERO_POSITIVE_NEGATIVE = T.let(T.unsafe(nil), Set)
3228
- RuboCop::AST::NodePattern::Sets::SET__ = T.let(T.unsafe(nil), Set)
3229
- RuboCop::AST::NodePattern::Sets::SET__AT_SLICE = T.let(T.unsafe(nil), Set)
3230
- RuboCop::AST::NodePattern::Sets::SET__EQUAL_EQL = T.let(T.unsafe(nil), Set)
3231
- RuboCop::AST::NodePattern::Sets::SET__FETCH = T.let(T.unsafe(nil), Set)
3232
- RuboCop::AST::NodePattern::Sets::SET__GLOB = T.let(T.unsafe(nil), Set)
3233
- RuboCop::AST::NodePattern::Sets::SET___ = T.let(T.unsafe(nil), Set)
3234
- RuboCop::AST::NodePattern::Sets::SET___2 = T.let(T.unsafe(nil), Set)
3235
- RuboCop::AST::NodePattern::Sets::SET___3 = T.let(T.unsafe(nil), Set)
3236
- RuboCop::AST::NodePattern::Sets::SET___4 = T.let(T.unsafe(nil), Set)
3237
- RuboCop::AST::NodePattern::Sets::SET___5 = T.let(T.unsafe(nil), Set)
3238
- RuboCop::AST::NodePattern::Sets::SET___6 = T.let(T.unsafe(nil), Set)
3239
- RuboCop::AST::NodePattern::Sets::SET___7 = T.let(T.unsafe(nil), Set)
3240
- RuboCop::AST::NodePattern::Sets::SET___EQL = T.let(T.unsafe(nil), Set)
3241
- RuboCop::AST::NodePattern::Sets::SET___METHOD_____CALLEE__ = T.let(T.unsafe(nil), Set)
3242
- RuboCop::AST::NodePattern::Sets::SET____ = T.let(T.unsafe(nil), Set)
3243
- RuboCop::AST::NodePattern::Sets::SET____ETC = T.let(T.unsafe(nil), Set)
3244
- RuboCop::AST::NodePattern::Sets::SET____ETC_2 = T.let(T.unsafe(nil), Set)
3245
- RuboCop::AST::NodePattern::Sets::SET____ETC_3 = T.let(T.unsafe(nil), Set)
3246
- RuboCop::AST::NodePattern::Sets::SET_____2 = T.let(T.unsafe(nil), Set)
3247
- RuboCop::AST::NodePattern::VAR = T.let(T.unsafe(nil), String)
3248
-
3249
- # Common functionality for primitive numeric nodes: `int`, `float`, ...
3250
- module RuboCop::AST::NumericNode
3251
- # Checks whether this is literal has a sign.
3252
- #
3253
- # @example
3254
- #
3255
- # +42
3256
- # @return [Boolean] whether this literal has a sign.
3257
- def sign?; end
3258
- end
3259
-
3260
- RuboCop::AST::NumericNode::SIGN_REGEX = T.let(T.unsafe(nil), Regexp)
3261
-
3262
- # A node extension for `op_asgn` nodes.
3263
- # This will be used in place of a plain node when the builder constructs
3264
- # the AST, making its methods available to all assignment nodes within RuboCop.
3265
- class RuboCop::AST::OpAsgnNode < ::RuboCop::AST::Node
3266
- # @return [AsgnNode] the assignment node
3267
- def assignment_node; end
3268
-
3269
- # The expression being assigned to the variable.
3270
- #
3271
- # @return [Node] the expression being assigned.
3272
- def expression; end
3273
-
3274
- # The name of the variable being assigned as a symbol.
3275
- #
3276
- # @return [Symbol] the name of the variable being assigned
3277
- def name; end
3278
-
3279
- # The operator being used for assignment as a symbol.
3280
- #
3281
- # @return [Symbol] the assignment operator
3282
- def operator; end
3283
- end
3284
-
3285
- # A node extension for `op_asgn` nodes.
3286
- # This will be used in place of a plain node when the builder constructs
3287
- # the AST, making its methods available to all assignment nodes within RuboCop.
3288
- class RuboCop::AST::OrAsgnNode < ::RuboCop::AST::OpAsgnNode
3289
- # The operator being used for assignment as a symbol.
3290
- #
3291
- # @return [Symbol] the assignment operator
3292
- def operator; end
3293
- end
3294
-
3295
- # A node extension for `or` nodes. This will be used in place of a plain
3296
- # node when the builder constructs the AST, making its methods available
3297
- # to all `or` nodes within RuboCop.
3298
- class RuboCop::AST::OrNode < ::RuboCop::AST::Node
3299
- include ::RuboCop::AST::BinaryOperatorNode
3300
- include ::RuboCop::AST::PredicateOperatorNode
3301
-
3302
- # Returns the alternate operator of the `or` as a string.
3303
- # Returns `or` for `||` and vice versa.
3304
- #
3305
- # @return [String] the alternate of the `or` operator
3306
- def alternate_operator; end
3307
-
3308
- # Returns the inverse keyword of the `or` node as a string.
3309
- # Returns `and` for `or` and `&&` for `||`.
3310
- #
3311
- # @return [String] the inverse of the `or` operator
3312
- def inverse_operator; end
3313
- end
3314
-
3315
- # A node extension for `pair` nodes. This will be used in place of a plain
3316
- # node when the builder constructs the AST, making its methods available
3317
- # to all `pair` nodes within RuboCop.
3318
- class RuboCop::AST::PairNode < ::RuboCop::AST::Node
3319
- include ::RuboCop::AST::HashElementNode
3320
-
3321
- # Checks whether the `pair` uses a colon delimiter.
3322
- #
3323
- # @return [Boolean] whether this `pair` uses a colon delimiter
3324
- def colon?; end
3325
-
3326
- # Returns the delimiter of the `pair` as a string. Returns `=>` for a
3327
- # colon delimited `pair` and `:` for a hash rocket delimited `pair`.
3328
- #
3329
- # @param with_spacing [Boolean] whether to include spacing
3330
- # @return [String] the delimiter of the `pair`
3331
- def delimiter(*deprecated, with_spacing: T.unsafe(nil)); end
3332
-
3333
- # Checks whether the `pair` uses a hash rocket delimiter.
3334
- #
3335
- # @return [Boolean] whether this `pair` uses a hash rocket delimiter
3336
- def hash_rocket?; end
3337
-
3338
- # Returns the inverse delimiter of the `pair` as a string.
3339
- #
3340
- # @param with_spacing [Boolean] whether to include spacing
3341
- # @return [String] the inverse delimiter of the `pair`
3342
- def inverse_delimiter(*deprecated, with_spacing: T.unsafe(nil)); end
3343
-
3344
- # Checks whether the `pair` uses hash value omission.
3345
- #
3346
- # @return [Boolean] whether this `pair` uses hash value omission
3347
- def value_omission?; end
3348
-
3349
- # Checks whether the value starts on its own line.
3350
- #
3351
- # @return [Boolean] whether the value in the `pair` starts its own line
3352
- def value_on_new_line?; end
3353
- end
3354
-
3355
- RuboCop::AST::PairNode::COLON = T.let(T.unsafe(nil), String)
3356
- RuboCop::AST::PairNode::HASH_ROCKET = T.let(T.unsafe(nil), String)
3357
- RuboCop::AST::PairNode::SPACED_COLON = T.let(T.unsafe(nil), String)
3358
- RuboCop::AST::PairNode::SPACED_HASH_ROCKET = T.let(T.unsafe(nil), String)
3359
-
3360
- # Requires implementing `arguments`.
3361
- #
3362
- # Common functionality for nodes that are parameterized:
3363
- # `send`, `super`, `zsuper`, `def`, `defs`
3364
- # and (modern only): `index`, `indexasgn`, `lambda`
3365
- module RuboCop::AST::ParameterizedNode
3366
- # Checks whether this node has any arguments.
3367
- #
3368
- # @return [Boolean] whether this node has any arguments
3369
- def arguments?; end
3370
-
3371
- # Whether the last argument of the node is a block pass,
3372
- # i.e. `&block`.
3373
- #
3374
- # @return [Boolean] whether the last argument of the node is a block pass
3375
- def block_argument?; end
3376
-
3377
- # A shorthand for getting the first argument of the node.
3378
- # Equivalent to `arguments.first`.
3379
- #
3380
- # @return [Node, nil] the first argument of the node,
3381
- # or `nil` if there are no arguments
3382
- def first_argument; end
3383
-
3384
- # A shorthand for getting the last argument of the node.
3385
- # Equivalent to `arguments.last`.
3386
- #
3387
- # @return [Node, nil] the last argument of the node,
3388
- # or `nil` if there are no arguments
3389
- def last_argument; end
3390
-
3391
- # Checks whether this node's arguments are wrapped in parentheses.
3392
- #
3393
- # @return [Boolean] whether this node's arguments are
3394
- # wrapped in parentheses
3395
- def parenthesized?; end
3396
-
3397
- # Checks whether any argument of the node is a splat
3398
- # argument, i.e. `*splat`.
3399
- #
3400
- # @return [Boolean] whether the node is a splat argument
3401
- def rest_argument?; end
3402
-
3403
- # Checks whether any argument of the node is a splat
3404
- # argument, i.e. `*splat`.
3405
- #
3406
- # @return [Boolean] whether the node is a splat argument
3407
- def splat_argument?; end
3408
- end
3409
-
3410
- # A specialized `ParameterizedNode`.
3411
- # Requires implementing `first_argument_index`
3412
- # Implements `arguments` as `children[first_argument_index..-1]`
3413
- # and optimizes other calls
3414
- module RuboCop::AST::ParameterizedNode::RestArguments
3415
- include ::RuboCop::AST::ParameterizedNode
3416
-
3417
- # @return [Array<Node>] arguments, if any
3418
- def arguments; end
3419
-
3420
- # Checks whether this node has any arguments.
3421
- #
3422
- # @return [Boolean] whether this node has any arguments
3423
- def arguments?; end
3424
-
3425
- # A shorthand for getting the first argument of the node.
3426
- # Equivalent to `arguments.first`.
3427
- #
3428
- # @return [Node, nil] the first argument of the node,
3429
- # or `nil` if there are no arguments
3430
- def first_argument; end
3431
-
3432
- # A shorthand for getting the last argument of the node.
3433
- # Equivalent to `arguments.last`.
3434
- #
3435
- # @return [Node, nil] the last argument of the node,
3436
- # or `nil` if there are no arguments
3437
- def last_argument; end
3438
- end
3439
-
3440
- # A specialized `ParameterizedNode` for node that have a single child
3441
- # containing either `nil`, an argument, or a `begin` node with all the
3442
- # arguments
3443
- module RuboCop::AST::ParameterizedNode::WrappedArguments
3444
- include ::RuboCop::AST::ParameterizedNode
3445
-
3446
- # @return [Array] The arguments of the node.
3447
- def arguments; end
3448
- end
3449
-
3450
- # Common functionality for nodes that are predicates:
3451
- # `or`, `and` ...
3452
- module RuboCop::AST::PredicateOperatorNode
3453
- # Checks whether this is a logical operator.
3454
- #
3455
- # @return [Boolean] whether this is a logical operator
3456
- def logical_operator?; end
3457
-
3458
- # Returns the operator as a string.
3459
- #
3460
- # @return [String] the operator
3461
- def operator; end
3462
-
3463
- # Checks whether this is a semantic operator.
3464
- #
3465
- # @return [Boolean] whether this is a semantic operator
3466
- def semantic_operator?; end
3467
- end
3468
-
3469
- RuboCop::AST::PredicateOperatorNode::LOGICAL_AND = T.let(T.unsafe(nil), String)
3470
- RuboCop::AST::PredicateOperatorNode::LOGICAL_OR = T.let(T.unsafe(nil), String)
3471
- RuboCop::AST::PredicateOperatorNode::SEMANTIC_AND = T.let(T.unsafe(nil), String)
3472
- RuboCop::AST::PredicateOperatorNode::SEMANTIC_OR = T.let(T.unsafe(nil), String)
3473
-
3474
- # A node extension for `procarg0` nodes.
3475
- # This will be used in place of a plain node when the builder constructs
3476
- # the AST, making its methods available to all `arg` nodes within RuboCop.
3477
- class RuboCop::AST::Procarg0Node < ::RuboCop::AST::ArgNode
3478
- # Returns the name of an argument.
3479
- #
3480
- # @return [Symbol, nil] the name of the argument
3481
- def name; end
3482
- end
3483
-
3484
- # ProcessedSource contains objects which are generated by Parser
3485
- # and other information such as disabled lines for cops.
3486
- # It also provides a convenient way to access source lines.
3487
- class RuboCop::AST::ProcessedSource
3488
- include ::RuboCop::Ext::ProcessedSource
3489
-
3490
- # @return [ProcessedSource] a new instance of ProcessedSource
3491
- def initialize(source, ruby_version, path = T.unsafe(nil)); end
3492
-
3493
- def [](*args); end
3494
-
3495
- # Returns the value of attribute ast.
3496
- def ast; end
3497
-
3498
- def ast_with_comments; end
3499
-
3500
- # @return [Boolean]
3501
- def blank?; end
3502
-
3503
- # Returns the value of attribute buffer.
3504
- def buffer; end
3505
-
3506
- # Raw source checksum for tracking infinite loops.
3507
- def checksum; end
3508
-
3509
- # @return [Comment, nil] the comment at that line, if any.
3510
- def comment_at_line(line); end
3511
-
3512
- # Consider using `each_comment_in_lines` instead
3513
- #
3514
- # @deprecated use contains_comment?
3515
- # @return [Boolean] if any of the lines in the given `source_range` has a comment.
3516
- def commented?(source_range); end
3517
-
3518
- # Returns the value of attribute comments.
3519
- def comments; end
3520
-
3521
- # Should have been called `comments_before_or_at_line`. Doubtful it has of any valid use.
3522
- #
3523
- # @deprecated Use `each_comment_in_lines`
3524
- def comments_before_line(line); end
3525
-
3526
- # Consider using `each_comment_in_lines` instead
3527
- #
3528
- # @return [Boolean] if any of the lines in the given `source_range` has a comment.
3529
- def contains_comment?(source_range); end
3530
-
3531
- def current_line(token); end
3532
-
3533
- # Returns the value of attribute diagnostics.
3534
- def diagnostics; end
3535
-
3536
- # @deprecated Use `comments.each`
3537
- def each_comment(&block); end
3538
-
3539
- # Enumerates on the comments contained with the given `line_range`
3540
- def each_comment_in_lines(line_range); end
3541
-
3542
- # @deprecated Use `tokens.each`
3543
- def each_token(&block); end
3544
-
3545
- def file_path; end
3546
-
3547
- # @deprecated Use `comment_at_line`, `each_comment_in_lines`, or `comments.find`
3548
- def find_comment(&block); end
3549
-
3550
- # @deprecated Use `tokens.find`
3551
- def find_token(&block); end
3552
-
3553
- def first_token_of(range_or_node); end
3554
- def following_line(token); end
3555
- def last_token_of(range_or_node); end
3556
- def line_indentation(line_number); end
3557
-
3558
- # @return [Boolean] if the given line number has a comment.
3559
- def line_with_comment?(line); end
3560
-
3561
- # Returns the source lines, line break characters removed, excluding a
3562
- # possible __END__ and everything that comes after.
3563
- def lines; end
3564
-
3565
- # Returns the value of attribute parser_error.
3566
- def parser_error; end
3567
-
3568
- # Returns the value of attribute path.
3569
- def path; end
3570
-
3571
- def preceding_line(token); end
3572
-
3573
- # Returns the value of attribute raw_source.
3574
- def raw_source; end
3575
-
3576
- # Returns the value of attribute ruby_version.
3577
- def ruby_version; end
3578
-
3579
- # The tokens list is always sorted by token position, except for cases when heredoc
3580
- # is passed as a method argument. In this case tokens are interleaved by
3581
- # heredoc contents' tokens.
3582
- def sorted_tokens; end
3583
-
3584
- # @return [Boolean]
3585
- def start_with?(string); end
3586
-
3587
- # Returns the value of attribute tokens.
3588
- def tokens; end
3589
-
3590
- def tokens_within(range_or_node); end
3591
-
3592
- # @return [Boolean]
3593
- def valid_syntax?; end
3594
-
3595
- private
3596
-
3597
- def comment_index; end
3598
- def create_parser(ruby_version); end
3599
- def first_token_index(range_or_node); end
3600
- def last_token_index(range_or_node); end
3601
- def parse(source, ruby_version); end
3602
- def parser_class(ruby_version); end
3603
- def source_range(range_or_node); end
3604
- def tokenize(parser); end
3605
-
3606
- class << self
3607
- def from_file(path, ruby_version); end
3608
- end
3609
- end
3610
-
3611
- RuboCop::AST::ProcessedSource::INVALID_LEVELS = T.let(T.unsafe(nil), Array)
3612
-
3613
- # @api private
3614
- RuboCop::AST::ProcessedSource::STRING_SOURCE_NAME = T.let(T.unsafe(nil), String)
3615
-
3616
- # A node extension for `irange` and `erange` nodes. This will be used in
3617
- # place of a plain node when the builder constructs the AST, making its
3618
- # methods available to all `irange` and `erange` nodes within RuboCop.
3619
- class RuboCop::AST::RangeNode < ::RuboCop::AST::Node
3620
- def begin; end
3621
- def end; end
3622
- end
3623
-
3624
- # A node extension for `regexp` nodes. This will be used in place of a plain
3625
- # node when the builder constructs the AST, making its methods available
3626
- # to all `regexp` nodes within RuboCop.
3627
- class RuboCop::AST::RegexpNode < ::RuboCop::AST::Node
3628
- include ::RuboCop::Ext::RegexpNode
3629
-
3630
- # @return [String] a string of regexp content
3631
- def content; end
3632
-
3633
- # @return [Bool] if char is one of the delimiters
3634
- def delimiter?(char); end
3635
-
3636
- # @return [String] the regexp delimiters (without %r)
3637
- def delimiters; end
3638
-
3639
- # @return [Bool] if regexp uses the extended regopt
3640
- def extended?; end
3641
-
3642
- # @return [Bool] if regexp uses the ignore-case regopt
3643
- def ignore_case?; end
3644
-
3645
- # @return [Bool] if regexp contains interpolation
3646
- def interpolation?; end
3647
-
3648
- # @return [Bool] if regexp uses the multiline regopt
3649
- def multiline_mode?; end
3650
-
3651
- # @return [Bool] if regexp uses the no-encoding regopt
3652
- def no_encoding?; end
3653
-
3654
- # NOTE: The 'o' option is ignored.
3655
- #
3656
- # @return [Integer] the Regexp option bits as returned by Regexp#options
3657
- def options; end
3658
-
3659
- # @return [Bool] if the regexp is a %r{...} literal (using any delimiters)
3660
- def percent_r_literal?; end
3661
-
3662
- # @return [RuboCop::AST::Node] a regopt node
3663
- def regopt; end
3664
-
3665
- # @return [Bool] if regexp uses the single-interpolation regopt
3666
- def single_interpolation?; end
3667
-
3668
- # @return [Bool] if the regexp is a /.../ literal
3669
- def slash_literal?; end
3670
-
3671
- # @return [Regexp] a regexp of this node
3672
- def to_regexp; end
3673
-
3674
- private
3675
-
3676
- # @return [Boolean]
3677
- def regopt_include?(option); end
3678
- end
3679
-
3680
- RuboCop::AST::RegexpNode::OPTIONS = T.let(T.unsafe(nil), Hash)
3681
-
3682
- # A node extension for `resbody` nodes. This will be used in place of a
3683
- # plain node when the builder constructs the AST, making its methods
3684
- # available to all `resbody` nodes within RuboCop.
3685
- class RuboCop::AST::ResbodyNode < ::RuboCop::AST::Node
3686
- # Returns the body of the `rescue` clause.
3687
- #
3688
- # @return [Node, nil] The body of the `resbody`.
3689
- def body; end
3690
-
3691
- # Returns the index of the `resbody` branch within the exception handling statement.
3692
- #
3693
- # @return [Integer] the index of the `resbody` branch
3694
- def branch_index; end
3695
-
3696
- # Returns the exception variable of the `rescue` clause.
3697
- #
3698
- # @return [Node, nil] The exception variable of the `resbody`.
3699
- def exception_variable; end
3700
-
3701
- # Returns an array of all the exceptions in the `rescue` clause.
3702
- #
3703
- # @return [Array<Node>] an array of exception nodes
3704
- def exceptions; end
3705
- end
3706
-
3707
- # A node extension for `rescue` nodes. This will be used in place of a
3708
- # plain node when the builder constructs the AST, making its methods
3709
- # available to all `rescue` nodes within RuboCop.
3710
- class RuboCop::AST::RescueNode < ::RuboCop::AST::Node
3711
- # Returns the body of the rescue node.
3712
- #
3713
- # @return [Node, nil] The body of the rescue node.
3714
- def body; end
3715
-
3716
- # Returns an array of all the rescue branches in the exception handling statement.
3717
- #
3718
- # and the else (if any). Note that these bodies could be nil.
3719
- #
3720
- # @return [Array<Node, nil>] an array of the bodies of the rescue branches
3721
- def branches; end
3722
-
3723
- # Checks whether this exception handling statement has an `else` branch.
3724
- #
3725
- # @return [Boolean] whether the exception handling statement has an `else` branch
3726
- def else?; end
3727
-
3728
- # Returns the else branch of the exception handling statement, if any.
3729
- #
3730
- # @return [Node] the else branch node of the exception handling statement
3731
- # @return [nil] if the exception handling statement does not have an else branch.
3732
- def else_branch; end
3733
-
3734
- # Returns an array of all the rescue branches in the exception handling statement.
3735
- #
3736
- # @return [Array<ResbodyNode>] an array of `resbody` nodes
3737
- def resbody_branches; end
3738
- end
3739
-
3740
- # A node extension for `return` nodes. This will be used in place of a
3741
- # plain node when the builder constructs the AST, making its methods
3742
- # available to all `return` nodes within RuboCop.
3743
- class RuboCop::AST::ReturnNode < ::RuboCop::AST::Node
3744
- include ::RuboCop::AST::ParameterizedNode
3745
- include ::RuboCop::AST::ParameterizedNode::WrappedArguments
3746
- end
3747
-
3748
- # Responsible for compatibility with main gem
3749
- #
3750
- # @api private
3751
- module RuboCop::AST::RuboCopCompatibility
3752
- # @api private
3753
- def rubocop_loaded; end
3754
- end
3755
-
3756
- # @api private
3757
- RuboCop::AST::RuboCopCompatibility::INCOMPATIBLE_COPS = T.let(T.unsafe(nil), Hash)
3758
-
3759
- # A node extension for `sclass` nodes. This will be used in place of a
3760
- # plain node when the builder constructs the AST, making its methods
3761
- # available to all `sclass` nodes within RuboCop.
3762
- class RuboCop::AST::SelfClassNode < ::RuboCop::AST::Node
3763
- # The body of this `sclass` node.
3764
- #
3765
- # @return [Node, nil] the body of the class
3766
- def body; end
3767
-
3768
- # The identifier for this `sclass` node. (Always `self`.)
3769
- #
3770
- # @return [Node] the identifier of the class
3771
- def identifier; end
3772
- end
3773
-
3774
- # A node extension for `send` nodes. This will be used in place of a plain
3775
- # node when the builder constructs the AST, making its methods available
3776
- # to all `send` nodes within RuboCop.
3777
- class RuboCop::AST::SendNode < ::RuboCop::AST::Node
3778
- include ::RuboCop::AST::ParameterizedNode
3779
- include ::RuboCop::AST::ParameterizedNode::RestArguments
3780
- include ::RuboCop::AST::MethodIdentifierPredicates
3781
- include ::RuboCop::AST::MethodDispatchNode
3782
-
3783
- def attribute_accessor?(param0 = T.unsafe(nil)); end
3784
-
3785
- private
3786
-
3787
- def first_argument_index; end
3788
- end
3789
-
3790
- # This module provides a shorthand method to create a {Node} like
3791
- # `Parser::AST::Sexp`.
3792
- #
3793
- # @see https://www.rubydoc.info/gems/ast/AST/Sexp
3794
- module RuboCop::AST::Sexp
3795
- # Creates a {Node} with type `type` and children `children`.
3796
- def s(type, *children); end
3797
- end
3798
-
3799
- # A node extension for `str`, `dstr`, and `xstr` nodes. This will be used
3800
- # in place of a plain node when the builder constructs the AST, making
3801
- # its methods available to all `str` nodes within RuboCop.
3802
- class RuboCop::AST::StrNode < ::RuboCop::AST::Node
3803
- include ::RuboCop::AST::BasicLiteralNode
3804
-
3805
- # @return [Boolean]
3806
- def heredoc?; end
3807
- end
3808
-
3809
- # A node extension for `super`- and `zsuper` nodes. This will be used in
3810
- # place of a plain node when the builder constructs the AST, making its
3811
- # methods available to all `super`- and `zsuper` nodes within RuboCop.
3812
- class RuboCop::AST::SuperNode < ::RuboCop::AST::Node
3813
- include ::RuboCop::AST::ParameterizedNode
3814
- include ::RuboCop::AST::MethodIdentifierPredicates
3815
- include ::RuboCop::AST::MethodDispatchNode
3816
-
3817
- def arguments; end
3818
-
3819
- # Custom destructuring method. This can be used to normalize
3820
- # destructuring for different variations of the node.
3821
- #
3822
- # @return [Array] the different parts of the `super` node
3823
- def node_parts; end
3824
- end
3825
-
3826
- # A node extension for `sym` nodes. This will be used in place of a
3827
- # plain node when the builder constructs the AST, making its methods
3828
- # available to all `sym` nodes within RuboCop.
3829
- class RuboCop::AST::SymbolNode < ::RuboCop::AST::Node
3830
- include ::RuboCop::AST::BasicLiteralNode
3831
- end
3832
-
3833
- # A basic wrapper around Parser's tokens.
3834
- class RuboCop::AST::Token
3835
- # @return [Token] a new instance of Token
3836
- def initialize(pos, type, text); end
3837
-
3838
- def begin_pos; end
3839
- def column; end
3840
-
3841
- # @return [Boolean]
3842
- def comma?; end
3843
-
3844
- # Type Predicates
3845
- #
3846
- # @return [Boolean]
3847
- def comment?; end
3848
-
3849
- # @return [Boolean]
3850
- def end?; end
3851
-
3852
- def end_pos; end
3853
-
3854
- # @return [Boolean]
3855
- def equal_sign?; end
3856
-
3857
- # @return [Boolean]
3858
- def left_array_bracket?; end
3859
-
3860
- # @return [Boolean]
3861
- def left_brace?; end
3862
-
3863
- # @return [Boolean]
3864
- def left_bracket?; end
3865
-
3866
- # @return [Boolean]
3867
- def left_curly_brace?; end
3868
-
3869
- # @return [Boolean]
3870
- def left_parens?; end
3871
-
3872
- # @return [Boolean]
3873
- def left_ref_bracket?; end
3874
-
3875
- def line; end
3876
-
3877
- # Returns the value of attribute pos.
3878
- def pos; end
3879
-
3880
- # @return [Boolean]
3881
- def rescue_modifier?; end
3882
-
3883
- # @return [Boolean]
3884
- def right_bracket?; end
3885
-
3886
- # @return [Boolean]
3887
- def right_curly_brace?; end
3888
-
3889
- # @return [Boolean]
3890
- def right_parens?; end
3891
-
3892
- # @return [Boolean]
3893
- def semicolon?; end
3894
-
3895
- # Checks if there is whitespace after token
3896
- #
3897
- # @return [Boolean]
3898
- def space_after?; end
3899
-
3900
- # Checks if there is whitespace before token
3901
- #
3902
- # @return [Boolean]
3903
- def space_before?; end
3904
-
3905
- # Returns the value of attribute text.
3906
- def text; end
3907
-
3908
- def to_s; end
3909
-
3910
- # Returns the value of attribute type.
3911
- def type; end
3912
-
3913
- class << self
3914
- def from_parser_token(parser_token); end
3915
- end
3916
- end
3917
-
3918
- # Provides methods for traversing an AST.
3919
- # Does not transform an AST; for that, use Parser::AST::Processor.
3920
- # Override methods to perform custom processing. Remember to call `super`
3921
- # if you want to recursively process descendant nodes.
3922
- module RuboCop::AST::Traversal
3923
- extend ::RuboCop::AST::Traversal::CallbackCompiler
3924
-
3925
- def on_(node); end
3926
- def on___ENCODING__(node); end
3927
- def on___FILE__(node); end
3928
- def on___LINE__(node); end
3929
- def on_alias(node); end
3930
- def on_and(node); end
3931
- def on_and_asgn(node); end
3932
- def on_arg(node); end
3933
- def on_arg_expr(node); end
3934
- def on_args(node); end
3935
- def on_array(node); end
3936
- def on_array_pattern(node); end
3937
- def on_array_pattern_with_tail(node); end
3938
- def on_back_ref(node); end
3939
- def on_begin(node); end
3940
- def on_block(node); end
3941
- def on_block_pass(node); end
3942
- def on_blockarg(node); end
3943
- def on_break(node); end
3944
- def on_case(node); end
3945
- def on_case_match(node); end
3946
- def on_casgn(node); end
3947
- def on_cbase(node); end
3948
- def on_class(node); end
3949
- def on_complex(node); end
3950
- def on_const(node); end
3951
- def on_const_pattern(node); end
3952
- def on_csend(node); end
3953
- def on_cvar(node); end
3954
- def on_cvasgn(node); end
3955
- def on_def(node); end
3956
- def on_defined?(node); end
3957
- def on_defs(node); end
3958
- def on_dstr(node); end
3959
- def on_dsym(node); end
3960
- def on_eflipflop(node); end
3961
- def on_empty_else(node); end
3962
- def on_ensure(node); end
3963
- def on_erange(node); end
3964
- def on_false(node); end
3965
- def on_find_pattern(node); end
3966
- def on_float(node); end
3967
- def on_for(node); end
3968
- def on_forward_arg(node); end
3969
- def on_forward_args(node); end
3970
- def on_forwarded_args(node); end
3971
- def on_gvar(node); end
3972
- def on_gvasgn(node); end
3973
- def on_hash(node); end
3974
- def on_hash_pattern(node); end
3975
- def on_if(node); end
3976
- def on_if_guard(node); end
3977
- def on_iflipflop(node); end
3978
- def on_in_match(node); end
3979
- def on_in_pattern(node); end
3980
- def on_index(node); end
3981
- def on_indexasgn(node); end
3982
- def on_int(node); end
3983
- def on_irange(node); end
3984
- def on_ivar(node); end
3985
- def on_ivasgn(node); end
3986
- def on_kwarg(node); end
3987
- def on_kwargs(node); end
3988
- def on_kwbegin(node); end
3989
- def on_kwnilarg(node); end
3990
- def on_kwoptarg(node); end
3991
- def on_kwrestarg(node); end
3992
- def on_kwsplat(node); end
3993
- def on_lambda(node); end
3994
- def on_lvar(node); end
3995
- def on_lvasgn(node); end
3996
- def on_masgn(node); end
3997
- def on_match_alt(node); end
3998
- def on_match_as(node); end
3999
- def on_match_current_line(node); end
4000
- def on_match_nil_pattern(node); end
4001
- def on_match_pattern(node); end
4002
- def on_match_pattern_p(node); end
4003
- def on_match_rest(node); end
4004
- def on_match_var(node); end
4005
- def on_match_with_lvasgn(node); end
4006
- def on_match_with_trailing_comma(node); end
4007
- def on_mlhs(node); end
4008
- def on_module(node); end
4009
- def on_mrasgn(node); end
4010
- def on_next(node); end
4011
- def on_nil(node); end
4012
- def on_not(node); end
4013
- def on_nth_ref(node); end
4014
- def on_numblock(node); end
4015
- def on_op_asgn(node); end
4016
- def on_optarg(node); end
4017
- def on_or(node); end
4018
- def on_or_asgn(node); end
4019
- def on_pair(node); end
4020
- def on_pin(node); end
4021
- def on_postexe(node); end
4022
- def on_preexe(node); end
4023
- def on_procarg0(node); end
4024
- def on_rasgn(node); end
4025
- def on_rational(node); end
4026
- def on_redo(node); end
4027
- def on_regexp(node); end
4028
- def on_regopt(node); end
4029
- def on_resbody(node); end
4030
- def on_rescue(node); end
4031
- def on_restarg(node); end
4032
- def on_retry(node); end
4033
- def on_return(node); end
4034
- def on_sclass(node); end
4035
- def on_self(node); end
4036
- def on_send(node); end
4037
- def on_shadowarg(node); end
4038
- def on_splat(node); end
4039
- def on_str(node); end
4040
- def on_super(node); end
4041
- def on_sym(node); end
4042
- def on_true(node); end
4043
- def on_undef(node); end
4044
- def on_unless_guard(node); end
4045
- def on_until(node); end
4046
- def on_until_post(node); end
4047
- def on_when(node); end
4048
- def on_while(node); end
4049
- def on_while_post(node); end
4050
- def on_xstr(node); end
4051
- def on_yield(node); end
4052
- def on_zsuper(node); end
4053
- def walk(node); end
4054
- end
4055
-
4056
- # @api private
4057
- module RuboCop::AST::Traversal::CallbackCompiler
4058
- # @api private
4059
- def arity_check(range); end
4060
-
4061
- # @api private
4062
- def body(signature, prelude); end
4063
-
4064
- # @api private
4065
- def def_callback(type, *signature, arity: T.unsafe(nil), arity_check: T.unsafe(nil), body: T.unsafe(nil)); end
4066
- end
4067
-
4068
- # @api private
4069
- RuboCop::AST::Traversal::CallbackCompiler::SEND = T.let(T.unsafe(nil), String)
4070
-
4071
- # @api private
4072
- RuboCop::AST::Traversal::CallbackCompiler::TEMPLATE = T.let(T.unsafe(nil), Hash)
4073
-
4074
- # Only for debugging.
4075
- #
4076
- # @api private
4077
- class RuboCop::AST::Traversal::DebugError < ::RuntimeError; end
4078
-
4079
- RuboCop::AST::Traversal::NO_CHILD_NODES = T.let(T.unsafe(nil), Set)
4080
- RuboCop::AST::Traversal::TYPE_TO_METHOD = T.let(T.unsafe(nil), Hash)
4081
-
4082
- # A node extension for `until` nodes. This will be used in place of a plain
4083
- # node when the builder constructs the AST, making its methods available
4084
- # to all `until` nodes within RuboCop.
4085
- class RuboCop::AST::UntilNode < ::RuboCop::AST::Node
4086
- include ::RuboCop::AST::ConditionalNode
4087
- include ::RuboCop::AST::ModifierNode
4088
-
4089
- # Checks whether the `until` node has a `do` keyword.
4090
- #
4091
- # @return [Boolean] whether the `until` node has a `do` keyword
4092
- def do?; end
4093
-
4094
- # Returns the inverse keyword of the `until` node as a string.
4095
- # Returns `while` for `until` nodes and vice versa.
4096
- #
4097
- # @return [String] the inverse keyword of the `until` statement
4098
- def inverse_keyword; end
4099
-
4100
- # Returns the keyword of the `until` statement as a string.
4101
- #
4102
- # @return [String] the keyword of the `until` statement
4103
- def keyword; end
4104
- end
4105
-
4106
- module RuboCop::AST::Version; end
4107
- RuboCop::AST::Version::STRING = T.let(T.unsafe(nil), String)
4108
-
4109
- # A node extension for `when` nodes. This will be used in place of a plain
4110
- # node when the builder constructs the AST, making its methods available
4111
- # to all `when` nodes within RuboCop.
4112
- class RuboCop::AST::WhenNode < ::RuboCop::AST::Node
4113
- # Returns the body of the `when` node.
4114
- #
4115
- # @return [Node, nil] the body of the `when` node
4116
- def body; end
4117
-
4118
- # Returns the index of the `when` branch within the `case` statement.
4119
- #
4120
- # @return [Integer] the index of the `when` branch
4121
- def branch_index; end
4122
-
4123
- # Returns an array of all the conditions in the `when` branch.
4124
- #
4125
- # @return [Array<Node>] an array of condition nodes
4126
- def conditions; end
4127
-
4128
- # @deprecated Use `conditions.each`
4129
- def each_condition(&block); end
4130
-
4131
- # Checks whether the `when` node has a `then` keyword.
4132
- #
4133
- # @return [Boolean] whether the `when` node has a `then` keyword
4134
- def then?; end
4135
- end
4136
-
4137
- # A node extension for `while` nodes. This will be used in place of a plain
4138
- # node when the builder constructs the AST, making its methods available
4139
- # to all `while` nodes within RuboCop.
4140
- class RuboCop::AST::WhileNode < ::RuboCop::AST::Node
4141
- include ::RuboCop::AST::ConditionalNode
4142
- include ::RuboCop::AST::ModifierNode
4143
-
4144
- # Checks whether the `until` node has a `do` keyword.
4145
- #
4146
- # @return [Boolean] whether the `until` node has a `do` keyword
4147
- def do?; end
4148
-
4149
- # Returns the inverse keyword of the `while` node as a string.
4150
- # Returns `until` for `while` nodes and vice versa.
4151
- #
4152
- # @return [String] the inverse keyword of the `while` statement
4153
- def inverse_keyword; end
4154
-
4155
- # Returns the keyword of the `while` statement as a string.
4156
- #
4157
- # @return [String] the keyword of the `while` statement
4158
- def keyword; end
4159
- end
4160
-
4161
- # A node extension for `yield` nodes. This will be used in place of a plain
4162
- # node when the builder constructs the AST, making its methods available
4163
- # to all `yield` nodes within RuboCop.
4164
- class RuboCop::AST::YieldNode < ::RuboCop::AST::Node
4165
- include ::RuboCop::AST::ParameterizedNode
4166
- include ::RuboCop::AST::MethodIdentifierPredicates
4167
- include ::RuboCop::AST::MethodDispatchNode
4168
-
4169
- def arguments; end
4170
-
4171
- # Custom destructuring method. This can be used to normalize
4172
- # destructuring for different variations of the node.
4173
- #
4174
- # @return [Array] the different parts of the `send` node
4175
- def node_parts; end
4176
- end
4177
-
4178
- RuboCop::NodePattern = RuboCop::AST::NodePattern
4179
- RuboCop::ProcessedSource = RuboCop::AST::ProcessedSource
4180
- RuboCop::Token = RuboCop::AST::Token