rigortype 0.0.8 → 0.0.9

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +195 -21
  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/runner.rb +19 -3
  11. data/lib/rigor/builtins/imported_refinements.rb +6 -1
  12. data/lib/rigor/cache/rbs_class_ancestor_table.rb +63 -0
  13. data/lib/rigor/cache/rbs_class_type_param_names.rb +60 -0
  14. data/lib/rigor/cache/rbs_constant_table.rb +15 -51
  15. data/lib/rigor/cache/rbs_descriptor.rb +53 -0
  16. data/lib/rigor/cache/rbs_environment.rb +52 -0
  17. data/lib/rigor/cache/rbs_environment_marshal_patch.rb +40 -0
  18. data/lib/rigor/cache/rbs_known_class_names.rb +43 -0
  19. data/lib/rigor/cache/store.rb +79 -15
  20. data/lib/rigor/cli.rb +36 -4
  21. data/lib/rigor/environment/rbs_hierarchy.rb +18 -5
  22. data/lib/rigor/environment/rbs_loader.rb +137 -25
  23. data/lib/rigor/environment.rb +11 -2
  24. data/lib/rigor/flow_contribution.rb +128 -0
  25. data/lib/rigor/inference/builtins/encoding_catalog.rb +67 -0
  26. data/lib/rigor/inference/builtins/exception_catalog.rb +92 -0
  27. data/lib/rigor/inference/builtins/proc_catalog.rb +122 -0
  28. data/lib/rigor/inference/builtins/random_catalog.rb +58 -0
  29. data/lib/rigor/inference/builtins/re_catalog.rb +81 -0
  30. data/lib/rigor/inference/builtins/struct_catalog.rb +55 -0
  31. data/lib/rigor/inference/expression_typer.rb +26 -1
  32. data/lib/rigor/inference/method_dispatcher/constant_folding.rb +16 -1
  33. data/lib/rigor/inference/method_dispatcher/literal_string_folding.rb +87 -0
  34. data/lib/rigor/inference/method_dispatcher.rb +2 -0
  35. data/lib/rigor/inference/narrowing.rb +29 -14
  36. data/lib/rigor/rbs_extended.rb +55 -0
  37. data/lib/rigor/type/combinator.rb +72 -0
  38. data/lib/rigor/type/refined.rb +50 -2
  39. data/lib/rigor/version.rb +1 -1
  40. data/lib/rigor.rb +6 -0
  41. data/sig/rigor.rbs +3 -1
  42. metadata +21 -1
@@ -0,0 +1,641 @@
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/error.c
6
+ ruby_prelude:
7
+ rbs:
8
+ - references/rbs/core/exception.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
+ Exception:
22
+ parent: Object
23
+ defined_at: references/ruby/error.c:3631
24
+ includes: []
25
+ constants: {}
26
+ aliases: {}
27
+ instance_methods:
28
+ exception:
29
+ source: c
30
+ cfunc: exc_exception
31
+ arity: -1
32
+ defined_at: references/ruby/error.c:3636
33
+ c_body_at: references/ruby/error.c:1553
34
+ c_effects: []
35
+ purity: leaf
36
+ rbs:
37
+ - "(?self) -> self"
38
+ - "(string | _ToS message) -> self"
39
+ rbs_at: references/rbs/core/exception.rbs:272
40
+ initialize:
41
+ source: c
42
+ cfunc: exc_initialize
43
+ arity: -1
44
+ defined_at: references/ruby/error.c:3637
45
+ c_body_at: references/ruby/error.c:1519
46
+ c_effects: []
47
+ purity: leaf
48
+ rbs:
49
+ - "(?string | _ToS message) -> void"
50
+ rbs_at: references/rbs/core/exception.rbs:292
51
+ "==":
52
+ source: c
53
+ cfunc: exc_equal
54
+ arity: 1
55
+ defined_at: references/ruby/error.c:3638
56
+ c_body_at: references/ruby/error.c:2183
57
+ c_effects:
58
+ - dispatch
59
+ purity: dispatch
60
+ rbs:
61
+ - "(untyped obj) -> bool"
62
+ rbs_at: references/rbs/core/exception.rbs:96
63
+ to_s:
64
+ source: c
65
+ cfunc: exc_to_s
66
+ arity: 0
67
+ defined_at: references/ruby/error.c:3639
68
+ c_body_at: references/ruby/error.c:1579
69
+ c_effects:
70
+ - dispatch
71
+ purity: dispatch
72
+ rbs:
73
+ - "() -> String"
74
+ rbs_at: references/rbs/core/exception.rbs:433
75
+ message:
76
+ source: c
77
+ cfunc: exc_message
78
+ arity: 0
79
+ defined_at: references/ruby/error.c:3640
80
+ c_body_at: references/ruby/error.c:1759
81
+ c_effects:
82
+ - dispatch
83
+ purity: dispatch
84
+ rbs:
85
+ - "() -> String"
86
+ rbs_at: references/rbs/core/exception.rbs:315
87
+ detailed_message:
88
+ source: c
89
+ cfunc: exc_detailed_message
90
+ arity: -1
91
+ defined_at: references/ruby/error.c:3641
92
+ c_body_at: references/ruby/error.c:1810
93
+ c_effects: []
94
+ purity: leaf
95
+ rbs:
96
+ - "(?highlight: bool?, **untyped ignored) -> String"
97
+ rbs_at: references/rbs/core/exception.rbs:248
98
+ full_message:
99
+ source: c
100
+ cfunc: exc_full_message
101
+ arity: -1
102
+ defined_at: references/ruby/error.c:3642
103
+ c_body_at: references/ruby/error.c:1726
104
+ c_effects:
105
+ - mutate
106
+ purity: mutates_self
107
+ rbs:
108
+ - "(?highlight: bool?, ?order: (:top | :bottom | string)?) -> String"
109
+ rbs_at: references/rbs/core/exception.rbs:484
110
+ inspect:
111
+ source: c
112
+ cfunc: exc_inspect
113
+ arity: 0
114
+ defined_at: references/ruby/error.c:3643
115
+ c_body_at: references/ruby/error.c:1837
116
+ c_effects:
117
+ - mutate
118
+ purity: mutates_self
119
+ rbs:
120
+ - "() -> String"
121
+ rbs_at: references/rbs/core/exception.rbs:305
122
+ backtrace:
123
+ source: c
124
+ cfunc: exc_backtrace
125
+ arity: 0
126
+ defined_at: references/ruby/error.c:3644
127
+ c_body_at: references/ruby/error.c:1898
128
+ c_effects: []
129
+ purity: leaf
130
+ rbs:
131
+ - "() -> Array[String]?"
132
+ rbs_at: references/rbs/core/exception.rbs:130
133
+ backtrace_locations:
134
+ source: c
135
+ cfunc: exc_backtrace_locations
136
+ arity: 0
137
+ defined_at: references/ruby/error.c:3645
138
+ c_body_at: references/ruby/error.c:1974
139
+ c_effects: []
140
+ purity: leaf
141
+ rbs:
142
+ - "() -> Array[Thread::Backtrace::Location]?"
143
+ rbs_at: references/rbs/core/exception.rbs:170
144
+ set_backtrace:
145
+ source: c
146
+ cfunc: exc_set_backtrace
147
+ arity: 1
148
+ defined_at: references/ruby/error.c:3646
149
+ c_body_at: references/ruby/error.c:2110
150
+ c_effects: []
151
+ purity: leaf
152
+ rbs:
153
+ - "(String | Array[String]) -> Array[String]"
154
+ - "(Array[Thread::Backtrace::Location]) -> Array[Thread::Backtrace::Location]"
155
+ - "(nil) -> nil"
156
+ rbs_at: references/rbs/core/exception.rbs:418
157
+ cause:
158
+ source: c
159
+ cfunc: exc_cause
160
+ arity: 0
161
+ defined_at: references/ruby/error.c:3647
162
+ c_body_at: references/ruby/error.c:2162
163
+ c_effects: []
164
+ purity: leaf
165
+ rbs:
166
+ - "() -> Exception?"
167
+ rbs_at: references/rbs/core/exception.rbs:201
168
+ singleton_methods:
169
+ exception:
170
+ source: c
171
+ cfunc: rb_class_new_instance
172
+ arity: -1
173
+ defined_at: references/ruby/error.c:3634
174
+ purity: unknown
175
+ c_body_at: not_found
176
+ rbs:
177
+ - "(?string | _ToS msg) -> instance"
178
+ rbs_at: references/rbs/core/exception.rbs:87
179
+ to_tty?:
180
+ source: c
181
+ cfunc: exc_s_to_tty_p
182
+ arity: 0
183
+ defined_at: references/ruby/error.c:3635
184
+ c_body_at: references/ruby/error.c:1621
185
+ c_effects: []
186
+ purity: leaf
187
+ rbs:
188
+ - "() -> bool"
189
+ rbs_at: references/rbs/core/exception.rbs:63
190
+ undefined: []
191
+ SystemExit:
192
+ parent: Exception
193
+ defined_at: references/ruby/error.c:3649
194
+ includes: []
195
+ constants: {}
196
+ aliases: {}
197
+ instance_methods:
198
+ initialize:
199
+ source: c
200
+ cfunc: exit_initialize
201
+ arity: -1
202
+ defined_at: references/ruby/error.c:3650
203
+ c_body_at: references/ruby/error.c:2226
204
+ c_effects: []
205
+ purity: leaf
206
+ status:
207
+ source: c
208
+ cfunc: exit_status
209
+ arity: 0
210
+ defined_at: references/ruby/error.c:3651
211
+ c_body_at: references/ruby/error.c:2276
212
+ c_effects: []
213
+ purity: leaf
214
+ success?:
215
+ source: c
216
+ cfunc: exit_success_p
217
+ arity: 0
218
+ defined_at: references/ruby/error.c:3652
219
+ c_body_at: references/ruby/error.c:2290
220
+ c_effects: []
221
+ purity: leaf
222
+ singleton_methods: {}
223
+ undefined: []
224
+ fatal:
225
+ parent: Exception
226
+ defined_at: references/ruby/error.c:3654
227
+ includes: []
228
+ constants: {}
229
+ aliases: {}
230
+ instance_methods: {}
231
+ singleton_methods: {}
232
+ undefined: []
233
+ SignalException:
234
+ parent: Exception
235
+ defined_at: references/ruby/error.c:3655
236
+ includes: []
237
+ constants: {}
238
+ aliases: {}
239
+ instance_methods: {}
240
+ singleton_methods: {}
241
+ undefined: []
242
+ Interrupt:
243
+ parent: SignalException
244
+ defined_at: references/ruby/error.c:3656
245
+ includes: []
246
+ constants: {}
247
+ aliases: {}
248
+ instance_methods: {}
249
+ singleton_methods: {}
250
+ undefined: []
251
+ StandardError:
252
+ parent: Exception
253
+ defined_at: references/ruby/error.c:3658
254
+ includes: []
255
+ constants: {}
256
+ aliases: {}
257
+ instance_methods: {}
258
+ singleton_methods: {}
259
+ undefined: []
260
+ TypeError:
261
+ parent: StandardError
262
+ defined_at: references/ruby/error.c:3659
263
+ includes: []
264
+ constants: {}
265
+ aliases: {}
266
+ instance_methods: {}
267
+ singleton_methods: {}
268
+ undefined: []
269
+ ArgumentError:
270
+ parent: StandardError
271
+ defined_at: references/ruby/error.c:3660
272
+ includes: []
273
+ constants: {}
274
+ aliases: {}
275
+ instance_methods: {}
276
+ singleton_methods: {}
277
+ undefined: []
278
+ IndexError:
279
+ parent: StandardError
280
+ defined_at: references/ruby/error.c:3661
281
+ includes: []
282
+ constants: {}
283
+ aliases: {}
284
+ instance_methods: {}
285
+ singleton_methods: {}
286
+ undefined: []
287
+ KeyError:
288
+ parent: IndexError
289
+ defined_at: references/ruby/error.c:3662
290
+ includes: []
291
+ constants: {}
292
+ aliases: {}
293
+ instance_methods:
294
+ initialize:
295
+ source: c
296
+ cfunc: key_err_initialize
297
+ arity: -1
298
+ defined_at: references/ruby/error.c:3663
299
+ c_body_at: references/ruby/error.c:2836
300
+ c_effects: []
301
+ purity: leaf
302
+ receiver:
303
+ source: c
304
+ cfunc: key_err_receiver
305
+ arity: 0
306
+ defined_at: references/ruby/error.c:3664
307
+ c_body_at: references/ruby/error.c:2790
308
+ c_effects:
309
+ - raises
310
+ purity: leaf
311
+ key:
312
+ source: c
313
+ cfunc: key_err_key
314
+ arity: 0
315
+ defined_at: references/ruby/error.c:3665
316
+ c_body_at: references/ruby/error.c:2807
317
+ c_effects:
318
+ - raises
319
+ purity: leaf
320
+ singleton_methods: {}
321
+ undefined: []
322
+ RangeError:
323
+ parent: StandardError
324
+ defined_at: references/ruby/error.c:3666
325
+ includes: []
326
+ constants: {}
327
+ aliases: {}
328
+ instance_methods: {}
329
+ singleton_methods: {}
330
+ undefined: []
331
+ ScriptError:
332
+ parent: Exception
333
+ defined_at: references/ruby/error.c:3668
334
+ includes: []
335
+ constants: {}
336
+ aliases: {}
337
+ instance_methods: {}
338
+ singleton_methods: {}
339
+ undefined: []
340
+ SyntaxError:
341
+ parent: ScriptError
342
+ defined_at: references/ruby/error.c:3669
343
+ includes: []
344
+ constants: {}
345
+ aliases: {}
346
+ instance_methods:
347
+ initialize:
348
+ source: c
349
+ cfunc: syntax_error_initialize
350
+ arity: -1
351
+ defined_at: references/ruby/error.c:3670
352
+ c_body_at: references/ruby/error.c:2934
353
+ c_effects: []
354
+ purity: leaf
355
+ singleton_methods: {}
356
+ undefined: []
357
+ LoadError:
358
+ parent: ScriptError
359
+ defined_at: references/ruby/error.c:3679
360
+ includes: []
361
+ constants: {}
362
+ aliases: {}
363
+ instance_methods: {}
364
+ singleton_methods: {}
365
+ undefined: []
366
+ NotImplementedError:
367
+ parent: ScriptError
368
+ defined_at: references/ruby/error.c:3683
369
+ includes: []
370
+ constants: {}
371
+ aliases: {}
372
+ instance_methods: {}
373
+ singleton_methods: {}
374
+ undefined: []
375
+ NameError:
376
+ parent: StandardError
377
+ defined_at: references/ruby/error.c:3685
378
+ includes: []
379
+ constants: {}
380
+ aliases: {}
381
+ instance_methods:
382
+ initialize:
383
+ source: c
384
+ cfunc: name_err_initialize
385
+ arity: -1
386
+ defined_at: references/ruby/error.c:3686
387
+ c_body_at: references/ruby/error.c:2402
388
+ c_effects: []
389
+ purity: leaf
390
+ name:
391
+ source: c
392
+ cfunc: name_err_name
393
+ arity: 0
394
+ defined_at: references/ruby/error.c:3687
395
+ c_body_at: references/ruby/error.c:2440
396
+ c_effects: []
397
+ purity: leaf
398
+ receiver:
399
+ source: c
400
+ cfunc: name_err_receiver
401
+ arity: 0
402
+ defined_at: references/ruby/error.c:3688
403
+ c_body_at: references/ruby/error.c:2732
404
+ c_effects:
405
+ - raises
406
+ purity: leaf
407
+ local_variables:
408
+ source: c
409
+ cfunc: name_err_local_variables
410
+ arity: 0
411
+ defined_at: references/ruby/error.c:3689
412
+ c_body_at: references/ruby/error.c:2456
413
+ c_effects: []
414
+ purity: leaf
415
+ singleton_methods: {}
416
+ undefined: []
417
+ NoMethodError:
418
+ parent: NameError
419
+ defined_at: references/ruby/error.c:3697
420
+ includes: []
421
+ constants: {}
422
+ aliases: {}
423
+ instance_methods:
424
+ initialize:
425
+ source: c
426
+ cfunc: nometh_err_initialize
427
+ arity: -1
428
+ defined_at: references/ruby/error.c:3698
429
+ c_body_at: references/ruby/error.c:2494
430
+ c_effects: []
431
+ purity: leaf
432
+ args:
433
+ source: c
434
+ cfunc: nometh_err_args
435
+ arity: 0
436
+ defined_at: references/ruby/error.c:3699
437
+ c_body_at: references/ruby/error.c:2756
438
+ c_effects: []
439
+ purity: leaf
440
+ private_call?:
441
+ source: c
442
+ cfunc: nometh_err_private_call_p
443
+ arity: 0
444
+ defined_at: references/ruby/error.c:3700
445
+ c_body_at: references/ruby/error.c:2769
446
+ c_effects: []
447
+ purity: leaf
448
+ singleton_methods: {}
449
+ undefined: []
450
+ RuntimeError:
451
+ parent: StandardError
452
+ defined_at: references/ruby/error.c:3702
453
+ includes: []
454
+ constants: {}
455
+ aliases: {}
456
+ instance_methods: {}
457
+ singleton_methods: {}
458
+ undefined: []
459
+ FrozenError:
460
+ parent: RuntimeError
461
+ defined_at: references/ruby/error.c:3703
462
+ includes: []
463
+ constants: {}
464
+ aliases: {}
465
+ instance_methods:
466
+ initialize:
467
+ source: c
468
+ cfunc: frozen_err_initialize
469
+ arity: -1
470
+ defined_at: references/ruby/error.c:3704
471
+ c_body_at: references/ruby/error.c:2321
472
+ c_effects: []
473
+ purity: leaf
474
+ receiver:
475
+ source: c
476
+ cfunc: frozen_err_receiver
477
+ arity: 0
478
+ defined_at: references/ruby/error.c:3705
479
+ c_body_at: references/ruby/error.c:2732
480
+ c_effects:
481
+ - raises
482
+ purity: leaf
483
+ singleton_methods: {}
484
+ undefined: []
485
+ SecurityError:
486
+ parent: Exception
487
+ defined_at: references/ruby/error.c:3706
488
+ includes: []
489
+ constants: {}
490
+ aliases: {}
491
+ instance_methods: {}
492
+ singleton_methods: {}
493
+ undefined: []
494
+ NoMemoryError:
495
+ parent: Exception
496
+ defined_at: references/ruby/error.c:3707
497
+ includes: []
498
+ constants: {}
499
+ aliases: {}
500
+ instance_methods: {}
501
+ singleton_methods: {}
502
+ undefined: []
503
+ EncodingError:
504
+ parent: StandardError
505
+ defined_at: references/ruby/error.c:3708
506
+ includes: []
507
+ constants: {}
508
+ aliases: {}
509
+ instance_methods: {}
510
+ singleton_methods: {}
511
+ undefined: []
512
+ NoMatchingPatternError:
513
+ parent: StandardError
514
+ defined_at: references/ruby/error.c:3710
515
+ includes: []
516
+ constants: {}
517
+ aliases: {}
518
+ instance_methods: {}
519
+ singleton_methods: {}
520
+ undefined: []
521
+ NoMatchingPatternKeyError:
522
+ parent: NoMatchingPatternError
523
+ defined_at: references/ruby/error.c:3711
524
+ includes: []
525
+ constants: {}
526
+ aliases: {}
527
+ instance_methods:
528
+ initialize:
529
+ source: c
530
+ cfunc: no_matching_pattern_key_err_initialize
531
+ arity: -1
532
+ defined_at: references/ruby/error.c:3712
533
+ c_body_at: references/ruby/error.c:2902
534
+ c_effects: []
535
+ purity: leaf
536
+ matchee:
537
+ source: c
538
+ cfunc: no_matching_pattern_key_err_matchee
539
+ arity: 0
540
+ defined_at: references/ruby/error.c:3713
541
+ c_body_at: references/ruby/error.c:2867
542
+ c_effects:
543
+ - raises
544
+ purity: leaf
545
+ key:
546
+ source: c
547
+ cfunc: no_matching_pattern_key_err_key
548
+ arity: 0
549
+ defined_at: references/ruby/error.c:3714
550
+ c_body_at: references/ruby/error.c:2884
551
+ c_effects:
552
+ - raises
553
+ purity: leaf
554
+ singleton_methods: {}
555
+ undefined: []
556
+ SystemCallError:
557
+ parent: StandardError
558
+ defined_at: references/ruby/error.c:3717
559
+ includes: []
560
+ constants: {}
561
+ aliases: {}
562
+ instance_methods:
563
+ initialize:
564
+ source: c
565
+ cfunc: syserr_initialize
566
+ arity: -1
567
+ defined_at: references/ruby/error.c:3718
568
+ c_body_at: references/ruby/error.c:3124
569
+ c_effects:
570
+ - raises
571
+ purity: leaf
572
+ errno:
573
+ source: c
574
+ cfunc: syserr_errno
575
+ arity: 0
576
+ defined_at: references/ruby/error.c:3719
577
+ c_body_at: references/ruby/error.c:3174
578
+ c_effects: []
579
+ purity: leaf
580
+ singleton_methods:
581
+ "===":
582
+ source: c
583
+ cfunc: syserr_eqq
584
+ arity: 1
585
+ defined_at: references/ruby/error.c:3720
586
+ c_body_at: references/ruby/error.c:3188
587
+ c_effects:
588
+ - dispatch
589
+ purity: dispatch
590
+ undefined: []
591
+ Errno:
592
+ parent: Module
593
+ defined_at: references/ruby/error.c:3722
594
+ includes: []
595
+ constants: {}
596
+ aliases: {}
597
+ instance_methods: {}
598
+ singleton_methods: {}
599
+ undefined: []
600
+ Warning:
601
+ parent: Module
602
+ defined_at: references/ruby/error.c:3724
603
+ includes: []
604
+ constants: {}
605
+ aliases: {}
606
+ instance_methods:
607
+ warn:
608
+ source: c
609
+ cfunc: rb_warning_s_warn
610
+ arity: -1
611
+ defined_at: references/ruby/error.c:3728
612
+ c_body_at: references/ruby/error.c:287
613
+ c_effects: []
614
+ purity: leaf
615
+ singleton_methods:
616
+ "[]":
617
+ source: c
618
+ cfunc: rb_warning_s_aref
619
+ arity: 1
620
+ defined_at: references/ruby/error.c:3725
621
+ c_body_at: references/ruby/error.c:228
622
+ c_effects: []
623
+ purity: leaf
624
+ "[]=":
625
+ source: c
626
+ cfunc: rb_warning_s_aset
627
+ arity: 2
628
+ defined_at: references/ruby/error.c:3726
629
+ c_body_at: references/ruby/error.c:243
630
+ c_effects: []
631
+ purity: leaf
632
+ categories:
633
+ source: c
634
+ cfunc: rb_warning_s_categories
635
+ arity: 0
636
+ defined_at: references/ruby/error.c:3727
637
+ c_body_at: references/ruby/error.c:263
638
+ c_effects:
639
+ - mutate
640
+ purity: mutates_self
641
+ undefined: []
@@ -81,8 +81,9 @@ classes:
81
81
  cfunc: num_clone
82
82
  arity: -1
83
83
  defined_at: references/ruby/numeric.c:6461
84
- purity: unknown
85
- c_body_at: not_found
84
+ c_body_at: references/ruby/object.c:472
85
+ c_effects: []
86
+ purity: leaf
86
87
  rbs:
87
88
  - "(?freeze: true?) -> self"
88
89
  rbs_at: references/rbs/core/numeric.rbs:828