rigortype 0.0.8 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +234 -22
  3. data/data/builtins/ruby_core/encoding.yml +210 -0
  4. data/data/builtins/ruby_core/exception.yml +641 -0
  5. data/data/builtins/ruby_core/numeric.yml +3 -2
  6. data/data/builtins/ruby_core/proc.yml +731 -0
  7. data/data/builtins/ruby_core/random.yml +166 -0
  8. data/data/builtins/ruby_core/re.yml +689 -0
  9. data/data/builtins/ruby_core/struct.yml +449 -0
  10. data/lib/rigor/analysis/check_rules.rb +228 -40
  11. data/lib/rigor/analysis/diagnostic.rb +15 -1
  12. data/lib/rigor/analysis/runner.rb +199 -4
  13. data/lib/rigor/builtins/imported_refinements.rb +6 -1
  14. data/lib/rigor/cache/rbs_class_ancestor_table.rb +63 -0
  15. data/lib/rigor/cache/rbs_class_type_param_names.rb +60 -0
  16. data/lib/rigor/cache/rbs_constant_table.rb +15 -51
  17. data/lib/rigor/cache/rbs_descriptor.rb +55 -0
  18. data/lib/rigor/cache/rbs_environment.rb +52 -0
  19. data/lib/rigor/cache/rbs_environment_marshal_patch.rb +40 -0
  20. data/lib/rigor/cache/rbs_instance_definitions.rb +79 -0
  21. data/lib/rigor/cache/rbs_known_class_names.rb +43 -0
  22. data/lib/rigor/cache/store.rb +81 -15
  23. data/lib/rigor/cli.rb +45 -7
  24. data/lib/rigor/configuration/severity_profile.rb +109 -0
  25. data/lib/rigor/configuration.rb +110 -6
  26. data/lib/rigor/environment/rbs_hierarchy.rb +18 -5
  27. data/lib/rigor/environment/rbs_loader.rb +220 -32
  28. data/lib/rigor/environment.rb +11 -2
  29. data/lib/rigor/flow_contribution/conflict.rb +81 -0
  30. data/lib/rigor/flow_contribution/element.rb +53 -0
  31. data/lib/rigor/flow_contribution/fact.rb +88 -0
  32. data/lib/rigor/flow_contribution/merge_result.rb +67 -0
  33. data/lib/rigor/flow_contribution/merger.rb +275 -0
  34. data/lib/rigor/flow_contribution.rb +179 -0
  35. data/lib/rigor/inference/block_parameter_binder.rb +15 -0
  36. data/lib/rigor/inference/builtins/encoding_catalog.rb +67 -0
  37. data/lib/rigor/inference/builtins/exception_catalog.rb +92 -0
  38. data/lib/rigor/inference/builtins/proc_catalog.rb +122 -0
  39. data/lib/rigor/inference/builtins/random_catalog.rb +58 -0
  40. data/lib/rigor/inference/builtins/re_catalog.rb +81 -0
  41. data/lib/rigor/inference/builtins/struct_catalog.rb +55 -0
  42. data/lib/rigor/inference/expression_typer.rb +110 -6
  43. data/lib/rigor/inference/method_dispatcher/constant_folding.rb +16 -1
  44. data/lib/rigor/inference/method_dispatcher/literal_string_folding.rb +173 -0
  45. data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +21 -1
  46. data/lib/rigor/inference/method_dispatcher.rb +2 -0
  47. data/lib/rigor/inference/multi_target_binder.rb +2 -0
  48. data/lib/rigor/inference/narrowing.rb +134 -144
  49. data/lib/rigor/inference/scope_indexer.rb +75 -1
  50. data/lib/rigor/inference/statement_evaluator.rb +380 -40
  51. data/lib/rigor/plugin/access_denied_error.rb +24 -0
  52. data/lib/rigor/plugin/base.rb +241 -0
  53. data/lib/rigor/plugin/io_boundary.rb +102 -0
  54. data/lib/rigor/plugin/load_error.rb +23 -0
  55. data/lib/rigor/plugin/loader.rb +191 -0
  56. data/lib/rigor/plugin/manifest.rb +134 -0
  57. data/lib/rigor/plugin/registry.rb +50 -0
  58. data/lib/rigor/plugin/services.rb +65 -0
  59. data/lib/rigor/plugin/trust_policy.rb +99 -0
  60. data/lib/rigor/plugin.rb +61 -0
  61. data/lib/rigor/rbs_extended.rb +103 -0
  62. data/lib/rigor/reflection.rb +2 -2
  63. data/lib/rigor/type/combinator.rb +72 -0
  64. data/lib/rigor/type/refined.rb +50 -2
  65. data/lib/rigor/version.rb +1 -1
  66. data/lib/rigor.rb +13 -0
  67. data/sig/rigor/environment.rbs +7 -1
  68. data/sig/rigor/inference.rbs +1 -0
  69. data/sig/rigor/rbs_extended.rbs +2 -0
  70. data/sig/rigor/scope.rbs +1 -0
  71. data/sig/rigor/type.rbs +7 -0
  72. data/sig/rigor.rbs +3 -1
  73. metadata +38 -1
@@ -0,0 +1,689 @@
1
+ # DO NOT EDIT — generated by tool/extract_builtin_catalog.rb
2
+ ---
3
+ schema_version: 1
4
+ generated_from:
5
+ ruby_init_c: references/ruby/re.c
6
+ ruby_prelude:
7
+ rbs:
8
+ - references/rbs/core/regexp.rbs
9
+ - references/rbs/core/match_data.rbs
10
+ purity_levels:
11
+ leaf: Prelude :leaf marker (VM-enforced) or C body uses no dispatch/yield/mutation.
12
+ trivial: Prelude method body is a literal return (self/true/false/nil/Integer).
13
+ leaf_when_numeric: C body falls through to rb_num_coerce_* only when an operand
14
+ is non-numeric; safe to fold when every argument is a concrete numeric.
15
+ inline_block: Prelude method carries :inline_block or :use_block; block-dependent.
16
+ block_dependent: C body yields or checks rb_block_given_p.
17
+ mutates_self: C body checks rb_check_frozen — typically a prelude to mutation.
18
+ dispatch: C body calls user-redefinable methods (rb_funcall*, rb_equal, rb_Float,
19
+ num_funcall*, etc).
20
+ unknown: C body not located in indexed C files.
21
+ classes:
22
+ RegexpError:
23
+ parent: StandardError
24
+ defined_at: references/ruby/re.c:4805
25
+ includes: []
26
+ constants: {}
27
+ aliases: {}
28
+ instance_methods: {}
29
+ singleton_methods: {}
30
+ undefined: []
31
+ Regexp:
32
+ parent: Object
33
+ defined_at: references/ruby/re.c:4825
34
+ includes: []
35
+ constants:
36
+ IGNORECASE:
37
+ c_expression: INT2FIX(ONIG_OPTION_IGNORECASE)
38
+ defined_at: references/ruby/re.c:4862
39
+ EXTENDED:
40
+ c_expression: INT2FIX(ONIG_OPTION_EXTEND)
41
+ defined_at: references/ruby/re.c:4864
42
+ MULTILINE:
43
+ c_expression: INT2FIX(ONIG_OPTION_MULTILINE)
44
+ defined_at: references/ruby/re.c:4866
45
+ FIXEDENCODING:
46
+ c_expression: INT2FIX(ARG_ENCODING_FIXED)
47
+ defined_at: references/ruby/re.c:4868
48
+ NOENCODING:
49
+ c_expression: INT2FIX(ARG_ENCODING_NONE)
50
+ defined_at: references/ruby/re.c:4870
51
+ aliases: {}
52
+ instance_methods:
53
+ initialize:
54
+ source: c
55
+ cfunc: rb_reg_initialize_m
56
+ arity: -1
57
+ defined_at: references/ruby/re.c:4835
58
+ c_body_at: references/ruby/re.c:4030
59
+ c_effects: []
60
+ purity: leaf
61
+ rbs:
62
+ - "(Regexp regexp, ?timeout: _ToF?) -> void"
63
+ - "(string pattern, ?int | string | bool | nil options, ?timeout: _ToF?) ->
64
+ void"
65
+ rbs_at: references/rbs/core/regexp.rbs:1596
66
+ initialize_copy:
67
+ source: c
68
+ cfunc: rb_reg_init_copy
69
+ arity: 1
70
+ defined_at: references/ruby/re.c:4836
71
+ c_body_at: references/ruby/re.c:4459
72
+ c_effects: []
73
+ purity: leaf
74
+ rbs:
75
+ - "(self object) -> self"
76
+ rbs_at: references/rbs/core/regexp.rbs:1599
77
+ hash:
78
+ source: c
79
+ cfunc: rb_reg_hash
80
+ arity: 0
81
+ defined_at: references/ruby/re.c:4837
82
+ c_body_at: references/ruby/re.c:3526
83
+ c_effects: []
84
+ purity: leaf
85
+ rbs:
86
+ - "() -> Integer"
87
+ rbs_at: references/rbs/core/regexp.rbs:1761
88
+ eql?:
89
+ source: c
90
+ cfunc: rb_reg_equal
91
+ arity: 1
92
+ defined_at: references/ruby/re.c:4838
93
+ c_body_at: references/ruby/re.c:3559
94
+ c_effects: []
95
+ purity: leaf
96
+ "==":
97
+ source: c
98
+ cfunc: rb_reg_equal
99
+ arity: 1
100
+ defined_at: references/ruby/re.c:4839
101
+ c_body_at: references/ruby/re.c:3559
102
+ c_effects: []
103
+ purity: leaf
104
+ rbs:
105
+ - "(untyped other) -> bool"
106
+ rbs_at: references/rbs/core/regexp.rbs:1610
107
+ "=~":
108
+ source: c
109
+ cfunc: rb_reg_match
110
+ arity: 1
111
+ defined_at: references/ruby/re.c:4840
112
+ c_body_at: references/ruby/re.c:3720
113
+ c_effects: []
114
+ purity: leaf
115
+ rbs:
116
+ - "(interned? string) -> Integer?"
117
+ - "(nil) -> nil"
118
+ rbs_at: references/rbs/core/regexp.rbs:1684
119
+ "===":
120
+ source: c
121
+ cfunc: rb_reg_eqq
122
+ arity: 1
123
+ defined_at: references/ruby/re.c:4841
124
+ c_body_at: references/ruby/re.c:3749
125
+ c_effects: []
126
+ purity: leaf
127
+ rbs:
128
+ - "(untyped other) -> bool"
129
+ rbs_at: references/rbs/core/regexp.rbs:1630
130
+ "~":
131
+ source: c
132
+ cfunc: rb_reg_match2
133
+ arity: 0
134
+ defined_at: references/ruby/re.c:4842
135
+ c_body_at: references/ruby/re.c:3775
136
+ c_effects: []
137
+ purity: leaf
138
+ rbs:
139
+ - "() -> Integer?"
140
+ rbs_at: references/rbs/core/regexp.rbs:1973
141
+ match:
142
+ source: c
143
+ cfunc: rb_reg_match_m
144
+ arity: -1
145
+ defined_at: references/ruby/re.c:4843
146
+ c_body_at: references/ruby/re.c:3836
147
+ c_effects:
148
+ - block
149
+ purity: block_dependent
150
+ rbs:
151
+ - "(interned? str, ?int offset) -> MatchData?"
152
+ - "[T] (interned? str, ?int offset) { (MatchData matchdata) -> T } -> T?"
153
+ - "(nil, ?int offset) ?{ (MatchData matchdata) -> void } -> nil"
154
+ rbs_at: references/rbs/core/regexp.rbs:1814
155
+ match?:
156
+ source: c
157
+ cfunc: rb_reg_match_m_p
158
+ arity: -1
159
+ defined_at: references/ruby/re.c:4844
160
+ c_body_at: references/ruby/re.c:3877
161
+ c_effects: []
162
+ purity: leaf
163
+ rbs:
164
+ - "(interned str, ?int offset) -> bool"
165
+ - "(nil, ?int offset) -> false"
166
+ rbs_at: references/rbs/core/regexp.rbs:1832
167
+ to_s:
168
+ source: c
169
+ cfunc: rb_reg_to_s
170
+ arity: 0
171
+ defined_at: references/ruby/re.c:4845
172
+ c_body_at: references/ruby/re.c:561
173
+ c_effects: []
174
+ purity: leaf
175
+ rbs:
176
+ - "() -> String"
177
+ rbs_at: references/rbs/core/regexp.rbs:1945
178
+ inspect:
179
+ source: c
180
+ cfunc: rb_reg_inspect
181
+ arity: 0
182
+ defined_at: references/ruby/re.c:4846
183
+ c_body_at: references/ruby/re.c:523
184
+ c_effects: []
185
+ purity: leaf
186
+ rbs:
187
+ - "() -> String"
188
+ rbs_at: references/rbs/core/regexp.rbs:1773
189
+ source:
190
+ source: c
191
+ cfunc: rb_reg_source
192
+ arity: 0
193
+ defined_at: references/ruby/re.c:4847
194
+ c_body_at: references/ruby/re.c:502
195
+ c_effects: []
196
+ purity: leaf
197
+ rbs:
198
+ - "() -> String"
199
+ rbs_at: references/rbs/core/regexp.rbs:1918
200
+ casefold?:
201
+ source: c
202
+ cfunc: rb_reg_casefold_p
203
+ arity: 0
204
+ defined_at: references/ruby/re.c:4848
205
+ c_body_at: references/ruby/re.c:741
206
+ c_effects: []
207
+ purity: leaf
208
+ rbs:
209
+ - "() -> bool"
210
+ rbs_at: references/rbs/core/regexp.rbs:1698
211
+ options:
212
+ source: c
213
+ cfunc: rb_reg_options_m
214
+ arity: 0
215
+ defined_at: references/ruby/re.c:4849
216
+ c_body_at: references/ruby/re.c:786
217
+ c_effects: []
218
+ purity: leaf
219
+ rbs:
220
+ - "() -> Integer"
221
+ rbs_at: references/rbs/core/regexp.rbs:1900
222
+ encoding:
223
+ source: c
224
+ cfunc: rb_obj_encoding
225
+ arity: 0
226
+ defined_at: references/ruby/re.c:4850
227
+ purity: unknown
228
+ c_body_at: not_found
229
+ rbs:
230
+ - "() -> Encoding"
231
+ rbs_at: references/rbs/core/regexp.rbs:1709
232
+ fixed_encoding?:
233
+ source: c
234
+ cfunc: rb_reg_fixed_encoding_p
235
+ arity: 0
236
+ defined_at: references/ruby/re.c:4851
237
+ c_body_at: references/ruby/re.c:1562
238
+ c_effects: []
239
+ purity: leaf
240
+ rbs:
241
+ - "() -> bool"
242
+ rbs_at: references/rbs/core/regexp.rbs:1751
243
+ names:
244
+ source: c
245
+ cfunc: rb_reg_names
246
+ arity: 0
247
+ defined_at: references/ruby/re.c:4852
248
+ c_body_at: references/ruby/re.c:815
249
+ c_effects: []
250
+ purity: leaf
251
+ rbs:
252
+ - "() -> Array[String]"
253
+ rbs_at: references/rbs/core/regexp.rbs:1864
254
+ named_captures:
255
+ source: c
256
+ cfunc: rb_reg_named_captures
257
+ arity: 0
258
+ defined_at: references/ruby/re.c:4853
259
+ c_body_at: references/ruby/re.c:859
260
+ c_effects: []
261
+ purity: leaf
262
+ rbs:
263
+ - "() -> Hash[String, Array[Integer]]"
264
+ rbs_at: references/rbs/core/regexp.rbs:1851
265
+ timeout:
266
+ source: c
267
+ cfunc: rb_reg_timeout_get
268
+ arity: 0
269
+ defined_at: references/ruby/re.c:4854
270
+ c_body_at: references/ruby/re.c:4776
271
+ c_effects: []
272
+ purity: leaf
273
+ rbs:
274
+ - "() -> Float?"
275
+ rbs_at: references/rbs/core/regexp.rbs:1962
276
+ singleton_methods:
277
+ compile:
278
+ source: c
279
+ cfunc: rb_class_new_instance_pass_kw
280
+ arity: -1
281
+ defined_at: references/ruby/re.c:4827
282
+ purity: unknown
283
+ c_body_at: not_found
284
+ quote:
285
+ source: c
286
+ cfunc: rb_reg_s_quote
287
+ arity: 1
288
+ defined_at: references/ruby/re.c:4828
289
+ c_body_at: references/ruby/re.c:4217
290
+ c_effects: []
291
+ purity: leaf
292
+ escape:
293
+ source: c
294
+ cfunc: rb_reg_s_quote
295
+ arity: 1
296
+ defined_at: references/ruby/re.c:4829
297
+ c_body_at: references/ruby/re.c:4217
298
+ c_effects: []
299
+ purity: leaf
300
+ rbs:
301
+ - "(interned str) -> String"
302
+ rbs_at: references/rbs/core/regexp.rbs:1391
303
+ union:
304
+ source: c
305
+ cfunc: rb_reg_s_union_m
306
+ arity: -2
307
+ defined_at: references/ruby/re.c:4830
308
+ c_body_at: references/ruby/re.c:4413
309
+ c_effects: []
310
+ purity: leaf
311
+ rbs:
312
+ - "(*Regexp | _ToRegexp | string patterns) -> Regexp"
313
+ - "(array[Regexp | _ToRegexp | string] patterns) -> Regexp"
314
+ - "(Symbol | [ Symbol ] symbol_pattern) -> Regexp"
315
+ rbs_at: references/rbs/core/regexp.rbs:1545
316
+ last_match:
317
+ source: c
318
+ cfunc: rb_reg_s_last_match
319
+ arity: -1
320
+ defined_at: references/ruby/re.c:4831
321
+ c_body_at: references/ruby/re.c:4668
322
+ c_effects: []
323
+ purity: leaf
324
+ rbs:
325
+ - "() -> MatchData?"
326
+ - "(MatchData::capture capture) -> String?"
327
+ rbs_at: references/rbs/core/regexp.rbs:1429
328
+ try_convert:
329
+ source: c
330
+ cfunc: rb_reg_s_try_convert
331
+ arity: 1
332
+ defined_at: references/ruby/re.c:4832
333
+ c_body_at: references/ruby/re.c:4259
334
+ c_effects: []
335
+ purity: leaf
336
+ rbs:
337
+ - "(Regexp | _ToRegexp regexp_like) -> Regexp"
338
+ - "(untyped other) -> Regexp?"
339
+ rbs_at: references/rbs/core/regexp.rbs:1487
340
+ linear_time?:
341
+ source: c
342
+ cfunc: rb_reg_s_linear_time_p
343
+ arity: -1
344
+ defined_at: references/ruby/re.c:4833
345
+ c_body_at: references/ruby/re.c:4445
346
+ c_effects: []
347
+ purity: leaf
348
+ rbs:
349
+ - "(Regexp regex, ?nil, ?timeout: untyped) -> bool"
350
+ - "(string regex, ?int | string | bool | nil options, ?timeout: untyped) ->
351
+ bool"
352
+ rbs_at: references/rbs/core/regexp.rbs:1451
353
+ timeout:
354
+ source: c
355
+ cfunc: rb_reg_s_timeout_get
356
+ arity: 0
357
+ defined_at: references/ruby/re.c:4858
358
+ c_body_at: references/ruby/re.c:4730
359
+ c_effects: []
360
+ purity: leaf
361
+ rbs:
362
+ - "() -> Float?"
363
+ rbs_at: references/rbs/core/regexp.rbs:1497
364
+ timeout=:
365
+ source: c
366
+ cfunc: rb_reg_s_timeout_set
367
+ arity: 1
368
+ defined_at: references/ruby/re.c:4859
369
+ c_body_at: references/ruby/re.c:4751
370
+ c_effects: []
371
+ purity: leaf
372
+ rbs:
373
+ - "[T < _ToF] (T timeout) -> T"
374
+ rbs_at: references/rbs/core/regexp.rbs:1511
375
+ undefined: []
376
+ MatchData:
377
+ parent: Object
378
+ defined_at: references/ruby/re.c:4874
379
+ includes: []
380
+ constants: {}
381
+ aliases:
382
+ deconstruct:
383
+ old: captures
384
+ source: c
385
+ defined_at: references/ruby/re.c:4895
386
+ instance_methods:
387
+ initialize_copy:
388
+ source: c
389
+ cfunc: match_init_copy
390
+ arity: 1
391
+ defined_at: references/ruby/re.c:4879
392
+ c_body_at: references/ruby/re.c:1085
393
+ c_effects: []
394
+ purity: leaf
395
+ rbs:
396
+ - "(MatchData instance) -> self"
397
+ rbs_at: references/rbs/core/match_data.rbs:51
398
+ regexp:
399
+ source: c
400
+ cfunc: match_regexp
401
+ arity: 0
402
+ defined_at: references/ruby/re.c:4880
403
+ c_body_at: references/ruby/re.c:1124
404
+ c_effects: []
405
+ purity: leaf
406
+ rbs:
407
+ - "() -> Regexp"
408
+ rbs_at: references/rbs/core/match_data.rbs:554
409
+ names:
410
+ source: c
411
+ cfunc: match_names
412
+ arity: 0
413
+ defined_at: references/ruby/re.c:4881
414
+ c_body_at: references/ruby/re.c:1159
415
+ c_effects: []
416
+ purity: leaf
417
+ rbs:
418
+ - "() -> Array[String]"
419
+ rbs_at: references/rbs/core/match_data.rbs:417
420
+ size:
421
+ source: c
422
+ cfunc: match_size
423
+ arity: 0
424
+ defined_at: references/ruby/re.c:4882
425
+ c_body_at: references/ruby/re.c:1180
426
+ c_effects: []
427
+ purity: leaf
428
+ rbs:
429
+ - "() -> Integer"
430
+ rbs_at: references/rbs/core/match_data.rbs:566
431
+ length:
432
+ source: c
433
+ cfunc: match_size
434
+ arity: 0
435
+ defined_at: references/ruby/re.c:4883
436
+ c_body_at: references/ruby/re.c:1180
437
+ c_effects: []
438
+ purity: leaf
439
+ offset:
440
+ source: c
441
+ cfunc: match_offset
442
+ arity: 1
443
+ defined_at: references/ruby/re.c:4884
444
+ c_body_at: references/ruby/re.c:1246
445
+ c_effects: []
446
+ purity: leaf
447
+ rbs:
448
+ - "(capture backref) -> ([ Integer, Integer ] | [ nil, nil ])"
449
+ rbs_at: references/rbs/core/match_data.rbs:509
450
+ byteoffset:
451
+ source: c
452
+ cfunc: match_byteoffset
453
+ arity: 1
454
+ defined_at: references/ruby/re.c:4885
455
+ c_body_at: references/ruby/re.c:1281
456
+ c_effects: []
457
+ purity: leaf
458
+ rbs:
459
+ - "(capture backref) -> ([ Integer, Integer ] | [ nil, nil ])"
460
+ rbs_at: references/rbs/core/match_data.rbs:229
461
+ bytebegin:
462
+ source: c
463
+ cfunc: match_bytebegin
464
+ arity: 1
465
+ defined_at: references/ruby/re.c:4886
466
+ c_body_at: references/ruby/re.c:1305
467
+ c_effects: []
468
+ purity: leaf
469
+ rbs:
470
+ - "(capture backref) -> Integer?"
471
+ rbs_at: references/rbs/core/match_data.rbs:173
472
+ byteend:
473
+ source: c
474
+ cfunc: match_byteend
475
+ arity: 1
476
+ defined_at: references/ruby/re.c:4887
477
+ c_body_at: references/ruby/re.c:1329
478
+ c_effects: []
479
+ purity: leaf
480
+ rbs:
481
+ - "(capture backref) -> Integer?"
482
+ rbs_at: references/rbs/core/match_data.rbs:211
483
+ begin:
484
+ source: c
485
+ cfunc: match_begin
486
+ arity: 1
487
+ defined_at: references/ruby/re.c:4888
488
+ c_body_at: references/ruby/re.c:1353
489
+ c_effects: []
490
+ purity: leaf
491
+ rbs:
492
+ - "(capture backref) -> Integer?"
493
+ rbs_at: references/rbs/core/match_data.rbs:135
494
+ end:
495
+ source: c
496
+ cfunc: match_end
497
+ arity: 1
498
+ defined_at: references/ruby/re.c:4889
499
+ c_body_at: references/ruby/re.c:1379
500
+ c_effects: []
501
+ purity: leaf
502
+ rbs:
503
+ - "(capture backref) -> Integer?"
504
+ rbs_at: references/rbs/core/match_data.rbs:311
505
+ match:
506
+ source: c
507
+ cfunc: match_nth
508
+ arity: 1
509
+ defined_at: references/ruby/re.c:4890
510
+ c_body_at: references/ruby/re.c:1421
511
+ c_effects: []
512
+ purity: leaf
513
+ rbs:
514
+ - "(capture backref) -> String?"
515
+ rbs_at: references/rbs/core/match_data.rbs:443
516
+ match_length:
517
+ source: c
518
+ cfunc: match_nth_length
519
+ arity: 1
520
+ defined_at: references/ruby/re.c:4891
521
+ c_body_at: references/ruby/re.c:1465
522
+ c_effects: []
523
+ purity: leaf
524
+ rbs:
525
+ - "(capture backref) -> Integer?"
526
+ rbs_at: references/rbs/core/match_data.rbs:470
527
+ to_a:
528
+ source: c
529
+ cfunc: match_to_a
530
+ arity: 0
531
+ defined_at: references/ruby/re.c:4892
532
+ c_body_at: references/ruby/re.c:2118
533
+ c_effects: []
534
+ purity: leaf
535
+ rbs:
536
+ - "() -> Array[String?]"
537
+ rbs_at: references/rbs/core/match_data.rbs:593
538
+ "[]":
539
+ source: c
540
+ cfunc: match_aref
541
+ arity: -1
542
+ defined_at: references/ruby/re.c:4893
543
+ c_body_at: references/ruby/re.c:2252
544
+ c_effects: []
545
+ purity: leaf
546
+ rbs:
547
+ - "(capture backref, ?nil) -> String?"
548
+ - "(int start, int length) -> Array[String?]"
549
+ - "(range[int?] range) -> Array[String?]"
550
+ rbs_at: references/rbs/core/match_data.rbs:95
551
+ captures:
552
+ source: c
553
+ cfunc: match_captures
554
+ arity: 0
555
+ defined_at: references/ruby/re.c:4894
556
+ c_body_at: references/ruby/re.c:2140
557
+ c_effects: []
558
+ purity: leaf
559
+ rbs:
560
+ - "() -> Array[String?]"
561
+ rbs_at: references/rbs/core/match_data.rbs:244
562
+ named_captures:
563
+ source: c
564
+ cfunc: match_named_captures
565
+ arity: -1
566
+ defined_at: references/ruby/re.c:4896
567
+ c_body_at: references/ruby/re.c:2442
568
+ c_effects: []
569
+ purity: leaf
570
+ rbs:
571
+ - "() -> Hash[String, String?]"
572
+ - "(symbolize_names: true) -> Hash[Symbol, String?]"
573
+ - "(symbolize_names: boolish) -> Hash[String | Symbol, String?]"
574
+ rbs_at: references/rbs/core/match_data.rbs:394
575
+ deconstruct_keys:
576
+ source: c
577
+ cfunc: match_deconstruct_keys
578
+ arity: 1
579
+ defined_at: references/ruby/re.c:4897
580
+ c_body_at: references/ruby/re.c:2495
581
+ c_effects:
582
+ - mutate
583
+ purity: mutates_self
584
+ rbs:
585
+ - "(Array[Symbol]? array_of_names) -> Hash[Symbol, String?]"
586
+ rbs_at: references/rbs/core/match_data.rbs:273
587
+ values_at:
588
+ source: c
589
+ cfunc: match_values_at
590
+ arity: -1
591
+ defined_at: references/ruby/re.c:4898
592
+ c_body_at: references/ruby/re.c:2321
593
+ c_effects:
594
+ - mutate
595
+ purity: mutates_self
596
+ rbs:
597
+ - "(*capture | range[int?] backrefs) -> Array[String?]"
598
+ rbs_at: references/rbs/core/match_data.rbs:636
599
+ pre_match:
600
+ source: c
601
+ cfunc: rb_reg_match_pre
602
+ arity: 0
603
+ defined_at: references/ruby/re.c:4899
604
+ c_body_at: references/ruby/re.c:1971
605
+ c_effects: []
606
+ purity: leaf
607
+ rbs:
608
+ - "() -> String"
609
+ rbs_at: references/rbs/core/match_data.rbs:543
610
+ post_match:
611
+ source: c
612
+ cfunc: rb_reg_match_post
613
+ arity: 0
614
+ defined_at: references/ruby/re.c:4900
615
+ c_body_at: references/ruby/re.c:2004
616
+ c_effects: []
617
+ purity: leaf
618
+ rbs:
619
+ - "() -> String"
620
+ rbs_at: references/rbs/core/match_data.rbs:526
621
+ to_s:
622
+ source: c
623
+ cfunc: match_to_s
624
+ arity: 0
625
+ defined_at: references/ruby/re.c:4901
626
+ c_body_at: references/ruby/re.c:2366
627
+ c_effects: []
628
+ purity: leaf
629
+ rbs:
630
+ - "() -> String"
631
+ rbs_at: references/rbs/core/match_data.rbs:611
632
+ inspect:
633
+ source: c
634
+ cfunc: match_inspect
635
+ arity: 0
636
+ defined_at: references/ruby/re.c:4902
637
+ c_body_at: references/ruby/re.c:2608
638
+ c_effects:
639
+ - mutate
640
+ purity: mutates_self
641
+ rbs:
642
+ - "() -> String"
643
+ rbs_at: references/rbs/core/match_data.rbs:353
644
+ string:
645
+ source: c
646
+ cfunc: match_string
647
+ arity: 0
648
+ defined_at: references/ruby/re.c:4903
649
+ c_body_at: references/ruby/re.c:2561
650
+ c_effects: []
651
+ purity: leaf
652
+ rbs:
653
+ - "() -> String"
654
+ rbs_at: references/rbs/core/match_data.rbs:579
655
+ hash:
656
+ source: c
657
+ cfunc: match_hash
658
+ arity: 0
659
+ defined_at: references/ruby/re.c:4904
660
+ c_body_at: references/ruby/re.c:3583
661
+ c_effects: []
662
+ purity: leaf
663
+ rbs:
664
+ - "() -> Integer"
665
+ rbs_at: references/rbs/core/match_data.rbs:331
666
+ eql?:
667
+ source: c
668
+ cfunc: match_equal
669
+ arity: 1
670
+ defined_at: references/ruby/re.c:4905
671
+ c_body_at: references/ruby/re.c:3609
672
+ c_effects: []
673
+ purity: leaf
674
+ "==":
675
+ source: c
676
+ cfunc: match_equal
677
+ arity: 1
678
+ defined_at: references/ruby/re.c:4906
679
+ c_body_at: references/ruby/re.c:3609
680
+ c_effects: []
681
+ purity: leaf
682
+ rbs:
683
+ - "(MatchData other) -> bool"
684
+ - "(untyped) -> false"
685
+ rbs_at: references/rbs/core/match_data.rbs:57
686
+ singleton_methods: {}
687
+ undefined:
688
+ - new
689
+ - allocate