rigortype 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +215 -117
  3. data/data/builtins/ruby_core/comparable.yml +87 -0
  4. data/data/builtins/ruby_core/complex.yml +505 -0
  5. data/data/builtins/ruby_core/date.yml +1737 -0
  6. data/data/builtins/ruby_core/enumerable.yml +557 -0
  7. data/data/builtins/ruby_core/file.yml +9 -0
  8. data/data/builtins/ruby_core/hash.yml +936 -0
  9. data/data/builtins/ruby_core/range.yml +389 -0
  10. data/data/builtins/ruby_core/rational.yml +365 -0
  11. data/data/builtins/ruby_core/set.yml +594 -0
  12. data/data/builtins/ruby_core/string.yml +9 -0
  13. data/data/builtins/ruby_core/time.yml +752 -0
  14. data/lib/rigor/analysis/check_rules.rb +11 -3
  15. data/lib/rigor/builtins/imported_refinements.rb +192 -10
  16. data/lib/rigor/cli.rb +1 -1
  17. data/lib/rigor/inference/acceptance.rb +181 -12
  18. data/lib/rigor/inference/builtins/comparable_catalog.rb +27 -0
  19. data/lib/rigor/inference/builtins/complex_catalog.rb +41 -0
  20. data/lib/rigor/inference/builtins/date_catalog.rb +98 -0
  21. data/lib/rigor/inference/builtins/enumerable_catalog.rb +27 -0
  22. data/lib/rigor/inference/builtins/hash_catalog.rb +40 -0
  23. data/lib/rigor/inference/builtins/range_catalog.rb +46 -0
  24. data/lib/rigor/inference/builtins/rational_catalog.rb +38 -0
  25. data/lib/rigor/inference/builtins/set_catalog.rb +54 -0
  26. data/lib/rigor/inference/builtins/time_catalog.rb +64 -0
  27. data/lib/rigor/inference/method_dispatcher/constant_folding.rb +145 -11
  28. data/lib/rigor/inference/method_dispatcher/iterator_dispatch.rb +202 -1
  29. data/lib/rigor/inference/method_dispatcher/kernel_dispatch.rb +95 -0
  30. data/lib/rigor/inference/method_dispatcher/overload_selector.rb +23 -7
  31. data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +135 -6
  32. data/lib/rigor/inference/method_dispatcher.rb +3 -1
  33. data/lib/rigor/inference/method_parameter_binder.rb +29 -4
  34. data/lib/rigor/inference/narrowing.rb +211 -0
  35. data/lib/rigor/inference/scope_indexer.rb +87 -11
  36. data/lib/rigor/inference/statement_evaluator.rb +6 -0
  37. data/lib/rigor/rbs_extended.rb +170 -14
  38. data/lib/rigor/type/combinator.rb +90 -0
  39. data/lib/rigor/type/integer_range.rb +4 -2
  40. data/lib/rigor/type/intersection.rb +135 -0
  41. data/lib/rigor/type/refined.rb +174 -0
  42. data/lib/rigor/type.rb +2 -0
  43. data/lib/rigor/version.rb +1 -1
  44. data/sig/rigor/environment.rbs +4 -6
  45. data/sig/rigor/inference.rbs +2 -1
  46. data/sig/rigor/rbs_extended.rbs +11 -0
  47. data/sig/rigor/type.rbs +75 -35
  48. metadata +22 -1
@@ -0,0 +1,594 @@
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/set.c
6
+ ruby_prelude:
7
+ rbs:
8
+ - references/rbs/core/set.rbs
9
+ purity_levels:
10
+ leaf: Prelude :leaf marker (VM-enforced) or C body uses no dispatch/yield/mutation.
11
+ trivial: Prelude method body is a literal return (self/true/false/nil/Integer).
12
+ leaf_when_numeric: C body falls through to rb_num_coerce_* only when an operand
13
+ is non-numeric; safe to fold when every argument is a concrete numeric.
14
+ inline_block: Prelude method carries :inline_block or :use_block; block-dependent.
15
+ block_dependent: C body yields or checks rb_block_given_p.
16
+ mutates_self: C body checks rb_check_frozen — typically a prelude to mutation.
17
+ dispatch: C body calls user-redefinable methods (rb_funcall*, rb_equal, rb_Float,
18
+ num_funcall*, etc).
19
+ unknown: C body not located in indexed C files.
20
+ classes:
21
+ Set:
22
+ parent: Object
23
+ defined_at: references/ruby/set.c:2222
24
+ includes:
25
+ - module: Enumerable
26
+ defined_at: references/ruby/set.c:2223
27
+ constants: {}
28
+ aliases:
29
+ intersection:
30
+ old: "&"
31
+ source: c
32
+ defined_at: references/ruby/set.c:2240
33
+ difference:
34
+ old: "-"
35
+ source: c
36
+ defined_at: references/ruby/set.c:2242
37
+ "+":
38
+ old: "|"
39
+ source: c
40
+ defined_at: references/ruby/set.c:2245
41
+ union:
42
+ old: "|"
43
+ source: c
44
+ defined_at: references/ruby/set.c:2246
45
+ eql?:
46
+ old: "=="
47
+ source: c
48
+ defined_at: references/ruby/set.c:2249
49
+ !!str '<<':
50
+ old: add
51
+ source: c
52
+ defined_at: references/ruby/set.c:2251
53
+ map!:
54
+ old: collect!
55
+ source: c
56
+ defined_at: references/ruby/set.c:2256
57
+ member?:
58
+ old: include?
59
+ source: c
60
+ defined_at: references/ruby/set.c:2270
61
+ "===":
62
+ old: include?
63
+ source: c
64
+ defined_at: references/ruby/set.c:2271
65
+ to_s:
66
+ old: inspect
67
+ source: c
68
+ defined_at: references/ruby/set.c:2273
69
+ "<":
70
+ old: proper_subset?
71
+ source: c
72
+ defined_at: references/ruby/set.c:2279
73
+ ">":
74
+ old: proper_superset?
75
+ source: c
76
+ defined_at: references/ruby/set.c:2281
77
+ length:
78
+ old: size
79
+ source: c
80
+ defined_at: references/ruby/set.c:2286
81
+ filter!:
82
+ old: select!
83
+ source: c
84
+ defined_at: references/ruby/set.c:2288
85
+ "<=":
86
+ old: subset?
87
+ source: c
88
+ defined_at: references/ruby/set.c:2290
89
+ ">=":
90
+ old: superset?
91
+ source: c
92
+ defined_at: references/ruby/set.c:2293
93
+ instance_methods:
94
+ initialize:
95
+ source: c
96
+ cfunc: set_i_initialize
97
+ arity: -1
98
+ defined_at: references/ruby/set.c:2236
99
+ c_body_at: references/ruby/set.c:505
100
+ c_effects:
101
+ - block
102
+ - raises
103
+ purity: block_dependent
104
+ rbs:
105
+ - "(_Each[A]) -> untyped"
106
+ - "[X] (_Each[X]) { (X) -> A } -> untyped"
107
+ - "(?nil) -> untyped"
108
+ rbs_at: references/rbs/core/set.rbs:215
109
+ initialize_copy:
110
+ source: c
111
+ cfunc: set_i_initialize_copy
112
+ arity: 1
113
+ defined_at: references/ruby/set.c:2237
114
+ c_body_at: references/ruby/set.c:538
115
+ c_effects:
116
+ - raises
117
+ purity: leaf
118
+ "&":
119
+ source: c
120
+ cfunc: set_i_intersection
121
+ arity: 1
122
+ defined_at: references/ruby/set.c:2239
123
+ c_body_at: references/ruby/set.c:1050
124
+ c_effects:
125
+ - block
126
+ purity: block_dependent
127
+ rbs:
128
+ - "(_Each[A]) -> self"
129
+ rbs_at: references/rbs/core/set.rbs:237
130
+ "-":
131
+ source: c
132
+ cfunc: set_i_difference
133
+ arity: 1
134
+ defined_at: references/ruby/set.c:2241
135
+ c_body_at: references/ruby/set.c:1378
136
+ c_effects: []
137
+ purity: leaf
138
+ rbs:
139
+ - "(_Each[A]) -> self"
140
+ rbs_at: references/rbs/core/set.rbs:288
141
+ "^":
142
+ source: c
143
+ cfunc: set_i_xor
144
+ arity: 1
145
+ defined_at: references/ruby/set.c:2243
146
+ c_body_at: references/ruby/set.c:1292
147
+ c_effects: []
148
+ purity: leaf
149
+ rbs:
150
+ - "(_Each[A]) -> self"
151
+ rbs_at: references/rbs/core/set.rbs:395
152
+ "|":
153
+ source: c
154
+ cfunc: set_i_union
155
+ arity: 1
156
+ defined_at: references/ruby/set.c:2244
157
+ c_body_at: references/ruby/set.c:1319
158
+ c_effects: []
159
+ purity: leaf
160
+ rbs:
161
+ - "(_Each[A]) -> self"
162
+ rbs_at: references/rbs/core/set.rbs:258
163
+ "<=>":
164
+ source: c
165
+ cfunc: set_i_compare
166
+ arity: 1
167
+ defined_at: references/ruby/set.c:2247
168
+ c_body_at: references/ruby/set.c:1773
169
+ c_effects: []
170
+ purity: leaf
171
+ "==":
172
+ source: c
173
+ cfunc: set_i_eq
174
+ arity: 1
175
+ defined_at: references/ruby/set.c:2248
176
+ c_body_at: references/ruby/set.c:1831
177
+ c_effects:
178
+ - dispatch
179
+ purity: dispatch
180
+ add:
181
+ source: c
182
+ cfunc: set_i_add
183
+ arity: 1
184
+ defined_at: references/ruby/set.c:2250
185
+ c_body_at: references/ruby/set.c:708
186
+ c_effects:
187
+ - mutate
188
+ purity: mutates_self
189
+ rbs:
190
+ - "(A) -> self"
191
+ rbs_at: references/rbs/core/set.rbs:310
192
+ add?:
193
+ source: c
194
+ cfunc: set_i_add_p
195
+ arity: 1
196
+ defined_at: references/ruby/set.c:2252
197
+ c_body_at: references/ruby/set.c:734
198
+ c_effects:
199
+ - mutate
200
+ purity: mutates_self
201
+ rbs:
202
+ - "(A) -> self?"
203
+ rbs_at: references/rbs/core/set.rbs:333
204
+ classify:
205
+ source: c
206
+ cfunc: set_i_classify
207
+ arity: 0
208
+ defined_at: references/ruby/set.c:2253
209
+ c_body_at: references/ruby/set.c:866
210
+ c_effects: []
211
+ purity: leaf
212
+ rbs:
213
+ - "[X] () { (A) -> X } -> Hash[X, self]"
214
+ rbs_at: references/rbs/core/set.rbs:414
215
+ clear:
216
+ source: c
217
+ cfunc: set_i_clear
218
+ arity: 0
219
+ defined_at: references/ruby/set.c:2254
220
+ c_body_at: references/ruby/set.c:1001
221
+ c_effects:
222
+ - mutate
223
+ purity: mutates_self
224
+ rbs:
225
+ - "() -> self"
226
+ rbs_at: references/rbs/core/set.rbs:426
227
+ collect!:
228
+ source: c
229
+ cfunc: set_i_collect
230
+ arity: 0
231
+ defined_at: references/ruby/set.c:2255
232
+ c_body_at: references/ruby/set.c:1423
233
+ c_effects:
234
+ - mutate
235
+ purity: mutates_self
236
+ rbs:
237
+ - "() { (A) -> A } -> self"
238
+ rbs_at: references/rbs/core/set.rbs:436
239
+ compare_by_identity:
240
+ source: c
241
+ cfunc: set_i_compare_by_identity
242
+ arity: 0
243
+ defined_at: references/ruby/set.c:2257
244
+ c_body_at: references/ruby/set.c:1220
245
+ c_effects:
246
+ - raises
247
+ purity: leaf
248
+ rbs:
249
+ - "() -> self"
250
+ rbs_at: references/rbs/core/set.rbs:488
251
+ compare_by_identity?:
252
+ source: c
253
+ cfunc: set_i_compare_by_identity_p
254
+ arity: 0
255
+ defined_at: references/ruby/set.c:2258
256
+ c_body_at: references/ruby/set.c:1239
257
+ c_effects: []
258
+ purity: leaf
259
+ rbs:
260
+ - "() -> bool"
261
+ rbs_at: references/rbs/core/set.rbs:497
262
+ delete:
263
+ source: c
264
+ cfunc: set_i_delete
265
+ arity: 1
266
+ defined_at: references/ruby/set.c:2259
267
+ c_body_at: references/ruby/set.c:756
268
+ c_effects:
269
+ - mutate
270
+ purity: mutates_self
271
+ rbs:
272
+ - "(A) -> self"
273
+ rbs_at: references/rbs/core/set.rbs:451
274
+ delete?:
275
+ source: c
276
+ cfunc: set_i_delete_p
277
+ arity: 1
278
+ defined_at: references/ruby/set.c:2260
279
+ c_body_at: references/ruby/set.c:773
280
+ c_effects:
281
+ - mutate
282
+ purity: mutates_self
283
+ rbs:
284
+ - "(A) -> self?"
285
+ rbs_at: references/rbs/core/set.rbs:460
286
+ delete_if:
287
+ source: c
288
+ cfunc: set_i_delete_if
289
+ arity: 0
290
+ defined_at: references/ruby/set.c:2261
291
+ c_body_at: references/ruby/set.c:798
292
+ c_effects:
293
+ - mutate
294
+ purity: mutates_self
295
+ rbs:
296
+ - "() { (A) -> untyped } -> self"
297
+ rbs_at: references/rbs/core/set.rbs:470
298
+ disjoint?:
299
+ source: c
300
+ cfunc: set_i_disjoint
301
+ arity: 1
302
+ defined_at: references/ruby/set.c:2262
303
+ c_body_at: references/ruby/set.c:1759
304
+ c_effects: []
305
+ purity: leaf
306
+ rbs:
307
+ - "(Set[A] | Enumerable[A]) -> bool"
308
+ rbs_at: references/rbs/core/set.rbs:511
309
+ divide:
310
+ source: c
311
+ cfunc: set_i_divide
312
+ arity: 0
313
+ defined_at: references/ruby/set.c:2263
314
+ c_body_at: references/ruby/set.c:970
315
+ c_effects: []
316
+ purity: leaf
317
+ rbs:
318
+ - "() { (A, A) -> Hash::_Key } -> Set[self]"
319
+ - "() { (A) -> Hash::_Key } -> Set[self]"
320
+ rbs_at: references/rbs/core/set.rbs:535
321
+ each:
322
+ source: c
323
+ cfunc: set_i_each
324
+ arity: 0
325
+ defined_at: references/ruby/set.c:2264
326
+ c_body_at: references/ruby/set.c:1400
327
+ c_effects: []
328
+ purity: leaf
329
+ rbs:
330
+ - "() { (A) -> void } -> self"
331
+ - "() -> Enumerator[A, self]"
332
+ rbs_at: references/rbs/core/set.rbs:546
333
+ empty?:
334
+ source: c
335
+ cfunc: set_i_empty
336
+ arity: 0
337
+ defined_at: references/ruby/set.c:2265
338
+ c_body_at: references/ruby/set.c:1263
339
+ c_effects: []
340
+ purity: leaf
341
+ rbs:
342
+ - "() -> bool"
343
+ rbs_at: references/rbs/core/set.rbs:555
344
+ flatten:
345
+ source: c
346
+ cfunc: set_i_flatten
347
+ arity: 0
348
+ defined_at: references/ruby/set.c:2266
349
+ c_body_at: references/ruby/set.c:1579
350
+ c_effects: []
351
+ purity: leaf
352
+ rbs:
353
+ - "() -> Set[untyped]"
354
+ rbs_at: references/rbs/core/set.rbs:564
355
+ flatten!:
356
+ source: c
357
+ cfunc: set_i_flatten_bang
358
+ arity: 0
359
+ defined_at: references/ruby/set.c:2267
360
+ c_body_at: references/ruby/set.c:1604
361
+ c_effects:
362
+ - mutate
363
+ purity: mutates_self
364
+ rbs:
365
+ - "() -> self?"
366
+ rbs_at: references/rbs/core/set.rbs:573
367
+ hash:
368
+ source: c
369
+ cfunc: set_i_hash
370
+ arity: 0
371
+ defined_at: references/ruby/set.c:2268
372
+ c_body_at: references/ruby/set.c:1866
373
+ c_effects: []
374
+ purity: leaf
375
+ include?:
376
+ source: c
377
+ cfunc: set_i_include
378
+ arity: 1
379
+ defined_at: references/ruby/set.c:2269
380
+ c_body_at: references/ruby/set.c:1108
381
+ c_effects: []
382
+ purity: leaf
383
+ rbs:
384
+ - "(Hash::_Key) -> bool"
385
+ rbs_at: references/rbs/core/set.rbs:359
386
+ inspect:
387
+ source: c
388
+ cfunc: set_i_inspect
389
+ arity: 0
390
+ defined_at: references/ruby/set.c:2272
391
+ c_body_at: references/ruby/set.c:607
392
+ c_effects:
393
+ - dispatch
394
+ purity: dispatch
395
+ intersect?:
396
+ source: c
397
+ cfunc: set_i_intersect
398
+ arity: 1
399
+ defined_at: references/ruby/set.c:2274
400
+ c_body_at: references/ruby/set.c:1718
401
+ c_effects:
402
+ - dispatch
403
+ - raises
404
+ purity: dispatch
405
+ rbs:
406
+ - "(Set[A] | Enumerable[A]) -> bool"
407
+ rbs_at: references/rbs/core/set.rbs:587
408
+ join:
409
+ source: c
410
+ cfunc: set_i_join
411
+ arity: -1
412
+ defined_at: references/ruby/set.c:2275
413
+ c_body_at: references/ruby/set.c:690
414
+ c_effects: []
415
+ purity: leaf
416
+ rbs:
417
+ - "(?string separator) -> String"
418
+ rbs_at: references/rbs/core/set.rbs:737
419
+ keep_if:
420
+ source: c
421
+ cfunc: set_i_keep_if
422
+ arity: 0
423
+ defined_at: references/ruby/set.c:2276
424
+ c_body_at: references/ruby/set.c:1453
425
+ c_effects:
426
+ - mutate
427
+ purity: mutates_self
428
+ rbs:
429
+ - "() { (A) -> untyped } -> self"
430
+ rbs_at: references/rbs/core/set.rbs:597
431
+ merge:
432
+ source: c
433
+ cfunc: set_i_merge
434
+ arity: -1
435
+ defined_at: references/ruby/set.c:2277
436
+ c_body_at: references/ruby/set.c:1164
437
+ c_effects:
438
+ - mutate
439
+ - raises
440
+ purity: mutates_self
441
+ rbs:
442
+ - "(*_Each[A]) -> self"
443
+ rbs_at: references/rbs/core/set.rbs:619
444
+ proper_subset?:
445
+ source: c
446
+ cfunc: set_i_proper_subset
447
+ arity: 1
448
+ defined_at: references/ruby/set.c:2278
449
+ c_body_at: references/ruby/set.c:1645
450
+ c_effects: []
451
+ purity: leaf
452
+ rbs:
453
+ - "(self) -> bool"
454
+ rbs_at: references/rbs/core/set.rbs:640
455
+ proper_superset?:
456
+ source: c
457
+ cfunc: set_i_proper_superset
458
+ arity: 1
459
+ defined_at: references/ruby/set.c:2280
460
+ c_body_at: references/ruby/set.c:1673
461
+ c_effects: []
462
+ purity: leaf
463
+ rbs:
464
+ - "(self) -> bool"
465
+ rbs_at: references/rbs/core/set.rbs:666
466
+ reject!:
467
+ source: c
468
+ cfunc: set_i_reject
469
+ arity: 0
470
+ defined_at: references/ruby/set.c:2282
471
+ c_body_at: references/ruby/set.c:816
472
+ c_effects:
473
+ - mutate
474
+ purity: mutates_self
475
+ rbs:
476
+ - "() { (A) -> untyped } -> self?"
477
+ rbs_at: references/rbs/core/set.rbs:480
478
+ replace:
479
+ source: c
480
+ cfunc: set_i_replace
481
+ arity: 1
482
+ defined_at: references/ruby/set.c:2283
483
+ c_body_at: references/ruby/set.c:1496
484
+ c_effects:
485
+ - mutate
486
+ - raises
487
+ purity: mutates_self
488
+ rbs:
489
+ - "(_Each[A]) -> self"
490
+ rbs_at: references/rbs/core/set.rbs:684
491
+ reset:
492
+ source: c
493
+ cfunc: set_i_reset
494
+ arity: 0
495
+ defined_at: references/ruby/set.c:2284
496
+ c_body_at: references/ruby/set.c:1526
497
+ c_effects:
498
+ - raises
499
+ purity: leaf
500
+ rbs:
501
+ - "() -> self"
502
+ rbs_at: references/rbs/core/set.rbs:693
503
+ size:
504
+ source: c
505
+ cfunc: set_i_size
506
+ arity: 0
507
+ defined_at: references/ruby/set.c:2285
508
+ c_body_at: references/ruby/set.c:1251
509
+ c_effects: []
510
+ purity: leaf
511
+ rbs:
512
+ - "() -> Integer"
513
+ rbs_at: references/rbs/core/set.rbs:605
514
+ select!:
515
+ source: c
516
+ cfunc: set_i_select
517
+ arity: 0
518
+ defined_at: references/ruby/set.c:2287
519
+ c_body_at: references/ruby/set.c:1472
520
+ c_effects:
521
+ - mutate
522
+ purity: mutates_self
523
+ rbs:
524
+ - "() { (A) -> untyped } -> self?"
525
+ rbs_at: references/rbs/core/set.rbs:703
526
+ subset?:
527
+ source: c
528
+ cfunc: set_i_subset
529
+ arity: 1
530
+ defined_at: references/ruby/set.c:2289
531
+ c_body_at: references/ruby/set.c:1659
532
+ c_effects: []
533
+ purity: leaf
534
+ rbs:
535
+ - "(self) -> bool"
536
+ rbs_at: references/rbs/core/set.rbs:627
537
+ subtract:
538
+ source: c
539
+ cfunc: set_i_subtract
540
+ arity: 1
541
+ defined_at: references/ruby/set.c:2291
542
+ c_body_at: references/ruby/set.c:1360
543
+ c_effects:
544
+ - mutate
545
+ purity: mutates_self
546
+ rbs:
547
+ - "(_Each[A]) -> self"
548
+ rbs_at: references/rbs/core/set.rbs:718
549
+ superset?:
550
+ source: c
551
+ cfunc: set_i_superset
552
+ arity: 1
553
+ defined_at: references/ruby/set.c:2292
554
+ c_body_at: references/ruby/set.c:1687
555
+ c_effects: []
556
+ purity: leaf
557
+ rbs:
558
+ - "(self) -> bool"
559
+ rbs_at: references/rbs/core/set.rbs:653
560
+ to_a:
561
+ source: c
562
+ cfunc: set_i_to_a
563
+ arity: 0
564
+ defined_at: references/ruby/set.c:2294
565
+ c_body_at: references/ruby/set.c:629
566
+ c_effects:
567
+ - mutate
568
+ purity: mutates_self
569
+ rbs:
570
+ - "() -> Array[A]"
571
+ rbs_at: references/rbs/core/set.rbs:729
572
+ to_set:
573
+ source: c
574
+ cfunc: set_i_to_set
575
+ arity: -1
576
+ defined_at: references/ruby/set.c:2295
577
+ c_body_at: references/ruby/set.c:660
578
+ c_effects:
579
+ - block
580
+ - dispatch
581
+ purity: block_dependent
582
+ singleton_methods:
583
+ "[]":
584
+ source: c
585
+ cfunc: set_s_create
586
+ arity: -1
587
+ defined_at: references/ruby/set.c:2234
588
+ c_body_at: references/ruby/set.c:416
589
+ c_effects: []
590
+ purity: leaf
591
+ rbs:
592
+ - "[X] (*X) -> Set[X]"
593
+ rbs_at: references/rbs/core/set.rbs:225
594
+ undefined: []
@@ -1556,6 +1556,15 @@ classes:
1556
1556
  - "(untyped object) -> String?"
1557
1557
  rbs_at: references/rbs/core/string.rbs:980
1558
1558
  undefined: []
1559
+ UnicodeNormalize:
1560
+ parent: Module
1561
+ defined_at: references/ruby/string.c:12943
1562
+ includes: []
1563
+ constants: {}
1564
+ aliases: {}
1565
+ instance_methods: {}
1566
+ singleton_methods: {}
1567
+ undefined: []
1559
1568
  Symbol:
1560
1569
  parent: Object
1561
1570
  defined_at: references/ruby/string.c:12956