rigortype 0.0.2 → 0.0.3

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 (36) hide show
  1. checksums.yaml +4 -4
  2. data/data/builtins/ruby_core/array.yml +1470 -0
  3. data/data/builtins/ruby_core/file.yml +501 -0
  4. data/data/builtins/ruby_core/io.yml +1594 -0
  5. data/data/builtins/ruby_core/numeric.yml +1809 -0
  6. data/data/builtins/ruby_core/string.yml +1850 -0
  7. data/lib/rigor/analysis/check_rules.rb +86 -1
  8. data/lib/rigor/analysis/runner.rb +4 -0
  9. data/lib/rigor/builtins/imported_refinements.rb +69 -0
  10. data/lib/rigor/configuration.rb +6 -1
  11. data/lib/rigor/inference/acceptance.rb +149 -0
  12. data/lib/rigor/inference/builtins/array_catalog.rb +46 -0
  13. data/lib/rigor/inference/builtins/method_catalog.rb +90 -0
  14. data/lib/rigor/inference/builtins/numeric_catalog.rb +93 -0
  15. data/lib/rigor/inference/builtins/string_catalog.rb +39 -0
  16. data/lib/rigor/inference/expression_typer.rb +48 -1
  17. data/lib/rigor/inference/method_dispatcher/constant_folding.rb +650 -16
  18. data/lib/rigor/inference/method_dispatcher/file_folding.rb +144 -0
  19. data/lib/rigor/inference/method_dispatcher/iterator_dispatch.rb +113 -0
  20. data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +4 -0
  21. data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +107 -0
  22. data/lib/rigor/inference/method_dispatcher.rb +28 -21
  23. data/lib/rigor/inference/narrowing.rb +374 -4
  24. data/lib/rigor/inference/scope_indexer.rb +10 -2
  25. data/lib/rigor/inference/statement_evaluator.rb +211 -2
  26. data/lib/rigor/rbs_extended.rb +65 -1
  27. data/lib/rigor/scope.rb +14 -0
  28. data/lib/rigor/type/combinator.rb +69 -1
  29. data/lib/rigor/type/difference.rb +155 -0
  30. data/lib/rigor/type/integer_range.rb +137 -0
  31. data/lib/rigor/type.rb +2 -0
  32. data/lib/rigor/version.rb +1 -1
  33. data/sig/rigor/rbs_extended.rbs +3 -0
  34. data/sig/rigor/scope.rbs +1 -0
  35. data/sig/rigor/type.rbs +51 -1
  36. metadata +15 -1
@@ -0,0 +1,1809 @@
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/numeric.c
6
+ ruby_prelude: references/ruby/numeric.rb
7
+ rbs:
8
+ - references/rbs/core/numeric.rbs
9
+ - references/rbs/core/integer.rbs
10
+ - references/rbs/core/float.rbs
11
+ purity_levels:
12
+ leaf: Prelude :leaf marker (VM-enforced) or C body uses no dispatch/yield/mutation.
13
+ trivial: Prelude method body is a literal return (self/true/false/nil/Integer).
14
+ leaf_when_numeric: C body falls through to rb_num_coerce_* only when an operand
15
+ is non-numeric; safe to fold when every argument is a concrete numeric.
16
+ inline_block: Prelude method carries :inline_block or :use_block; block-dependent.
17
+ block_dependent: C body yields or checks rb_block_given_p.
18
+ mutates_self: C body checks rb_check_frozen — typically a prelude to mutation.
19
+ dispatch: C body calls user-redefinable methods (rb_funcall*, rb_equal, rb_Float,
20
+ num_funcall*, etc).
21
+ unknown: C body not located in indexed C files.
22
+ classes:
23
+ ZeroDivisionError:
24
+ parent: StandardError
25
+ defined_at: references/ruby/numeric.c:6454
26
+ includes: []
27
+ constants: {}
28
+ aliases: {}
29
+ instance_methods: {}
30
+ singleton_methods: {}
31
+ undefined: []
32
+ FloatDomainError:
33
+ parent: RangeError
34
+ defined_at: references/ruby/numeric.c:6455
35
+ includes: []
36
+ constants: {}
37
+ aliases: {}
38
+ instance_methods: {}
39
+ singleton_methods: {}
40
+ undefined: []
41
+ Numeric:
42
+ parent: Object
43
+ defined_at: references/ruby/numeric.c:6456
44
+ includes:
45
+ - module: Comparable
46
+ defined_at: references/ruby/numeric.c:6459
47
+ constants: {}
48
+ aliases:
49
+ imag:
50
+ old: imaginary
51
+ source: prelude
52
+ defined_at: references/ruby/numeric.rb:71
53
+ conj:
54
+ old: conjugate
55
+ source: prelude
56
+ defined_at: references/ruby/numeric.rb:82
57
+ instance_methods:
58
+ singleton_method_added:
59
+ source: c
60
+ cfunc: num_sadded
61
+ arity: 1
62
+ defined_at: references/ruby/numeric.c:6458
63
+ c_body_at: references/ruby/numeric.c:521
64
+ c_effects:
65
+ - raises
66
+ purity: leaf
67
+ coerce:
68
+ source: c
69
+ cfunc: num_coerce
70
+ arity: 1
71
+ defined_at: references/ruby/numeric.c:6460
72
+ c_body_at: references/ruby/numeric.c:431
73
+ c_effects:
74
+ - dispatch
75
+ purity: dispatch
76
+ rbs:
77
+ - "(Numeric) -> [ Numeric, Numeric ]"
78
+ rbs_at: references/rbs/core/numeric.rbs:319
79
+ clone:
80
+ source: c
81
+ cfunc: num_clone
82
+ arity: -1
83
+ defined_at: references/ruby/numeric.c:6461
84
+ purity: unknown
85
+ c_body_at: not_found
86
+ rbs:
87
+ - "(?freeze: true?) -> self"
88
+ rbs_at: references/rbs/core/numeric.rbs:828
89
+ i:
90
+ source: c
91
+ cfunc: num_imaginary
92
+ arity: 0
93
+ defined_at: references/ruby/numeric.c:6463
94
+ c_body_at: references/ruby/numeric.c:570
95
+ c_effects: []
96
+ purity: leaf
97
+ rbs:
98
+ - "() -> Complex"
99
+ rbs_at: references/rbs/core/numeric.rbs:455
100
+ "-@":
101
+ source: c
102
+ cfunc: num_uminus
103
+ arity: 0
104
+ defined_at: references/ruby/numeric.c:6464
105
+ c_body_at: references/ruby/numeric.c:583
106
+ c_effects:
107
+ - dispatch
108
+ purity: dispatch
109
+ rbs:
110
+ - "() -> self"
111
+ rbs_at: references/rbs/core/numeric.rbs:219
112
+ "<=>":
113
+ source: c
114
+ cfunc: num_cmp
115
+ arity: 1
116
+ defined_at: references/ruby/numeric.c:6465
117
+ c_body_at: references/ruby/numeric.c:1485
118
+ c_effects: []
119
+ purity: leaf
120
+ rbs:
121
+ - "(Numeric other) -> Integer"
122
+ rbs_at: references/rbs/core/numeric.rbs:237
123
+ eql?:
124
+ source: c
125
+ cfunc: num_eql
126
+ arity: 1
127
+ defined_at: references/ruby/numeric.c:6466
128
+ c_body_at: references/ruby/numeric.c:1456
129
+ c_effects:
130
+ - dispatch
131
+ purity: dispatch
132
+ rbs:
133
+ - "(untyped) -> bool"
134
+ rbs_at: references/rbs/core/numeric.rbs:405
135
+ fdiv:
136
+ source: c
137
+ cfunc: num_fdiv
138
+ arity: 1
139
+ defined_at: references/ruby/numeric.c:6467
140
+ c_body_at: references/ruby/numeric.c:607
141
+ c_effects:
142
+ - dispatch
143
+ purity: dispatch
144
+ rbs:
145
+ - "(Numeric) -> Numeric"
146
+ rbs_at: references/rbs/core/numeric.rbs:418
147
+ div:
148
+ source: c
149
+ cfunc: num_div
150
+ arity: 1
151
+ defined_at: references/ruby/numeric.c:6468
152
+ c_body_at: references/ruby/numeric.c:626
153
+ c_effects:
154
+ - dispatch
155
+ - raises
156
+ purity: dispatch
157
+ rbs:
158
+ - "(Numeric) -> Integer"
159
+ rbs_at: references/rbs/core/numeric.rbs:355
160
+ divmod:
161
+ source: c
162
+ cfunc: num_divmod
163
+ arity: 1
164
+ defined_at: references/ruby/numeric.c:6469
165
+ c_body_at: references/ruby/numeric.c:757
166
+ c_effects: []
167
+ purity: leaf
168
+ rbs:
169
+ - "(Numeric) -> [ Numeric, Numeric ]"
170
+ rbs_at: references/rbs/core/numeric.rbs:384
171
+ "%":
172
+ source: c
173
+ cfunc: num_modulo
174
+ arity: 1
175
+ defined_at: references/ruby/numeric.c:6470
176
+ c_body_at: references/ruby/numeric.c:667
177
+ c_effects:
178
+ - dispatch
179
+ purity: dispatch
180
+ rbs:
181
+ - "(Numeric) -> Numeric"
182
+ rbs_at: references/rbs/core/numeric.rbs:193
183
+ modulo:
184
+ source: c
185
+ cfunc: num_modulo
186
+ arity: 1
187
+ defined_at: references/ruby/numeric.c:6471
188
+ c_body_at: references/ruby/numeric.c:667
189
+ c_effects:
190
+ - dispatch
191
+ purity: dispatch
192
+ rbs:
193
+ - "(Numeric) -> Numeric"
194
+ rbs_at: references/rbs/core/numeric.rbs:530
195
+ remainder:
196
+ source: c
197
+ cfunc: num_remainder
198
+ arity: 1
199
+ defined_at: references/ruby/numeric.c:6472
200
+ c_body_at: references/ruby/numeric.c:706
201
+ c_effects:
202
+ - dispatch
203
+ purity: dispatch
204
+ rbs:
205
+ - "(Numeric) -> Numeric"
206
+ rbs_at: references/rbs/core/numeric.rbs:656
207
+ abs:
208
+ source: c
209
+ cfunc: num_abs
210
+ arity: 0
211
+ defined_at: references/ruby/numeric.c:6473
212
+ c_body_at: references/ruby/numeric.c:775
213
+ c_effects:
214
+ - dispatch
215
+ purity: dispatch
216
+ rbs:
217
+ - "() -> Numeric"
218
+ rbs_at: references/rbs/core/numeric.rbs:249
219
+ magnitude:
220
+ source: c
221
+ cfunc: num_abs
222
+ arity: 0
223
+ defined_at: references/ruby/numeric.c:6474
224
+ c_body_at: references/ruby/numeric.c:775
225
+ c_effects:
226
+ - dispatch
227
+ purity: dispatch
228
+ to_int:
229
+ source: c
230
+ cfunc: num_to_int
231
+ arity: 0
232
+ defined_at: references/ruby/numeric.c:6475
233
+ c_body_at: references/ruby/numeric.c:866
234
+ c_effects:
235
+ - dispatch
236
+ purity: dispatch
237
+ rbs:
238
+ - "() -> Integer"
239
+ rbs_at: references/rbs/core/numeric.rbs:792
240
+ zero?:
241
+ source: c
242
+ cfunc: num_zero_p
243
+ arity: 0
244
+ defined_at: references/ruby/numeric.c:6477
245
+ c_body_at: references/ruby/numeric.c:795
246
+ c_effects:
247
+ - dispatch
248
+ purity: dispatch
249
+ rbs:
250
+ - "() -> bool"
251
+ rbs_at: references/rbs/core/numeric.rbs:816
252
+ nonzero?:
253
+ source: c
254
+ cfunc: num_nonzero_p
255
+ arity: 0
256
+ defined_at: references/ruby/numeric.c:6478
257
+ c_body_at: references/ruby/numeric.c:837
258
+ c_effects:
259
+ - dispatch
260
+ purity: dispatch
261
+ rbs:
262
+ - "() -> self?"
263
+ rbs_at: references/rbs/core/numeric.rbs:558
264
+ floor:
265
+ source: c
266
+ cfunc: num_floor
267
+ arity: -1
268
+ defined_at: references/ruby/numeric.c:6480
269
+ c_body_at: references/ruby/numeric.c:2624
270
+ c_effects:
271
+ - dispatch
272
+ purity: dispatch
273
+ rbs:
274
+ - "() -> Integer"
275
+ - "(Integer digits) -> Numeric"
276
+ rbs_at: references/rbs/core/numeric.rbs:440
277
+ ceil:
278
+ source: c
279
+ cfunc: num_ceil
280
+ arity: -1
281
+ defined_at: references/ruby/numeric.c:6481
282
+ c_body_at: references/ruby/numeric.c:2644
283
+ c_effects:
284
+ - dispatch
285
+ purity: dispatch
286
+ rbs:
287
+ - "() -> Integer"
288
+ - "(Integer digits) -> (Integer | Numeric)"
289
+ rbs_at: references/rbs/core/numeric.rbs:284
290
+ round:
291
+ source: c
292
+ cfunc: num_round
293
+ arity: -1
294
+ defined_at: references/ruby/numeric.c:6482
295
+ c_body_at: references/ruby/numeric.c:2661
296
+ c_effects:
297
+ - dispatch
298
+ purity: dispatch
299
+ rbs:
300
+ - "() -> Integer"
301
+ - "(Integer digits) -> Numeric"
302
+ rbs_at: references/rbs/core/numeric.rbs:668
303
+ truncate:
304
+ source: c
305
+ cfunc: num_truncate
306
+ arity: -1
307
+ defined_at: references/ruby/numeric.c:6483
308
+ c_body_at: references/ruby/numeric.c:2678
309
+ c_effects:
310
+ - dispatch
311
+ purity: dispatch
312
+ rbs:
313
+ - "() -> Integer"
314
+ - "(Integer ndigits) -> (Integer | Numeric)"
315
+ rbs_at: references/rbs/core/numeric.rbs:804
316
+ step:
317
+ source: c
318
+ cfunc: num_step
319
+ arity: -1
320
+ defined_at: references/ruby/numeric.c:6484
321
+ c_body_at: references/ruby/numeric.c:2998
322
+ c_effects:
323
+ - block
324
+ - dispatch
325
+ - raises
326
+ purity: block_dependent
327
+ rbs:
328
+ - "(?Numeric limit, ?Numeric step) { (Numeric) -> void } -> self"
329
+ - "(?Numeric limit, ?Numeric step) -> Enumerator::ArithmeticSequence"
330
+ - "(?by: Numeric, ?to: Numeric) { (Numeric) -> void } -> self"
331
+ - "(?by: Numeric, ?to: Numeric) -> Enumerator::ArithmeticSequence"
332
+ rbs_at: references/rbs/core/numeric.rbs:762
333
+ positive?:
334
+ source: c
335
+ cfunc: num_positive_p
336
+ arity: 0
337
+ defined_at: references/ruby/numeric.c:6485
338
+ c_body_at: references/ruby/numeric.c:880
339
+ c_effects: []
340
+ purity: leaf
341
+ rbs:
342
+ - "() -> bool"
343
+ rbs_at: references/rbs/core/numeric.rbs:587
344
+ negative?:
345
+ source: c
346
+ cfunc: num_negative_p
347
+ arity: 0
348
+ defined_at: references/ruby/numeric.c:6486
349
+ c_body_at: references/ruby/numeric.c:904
350
+ c_effects: []
351
+ purity: leaf
352
+ rbs:
353
+ - "() -> bool"
354
+ rbs_at: references/rbs/core/numeric.rbs:538
355
+ dup:
356
+ source: prelude
357
+ prelude_attrs: []
358
+ body_kind: trivial_self
359
+ cexpr_target:
360
+ prelude_at: references/ruby/numeric.rb:9
361
+ purity: trivial
362
+ arity: 0
363
+ cfunc:
364
+ defined_at: references/ruby/numeric.rb:9
365
+ real?:
366
+ source: prelude
367
+ prelude_attrs: []
368
+ body_kind: trivial_literal
369
+ cexpr_target:
370
+ prelude_at: references/ruby/numeric.rb:18
371
+ purity: trivial
372
+ arity: 0
373
+ cfunc:
374
+ defined_at: references/ruby/numeric.rb:18
375
+ rbs:
376
+ - "() -> true"
377
+ rbs_at: references/rbs/core/numeric.rbs:612
378
+ real:
379
+ source: prelude
380
+ prelude_attrs: []
381
+ body_kind: trivial_self
382
+ cexpr_target:
383
+ prelude_at: references/ruby/numeric.rb:27
384
+ purity: trivial
385
+ arity: 0
386
+ cfunc:
387
+ defined_at: references/ruby/numeric.rb:27
388
+ rbs:
389
+ - "() -> self"
390
+ rbs_at: references/rbs/core/numeric.rbs:604
391
+ integer?:
392
+ source: prelude
393
+ prelude_attrs: []
394
+ body_kind: trivial_literal
395
+ cexpr_target:
396
+ prelude_at: references/ruby/numeric.rb:39
397
+ purity: trivial
398
+ arity: 0
399
+ cfunc:
400
+ defined_at: references/ruby/numeric.rb:39
401
+ rbs:
402
+ - "() -> bool"
403
+ rbs_at: references/rbs/core/numeric.rbs:490
404
+ finite?:
405
+ source: prelude
406
+ prelude_attrs: []
407
+ body_kind: trivial_literal
408
+ cexpr_target:
409
+ prelude_at: references/ruby/numeric.rb:48
410
+ purity: trivial
411
+ arity: 0
412
+ cfunc:
413
+ defined_at: references/ruby/numeric.rb:48
414
+ rbs:
415
+ - "() -> bool"
416
+ rbs_at: references/rbs/core/numeric.rbs:426
417
+ infinite?:
418
+ source: prelude
419
+ prelude_attrs: []
420
+ body_kind: trivial_literal
421
+ cexpr_target:
422
+ prelude_at: references/ruby/numeric.rb:58
423
+ purity: trivial
424
+ arity: 0
425
+ cfunc:
426
+ defined_at: references/ruby/numeric.rb:58
427
+ rbs:
428
+ - "() -> Integer?"
429
+ rbs_at: references/rbs/core/numeric.rbs:479
430
+ imaginary:
431
+ source: prelude
432
+ prelude_attrs: []
433
+ body_kind: trivial_literal
434
+ cexpr_target:
435
+ prelude_at: references/ruby/numeric.rb:67
436
+ purity: trivial
437
+ arity: 0
438
+ cfunc:
439
+ defined_at: references/ruby/numeric.rb:67
440
+ rbs:
441
+ - "() -> 0"
442
+ rbs_at: references/rbs/core/numeric.rbs:463
443
+ conjugate:
444
+ source: prelude
445
+ prelude_attrs: []
446
+ body_kind: trivial_self
447
+ cexpr_target:
448
+ prelude_at: references/ruby/numeric.rb:78
449
+ purity: trivial
450
+ arity: 0
451
+ cfunc:
452
+ defined_at: references/ruby/numeric.rb:78
453
+ rbs:
454
+ - "() -> self"
455
+ rbs_at: references/rbs/core/numeric.rbs:327
456
+ "+@":
457
+ source: prelude
458
+ prelude_attrs: []
459
+ body_kind: trivial_self
460
+ cexpr_target:
461
+ prelude_at: references/ruby/numeric.rb:89
462
+ purity: trivial
463
+ arity: 0
464
+ cfunc:
465
+ defined_at: references/ruby/numeric.rb:89
466
+ rbs:
467
+ - "() -> self"
468
+ rbs_at: references/rbs/core/numeric.rbs:206
469
+ singleton_methods: {}
470
+ undefined: []
471
+ Integer:
472
+ parent: Numeric
473
+ defined_at: references/ruby/numeric.c:6488
474
+ includes: []
475
+ constants: {}
476
+ aliases:
477
+ inspect:
478
+ old: to_s
479
+ source: c
480
+ defined_at: references/ruby/numeric.c:6495
481
+ magnitude:
482
+ old: abs
483
+ source: prelude
484
+ defined_at: references/ruby/numeric.rb:206
485
+ instance_methods:
486
+ to_s:
487
+ source: c
488
+ cfunc: rb_int_to_s
489
+ arity: -1
490
+ defined_at: references/ruby/numeric.c:6494
491
+ c_body_at: references/ruby/numeric.c:4110
492
+ c_effects: []
493
+ purity: leaf
494
+ rbs:
495
+ - "() -> String"
496
+ - "(2) -> String"
497
+ - "(3) -> String"
498
+ - "(4) -> String"
499
+ - "(5) -> String"
500
+ - "(6) -> String"
501
+ - "(7) -> String"
502
+ - "(8) -> String"
503
+ - "(9) -> String"
504
+ - "(10) -> String"
505
+ - "(11) -> String"
506
+ - "(12) -> String"
507
+ - "(13) -> String"
508
+ - "(14) -> String"
509
+ - "(15) -> String"
510
+ - "(16) -> String"
511
+ - "(17) -> String"
512
+ - "(18) -> String"
513
+ - "(19) -> String"
514
+ - "(20) -> String"
515
+ - "(21) -> String"
516
+ - "(22) -> String"
517
+ - "(23) -> String"
518
+ - "(24) -> String"
519
+ - "(25) -> String"
520
+ - "(26) -> String"
521
+ - "(27) -> String"
522
+ - "(28) -> String"
523
+ - "(29) -> String"
524
+ - "(30) -> String"
525
+ - "(31) -> String"
526
+ - "(32) -> String"
527
+ - "(33) -> String"
528
+ - "(34) -> String"
529
+ - "(35) -> String"
530
+ - "(36) -> String"
531
+ - "(int base) -> String"
532
+ rbs_at: references/rbs/core/integer.rbs:1292
533
+ allbits?:
534
+ source: c
535
+ cfunc: int_allbits_p
536
+ arity: 1
537
+ defined_at: references/ruby/numeric.c:6496
538
+ c_body_at: references/ruby/numeric.c:3810
539
+ c_effects:
540
+ - dispatch
541
+ purity: dispatch
542
+ rbs:
543
+ - "(int mask) -> bool"
544
+ rbs_at: references/rbs/core/integer.rbs:580
545
+ anybits?:
546
+ source: c
547
+ cfunc: int_anybits_p
548
+ arity: 1
549
+ defined_at: references/ruby/numeric.c:6497
550
+ c_body_at: references/ruby/numeric.c:3840
551
+ c_effects:
552
+ - dispatch
553
+ purity: dispatch
554
+ rbs:
555
+ - "(int mask) -> bool"
556
+ rbs_at: references/rbs/core/integer.rbs:603
557
+ nobits?:
558
+ source: c
559
+ cfunc: int_nobits_p
560
+ arity: 1
561
+ defined_at: references/ruby/numeric.c:6498
562
+ c_body_at: references/ruby/numeric.c:3870
563
+ c_effects:
564
+ - dispatch
565
+ purity: dispatch
566
+ rbs:
567
+ - "(int mask) -> bool"
568
+ rbs_at: references/rbs/core/integer.rbs:1035
569
+ upto:
570
+ source: c
571
+ cfunc: int_upto
572
+ arity: 1
573
+ defined_at: references/ruby/numeric.c:6499
574
+ c_body_at: references/ruby/numeric.c:5818
575
+ c_effects:
576
+ - block
577
+ - dispatch
578
+ purity: block_dependent
579
+ rbs:
580
+ - "(Numeric limit) { (Integer) -> void } -> Integer"
581
+ - "(Numeric limit) -> ::Enumerator[Integer, self]"
582
+ rbs_at: references/rbs/core/integer.rbs:1372
583
+ downto:
584
+ source: c
585
+ cfunc: int_downto
586
+ arity: 1
587
+ defined_at: references/ruby/numeric.c:6500
588
+ c_body_at: references/ruby/numeric.c:5868
589
+ c_effects:
590
+ - block
591
+ - dispatch
592
+ - raises
593
+ purity: block_dependent
594
+ rbs:
595
+ - "(Numeric limit) { (Integer) -> void } -> Integer"
596
+ - "(Numeric limit) -> ::Enumerator[Integer, self]"
597
+ rbs_at: references/rbs/core/integer.rbs:834
598
+ succ:
599
+ source: c
600
+ cfunc: int_succ
601
+ arity: 0
602
+ defined_at: references/ruby/numeric.c:6501
603
+ c_body_at: references/ruby/numeric.c:3889
604
+ c_effects:
605
+ - dispatch
606
+ purity: dispatch
607
+ rbs:
608
+ - "() -> Integer"
609
+ rbs_at: references/rbs/core/integer.rbs:1213
610
+ next:
611
+ source: c
612
+ cfunc: int_succ
613
+ arity: 0
614
+ defined_at: references/ruby/numeric.c:6502
615
+ c_body_at: references/ruby/numeric.c:3889
616
+ c_effects:
617
+ - dispatch
618
+ purity: dispatch
619
+ rbs:
620
+ - "() -> Integer"
621
+ rbs_at: references/rbs/core/integer.rbs:1012
622
+ pred:
623
+ source: c
624
+ cfunc: int_pred
625
+ arity: 0
626
+ defined_at: references/ruby/numeric.c:6503
627
+ c_body_at: references/ruby/numeric.c:3917
628
+ c_effects:
629
+ - dispatch
630
+ purity: dispatch
631
+ rbs:
632
+ - "() -> Integer"
633
+ rbs_at: references/rbs/core/integer.rbs:1092
634
+ chr:
635
+ source: c
636
+ cfunc: int_chr
637
+ arity: -1
638
+ defined_at: references/ruby/numeric.c:6504
639
+ c_body_at: references/ruby/numeric.c:3973
640
+ c_effects:
641
+ - raises
642
+ purity: leaf
643
+ rbs:
644
+ - "(?encoding) -> String"
645
+ rbs_at: references/rbs/core/integer.rbs:729
646
+ to_f:
647
+ source: c
648
+ cfunc: int_to_f
649
+ arity: 0
650
+ defined_at: references/ruby/numeric.c:6505
651
+ c_body_at: references/ruby/numeric.c:5586
652
+ c_effects:
653
+ - raises
654
+ purity: leaf
655
+ rbs:
656
+ - "() -> Float"
657
+ rbs_at: references/rbs/core/integer.rbs:1246
658
+ floor:
659
+ source: c
660
+ cfunc: int_floor
661
+ arity: -1
662
+ defined_at: references/ruby/numeric.c:6506
663
+ c_body_at: references/ruby/numeric.c:6019
664
+ c_effects: []
665
+ purity: leaf
666
+ rbs:
667
+ - "(?int digits) -> Integer"
668
+ rbs_at: references/rbs/core/integer.rbs:901
669
+ ceil:
670
+ source: c
671
+ cfunc: int_ceil
672
+ arity: -1
673
+ defined_at: references/ruby/numeric.c:6507
674
+ c_body_at: references/ruby/numeric.c:6087
675
+ c_effects: []
676
+ purity: leaf
677
+ rbs:
678
+ - "() -> Integer"
679
+ - "(int digits) -> (Integer | Float)"
680
+ rbs_at: references/rbs/core/integer.rbs:690
681
+ truncate:
682
+ source: c
683
+ cfunc: int_truncate
684
+ arity: -1
685
+ defined_at: references/ruby/numeric.c:6508
686
+ c_body_at: references/ruby/numeric.c:6123
687
+ c_effects: []
688
+ purity: leaf
689
+ rbs:
690
+ - "() -> Integer"
691
+ - "(int ndigits) -> Integer"
692
+ rbs_at: references/rbs/core/integer.rbs:1351
693
+ round:
694
+ source: c
695
+ cfunc: int_round
696
+ arity: -1
697
+ defined_at: references/ruby/numeric.c:6509
698
+ c_body_at: references/ruby/numeric.c:5947
699
+ c_effects: []
700
+ purity: leaf
701
+ rbs:
702
+ - "(?half: :up | :down | :even) -> Integer"
703
+ - "(int digits, ?half: :up | :down | :even) -> (Integer | Float)"
704
+ rbs_at: references/rbs/core/integer.rbs:1183
705
+ "<=>":
706
+ source: c
707
+ cfunc: rb_int_cmp
708
+ arity: 1
709
+ defined_at: references/ruby/numeric.c:6510
710
+ c_body_at: references/ruby/numeric.c:4926
711
+ c_effects:
712
+ - raises
713
+ purity: leaf
714
+ rbs:
715
+ - "(Integer | Rational) -> Integer"
716
+ - "(untyped) -> Integer?"
717
+ rbs_at: references/rbs/core/integer.rbs:413
718
+ "+":
719
+ source: c
720
+ cfunc: rb_int_plus
721
+ arity: 1
722
+ defined_at: references/ruby/numeric.c:6512
723
+ c_body_at: references/ruby/numeric.c:4179
724
+ c_effects:
725
+ - coerce_fallback
726
+ purity: leaf_when_numeric
727
+ rbs:
728
+ - "(Integer) -> Integer"
729
+ - "(Float) -> Float"
730
+ - "(Rational) -> Rational"
731
+ - "(Complex) -> Complex"
732
+ rbs_at: references/rbs/core/integer.rbs:279
733
+ "-":
734
+ source: c
735
+ cfunc: rb_int_minus
736
+ arity: 1
737
+ defined_at: references/ruby/numeric.c:6513
738
+ c_body_at: references/ruby/numeric.c:4224
739
+ c_effects:
740
+ - coerce_fallback
741
+ purity: leaf_when_numeric
742
+ rbs:
743
+ - "(Integer) -> Integer"
744
+ - "(Float) -> Float"
745
+ - "(Rational) -> Rational"
746
+ - "(Complex) -> Complex"
747
+ rbs_at: references/rbs/core/integer.rbs:297
748
+ "*":
749
+ source: c
750
+ cfunc: rb_int_mul
751
+ arity: 1
752
+ defined_at: references/ruby/numeric.c:6514
753
+ c_body_at: references/ruby/numeric.c:4280
754
+ c_effects:
755
+ - coerce_fallback
756
+ purity: leaf_when_numeric
757
+ rbs:
758
+ - "(Float) -> Float"
759
+ - "(Rational) -> Rational"
760
+ - "(Complex) -> Complex"
761
+ - "(Integer) -> Integer"
762
+ rbs_at: references/rbs/core/integer.rbs:208
763
+ "/":
764
+ source: c
765
+ cfunc: rb_int_div
766
+ arity: 1
767
+ defined_at: references/ruby/numeric.c:6515
768
+ c_body_at: references/ruby/numeric.c:4419
769
+ c_effects: []
770
+ purity: leaf
771
+ rbs:
772
+ - "(Integer) -> Integer"
773
+ - "(Float) -> Float"
774
+ - "(Rational) -> Rational"
775
+ - "(Complex) -> Complex"
776
+ rbs_at: references/rbs/core/integer.rbs:333
777
+ div:
778
+ source: c
779
+ cfunc: rb_int_idiv
780
+ arity: 1
781
+ defined_at: references/ruby/numeric.c:6516
782
+ c_body_at: references/ruby/numeric.c:4455
783
+ c_effects: []
784
+ purity: leaf
785
+ rbs:
786
+ - "(Numeric) -> Integer"
787
+ rbs_at: references/rbs/core/integer.rbs:785
788
+ "%":
789
+ source: c
790
+ cfunc: rb_int_modulo
791
+ arity: 1
792
+ defined_at: references/ruby/numeric.c:6517
793
+ c_body_at: references/ruby/numeric.c:4514
794
+ c_effects: []
795
+ purity: leaf
796
+ rbs:
797
+ - "(Float) -> Float"
798
+ - "(Rational) -> Rational"
799
+ - "(Integer) -> Integer"
800
+ - "(Numeric) -> Numeric"
801
+ rbs_at: references/rbs/core/integer.rbs:175
802
+ modulo:
803
+ source: c
804
+ cfunc: rb_int_modulo
805
+ arity: 1
806
+ defined_at: references/ruby/numeric.c:6518
807
+ c_body_at: references/ruby/numeric.c:4514
808
+ c_effects: []
809
+ purity: leaf
810
+ remainder:
811
+ source: c
812
+ cfunc: int_remainder
813
+ arity: 1
814
+ defined_at: references/ruby/numeric.c:6519
815
+ c_body_at: references/ruby/numeric.c:4549
816
+ c_effects: []
817
+ purity: leaf
818
+ rbs:
819
+ - "(Integer) -> Integer"
820
+ - "(Float) -> Float"
821
+ - "(Rational) -> Rational"
822
+ - "(Numeric) -> Numeric"
823
+ rbs_at: references/rbs/core/integer.rbs:1132
824
+ divmod:
825
+ source: c
826
+ cfunc: rb_int_divmod
827
+ arity: 1
828
+ defined_at: references/ruby/numeric.c:6520
829
+ c_body_at: references/ruby/numeric.c:4625
830
+ c_effects: []
831
+ purity: leaf
832
+ rbs:
833
+ - "(Integer) -> [ Integer, Integer ]"
834
+ - "(Float) -> [ Integer, Float ]"
835
+ - "(Rational) -> [ Integer, Rational ]"
836
+ - "(Numeric) -> [ Numeric, Numeric ]"
837
+ rbs_at: references/rbs/core/integer.rbs:811
838
+ fdiv:
839
+ source: c
840
+ cfunc: rb_int_fdiv
841
+ arity: 1
842
+ defined_at: references/ruby/numeric.c:6521
843
+ c_body_at: references/ruby/numeric.c:4352
844
+ c_effects: []
845
+ purity: leaf
846
+ rbs:
847
+ - "(Numeric) -> Float"
848
+ rbs_at: references/rbs/core/integer.rbs:859
849
+ "**":
850
+ source: c
851
+ cfunc: rb_int_pow
852
+ arity: 1
853
+ defined_at: references/ruby/numeric.c:6522
854
+ c_body_at: references/ruby/numeric.c:4805
855
+ c_effects: []
856
+ purity: leaf
857
+ rbs:
858
+ - "(Integer) -> Numeric"
859
+ - "(Float) -> Numeric"
860
+ - "(Rational) -> Numeric"
861
+ - "(Complex) -> Complex"
862
+ rbs_at: references/rbs/core/integer.rbs:257
863
+ pow:
864
+ source: c
865
+ cfunc: rb_int_powm
866
+ arity: -1
867
+ defined_at: references/ruby/numeric.c:6524
868
+ c_body_at: references/ruby/bignum.c:7191
869
+ c_effects:
870
+ - raises
871
+ purity: leaf
872
+ rbs:
873
+ - "(Integer other) -> (Integer | Rational)"
874
+ - "(Integer other, Integer modulo) -> Integer"
875
+ - "(Float) -> (Float | Complex)"
876
+ - "(Rational) -> (Float | Rational | Complex)"
877
+ - "(Complex) -> Complex"
878
+ rbs_at: references/rbs/core/integer.rbs:1075
879
+ "===":
880
+ source: c
881
+ cfunc: rb_int_equal
882
+ arity: 1
883
+ defined_at: references/ruby/numeric.c:6526
884
+ c_body_at: references/ruby/numeric.c:4863
885
+ c_effects: []
886
+ purity: leaf
887
+ rbs:
888
+ - "(untyped) -> bool"
889
+ rbs_at: references/rbs/core/integer.rbs:437
890
+ "==":
891
+ source: c
892
+ cfunc: rb_int_equal
893
+ arity: 1
894
+ defined_at: references/ruby/numeric.c:6527
895
+ c_body_at: references/ruby/numeric.c:4863
896
+ c_effects: []
897
+ purity: leaf
898
+ rbs:
899
+ - "(untyped) -> bool"
900
+ rbs_at: references/rbs/core/integer.rbs:424
901
+ ">":
902
+ source: c
903
+ cfunc: rb_int_gt
904
+ arity: 1
905
+ defined_at: references/ruby/numeric.c:6528
906
+ c_body_at: references/ruby/numeric.c:4973
907
+ c_effects: []
908
+ purity: leaf
909
+ rbs:
910
+ - "(Numeric) -> bool"
911
+ rbs_at: references/rbs/core/integer.rbs:453
912
+ ">=":
913
+ source: c
914
+ cfunc: rb_int_ge
915
+ arity: 1
916
+ defined_at: references/ruby/numeric.c:6529
917
+ c_body_at: references/ruby/numeric.c:5020
918
+ c_effects: []
919
+ purity: leaf
920
+ rbs:
921
+ - "(Numeric) -> bool"
922
+ rbs_at: references/rbs/core/integer.rbs:470
923
+ "<":
924
+ source: c
925
+ cfunc: int_lt
926
+ arity: 1
927
+ defined_at: references/ruby/numeric.c:6530
928
+ c_body_at: references/ruby/numeric.c:5064
929
+ c_effects: []
930
+ purity: leaf
931
+ rbs:
932
+ - "(Numeric) -> bool"
933
+ rbs_at: references/rbs/core/integer.rbs:351
934
+ "<=":
935
+ source: c
936
+ cfunc: int_le
937
+ arity: 1
938
+ defined_at: references/ruby/numeric.c:6531
939
+ c_body_at: references/ruby/numeric.c:5111
940
+ c_effects: []
941
+ purity: leaf
942
+ rbs:
943
+ - "(Numeric) -> bool"
944
+ rbs_at: references/rbs/core/integer.rbs:385
945
+ "&":
946
+ source: c
947
+ cfunc: rb_int_and
948
+ arity: 1
949
+ defined_at: references/ruby/numeric.c:6533
950
+ c_body_at: references/ruby/numeric.c:5200
951
+ c_effects: []
952
+ purity: leaf
953
+ rbs:
954
+ - "(Integer) -> Integer"
955
+ rbs_at: references/rbs/core/integer.rbs:193
956
+ "|":
957
+ source: c
958
+ cfunc: int_or
959
+ arity: 1
960
+ defined_at: references/ruby/numeric.c:6534
961
+ c_body_at: references/ruby/numeric.c:5242
962
+ c_effects: []
963
+ purity: leaf
964
+ rbs:
965
+ - "(Integer) -> Integer"
966
+ rbs_at: references/rbs/core/integer.rbs:1396
967
+ "^":
968
+ source: c
969
+ cfunc: rb_int_xor
970
+ arity: 1
971
+ defined_at: references/ruby/numeric.c:6535
972
+ c_body_at: references/ruby/numeric.c:5284
973
+ c_effects: []
974
+ purity: leaf
975
+ rbs:
976
+ - "(Integer) -> Integer"
977
+ rbs_at: references/rbs/core/integer.rbs:545
978
+ "[]":
979
+ source: c
980
+ cfunc: int_aref
981
+ arity: -1
982
+ defined_at: references/ruby/numeric.c:6536
983
+ c_body_at: references/ruby/numeric.c:5557
984
+ c_effects: []
985
+ purity: leaf
986
+ rbs:
987
+ - "(int) -> Integer"
988
+ - "(int i, int len) -> Integer"
989
+ - "(Range[int]) -> Integer"
990
+ rbs_at: references/rbs/core/integer.rbs:528
991
+ !!str '<<':
992
+ source: c
993
+ cfunc: rb_int_lshift
994
+ arity: 1
995
+ defined_at: references/ruby/numeric.c:6538
996
+ c_body_at: references/ruby/numeric.c:5339
997
+ c_effects: []
998
+ purity: leaf
999
+ rbs:
1000
+ - "(int) -> Integer"
1001
+ rbs_at: references/rbs/core/integer.rbs:368
1002
+ ">>":
1003
+ source: c
1004
+ cfunc: rb_int_rshift
1005
+ arity: 1
1006
+ defined_at: references/ruby/numeric.c:6539
1007
+ c_body_at: references/ruby/numeric.c:5395
1008
+ c_effects: []
1009
+ purity: leaf
1010
+ rbs:
1011
+ - "(int) -> Integer"
1012
+ rbs_at: references/rbs/core/integer.rbs:487
1013
+ digits:
1014
+ source: c
1015
+ cfunc: rb_int_digits
1016
+ arity: -1
1017
+ defined_at: references/ruby/numeric.c:6541
1018
+ c_body_at: references/ruby/numeric.c:5758
1019
+ c_effects:
1020
+ - dispatch
1021
+ - raises
1022
+ purity: dispatch
1023
+ rbs:
1024
+ - "(?int base) -> ::Array[Integer]"
1025
+ rbs_at: references/rbs/core/integer.rbs:767
1026
+ "-@":
1027
+ source: prelude
1028
+ prelude_attrs:
1029
+ - leaf
1030
+ body_kind: leaf_cexpr
1031
+ cexpr_target: rb_int_uminus(self)
1032
+ prelude_at: references/ruby/numeric.rb:104
1033
+ purity: leaf
1034
+ arity: 0
1035
+ cfunc: rb_int_uminus
1036
+ defined_at: references/ruby/numeric.rb:104
1037
+ c_body_at: references/ruby/numeric.c:4026
1038
+ c_effects: []
1039
+ rbs:
1040
+ - "() -> Integer"
1041
+ rbs_at: references/rbs/core/integer.rbs:312
1042
+ "~":
1043
+ source: prelude
1044
+ prelude_attrs:
1045
+ - leaf
1046
+ body_kind: leaf_cexpr
1047
+ cexpr_target: rb_int_comp(self)
1048
+ prelude_at: references/ruby/numeric.rb:123
1049
+ purity: leaf
1050
+ arity: 0
1051
+ cfunc: rb_int_comp
1052
+ defined_at: references/ruby/numeric.rb:123
1053
+ c_body_at: references/ruby/numeric.c:5129
1054
+ c_effects: []
1055
+ rbs:
1056
+ - "() -> Integer"
1057
+ rbs_at: references/rbs/core/integer.rbs:1410
1058
+ abs:
1059
+ source: prelude
1060
+ prelude_attrs:
1061
+ - leaf
1062
+ body_kind: leaf_cexpr
1063
+ cexpr_target: rb_int_abs(self)
1064
+ prelude_at: references/ruby/numeric.rb:137
1065
+ purity: leaf
1066
+ arity: 0
1067
+ cfunc: rb_int_abs
1068
+ defined_at: references/ruby/numeric.rb:137
1069
+ c_body_at: references/ruby/numeric.c:5614
1070
+ c_effects: []
1071
+ rbs:
1072
+ - "() -> Integer"
1073
+ rbs_at: references/rbs/core/integer.rbs:557
1074
+ bit_length:
1075
+ source: prelude
1076
+ prelude_attrs:
1077
+ - leaf
1078
+ body_kind: leaf_cexpr
1079
+ cexpr_target: rb_int_bit_length(self)
1080
+ prelude_at: references/ruby/numeric.rb:184
1081
+ purity: leaf
1082
+ arity: 0
1083
+ cfunc: rb_int_bit_length
1084
+ defined_at: references/ruby/numeric.rb:184
1085
+ c_body_at: references/ruby/numeric.c:5653
1086
+ c_effects: []
1087
+ rbs:
1088
+ - "() -> Integer"
1089
+ rbs_at: references/rbs/core/integer.rbs:648
1090
+ even?:
1091
+ source: prelude
1092
+ prelude_attrs:
1093
+ - leaf
1094
+ body_kind: leaf_cexpr
1095
+ cexpr_target: rb_int_even_p(self)
1096
+ prelude_at: references/ruby/numeric.rb:193
1097
+ purity: leaf
1098
+ arity: 0
1099
+ cfunc: rb_int_even_p
1100
+ defined_at: references/ruby/numeric.rb:193
1101
+ c_body_at: references/ruby/numeric.c:3781
1102
+ c_effects: []
1103
+ rbs:
1104
+ - "() -> bool"
1105
+ rbs_at: references/rbs/core/integer.rbs:843
1106
+ integer?:
1107
+ source: prelude
1108
+ prelude_attrs: []
1109
+ body_kind: trivial_literal
1110
+ cexpr_target:
1111
+ prelude_at: references/ruby/numeric.rb:202
1112
+ purity: trivial
1113
+ arity: 0
1114
+ cfunc:
1115
+ defined_at: references/ruby/numeric.rb:202
1116
+ rbs:
1117
+ - "() -> true"
1118
+ rbs_at: references/rbs/core/integer.rbs:953
1119
+ odd?:
1120
+ source: prelude
1121
+ prelude_attrs:
1122
+ - leaf
1123
+ body_kind: leaf_cexpr
1124
+ cexpr_target: rb_int_odd_p(self)
1125
+ prelude_at: references/ruby/numeric.rb:212
1126
+ purity: leaf
1127
+ arity: 0
1128
+ cfunc: rb_int_odd_p
1129
+ defined_at: references/ruby/numeric.rb:212
1130
+ c_body_at: references/ruby/numeric.c:3757
1131
+ c_effects: []
1132
+ rbs:
1133
+ - "() -> bool"
1134
+ rbs_at: references/rbs/core/integer.rbs:1051
1135
+ ord:
1136
+ source: prelude
1137
+ prelude_attrs: []
1138
+ body_kind: trivial_self
1139
+ cexpr_target:
1140
+ prelude_at: references/ruby/numeric.rb:222
1141
+ purity: trivial
1142
+ arity: 0
1143
+ cfunc:
1144
+ defined_at: references/ruby/numeric.rb:222
1145
+ rbs:
1146
+ - "() -> Integer"
1147
+ rbs_at: references/rbs/core/integer.rbs:1059
1148
+ size:
1149
+ source: prelude
1150
+ prelude_attrs:
1151
+ - leaf
1152
+ body_kind: leaf_cexpr
1153
+ cexpr_target: rb_int_size(self)
1154
+ prelude_at: references/ruby/numeric.rb:239
1155
+ purity: leaf
1156
+ arity: 0
1157
+ cfunc: rb_int_size
1158
+ defined_at: references/ruby/numeric.rb:239
1159
+ c_body_at: references/ruby/numeric.c:5632
1160
+ c_effects: []
1161
+ rbs:
1162
+ - "() -> Integer"
1163
+ rbs_at: references/rbs/core/integer.rbs:1200
1164
+ times:
1165
+ source: prelude
1166
+ prelude_attrs:
1167
+ - inline_block
1168
+ body_kind: composed
1169
+ cexpr_target:
1170
+ prelude_at: references/ruby/numeric.rb:255
1171
+ purity: inline_block
1172
+ arity: 0
1173
+ cfunc:
1174
+ defined_at: references/ruby/numeric.rb:255
1175
+ rbs:
1176
+ - "() { (Integer) -> void } -> self"
1177
+ - "() -> ::Enumerator[Integer, self]"
1178
+ rbs_at: references/rbs/core/integer.rbs:1229
1179
+ to_i:
1180
+ source: prelude
1181
+ prelude_attrs: []
1182
+ body_kind: trivial_self
1183
+ cexpr_target:
1184
+ prelude_at: references/ruby/numeric.rb:272
1185
+ purity: trivial
1186
+ arity: 0
1187
+ cfunc:
1188
+ defined_at: references/ruby/numeric.rb:272
1189
+ rbs:
1190
+ - "() -> Integer"
1191
+ rbs_at: references/rbs/core/integer.rbs:1254
1192
+ to_int:
1193
+ source: prelude
1194
+ prelude_attrs: []
1195
+ body_kind: trivial_self
1196
+ cexpr_target:
1197
+ prelude_at: references/ruby/numeric.rb:280
1198
+ purity: trivial
1199
+ arity: 0
1200
+ cfunc:
1201
+ defined_at: references/ruby/numeric.rb:280
1202
+ zero?:
1203
+ source: prelude
1204
+ prelude_attrs:
1205
+ - leaf
1206
+ body_kind: leaf_cexpr
1207
+ cexpr_target: rb_int_zero_p(self)
1208
+ prelude_at: references/ruby/numeric.rb:288
1209
+ purity: leaf
1210
+ arity: 0
1211
+ cfunc: rb_int_zero_p
1212
+ defined_at: references/ruby/numeric.rb:288
1213
+ c_body_at: references/ruby/numeric.c:811
1214
+ c_effects: []
1215
+ rbs:
1216
+ - "() -> bool"
1217
+ rbs_at: references/rbs/core/integer.rbs:1381
1218
+ ceildiv:
1219
+ source: prelude
1220
+ prelude_attrs: []
1221
+ body_kind: composed
1222
+ cexpr_target:
1223
+ prelude_at: references/ruby/numeric.rb:308
1224
+ purity: unknown
1225
+ arity: 1
1226
+ cfunc:
1227
+ defined_at: references/ruby/numeric.rb:308
1228
+ rbs:
1229
+ - "(Numeric other) -> Integer"
1230
+ rbs_at: references/rbs/core/integer.rbs:709
1231
+ numerator:
1232
+ source: prelude
1233
+ prelude_attrs: []
1234
+ body_kind: trivial_self
1235
+ cexpr_target:
1236
+ prelude_at: references/ruby/numeric.rb:318
1237
+ purity: trivial
1238
+ arity: 0
1239
+ cfunc:
1240
+ defined_at: references/ruby/numeric.rb:318
1241
+ rbs:
1242
+ - "() -> Integer"
1243
+ rbs_at: references/rbs/core/integer.rbs:1043
1244
+ denominator:
1245
+ source: prelude
1246
+ prelude_attrs: []
1247
+ body_kind: trivial_literal
1248
+ cexpr_target:
1249
+ prelude_at: references/ruby/numeric.rb:326
1250
+ purity: trivial
1251
+ arity: 0
1252
+ cfunc:
1253
+ defined_at: references/ruby/numeric.rb:326
1254
+ rbs:
1255
+ - "() -> Integer"
1256
+ rbs_at: references/rbs/core/integer.rbs:752
1257
+ singleton_methods:
1258
+ sqrt:
1259
+ source: c
1260
+ cfunc: rb_int_s_isqrt
1261
+ arity: 1
1262
+ defined_at: references/ruby/numeric.c:6491
1263
+ c_body_at: references/ruby/numeric.c:6213
1264
+ c_effects:
1265
+ - dispatch
1266
+ purity: dispatch
1267
+ rbs:
1268
+ - "(int n) -> Integer"
1269
+ rbs_at: references/rbs/core/integer.rbs:126
1270
+ try_convert:
1271
+ source: c
1272
+ cfunc: int_s_try_convert
1273
+ arity: 1
1274
+ defined_at: references/ruby/numeric.c:6492
1275
+ c_body_at: references/ruby/numeric.c:6261
1276
+ c_effects: []
1277
+ purity: leaf
1278
+ rbs:
1279
+ - "(int) -> Integer"
1280
+ - "(untyped) -> Integer?"
1281
+ rbs_at: references/rbs/core/integer.rbs:145
1282
+ undefined:
1283
+ - new
1284
+ Float:
1285
+ parent: Numeric
1286
+ defined_at: references/ruby/numeric.c:6563
1287
+ includes: []
1288
+ constants:
1289
+ RADIX:
1290
+ c_expression: INT2FIX(FLT_RADIX)
1291
+ defined_at: references/ruby/numeric.c:6574
1292
+ MANT_DIG:
1293
+ c_expression: INT2FIX(DBL_MANT_DIG)
1294
+ defined_at: references/ruby/numeric.c:6580
1295
+ DIG:
1296
+ c_expression: INT2FIX(DBL_DIG)
1297
+ defined_at: references/ruby/numeric.c:6587
1298
+ MIN_EXP:
1299
+ c_expression: INT2FIX(DBL_MIN_EXP)
1300
+ defined_at: references/ruby/numeric.c:6594
1301
+ MAX_EXP:
1302
+ c_expression: INT2FIX(DBL_MAX_EXP)
1303
+ defined_at: references/ruby/numeric.c:6601
1304
+ MIN_10_EXP:
1305
+ c_expression: INT2FIX(DBL_MIN_10_EXP)
1306
+ defined_at: references/ruby/numeric.c:6608
1307
+ MAX_10_EXP:
1308
+ c_expression: INT2FIX(DBL_MAX_10_EXP)
1309
+ defined_at: references/ruby/numeric.c:6615
1310
+ MIN:
1311
+ c_expression: DBL2NUM(DBL_MIN)
1312
+ defined_at: references/ruby/numeric.c:6626
1313
+ MAX:
1314
+ c_expression: DBL2NUM(DBL_MAX)
1315
+ defined_at: references/ruby/numeric.c:6632
1316
+ EPSILON:
1317
+ c_expression: DBL2NUM(DBL_EPSILON)
1318
+ defined_at: references/ruby/numeric.c:6639
1319
+ INFINITY:
1320
+ c_expression: DBL2NUM(HUGE_VAL)
1321
+ defined_at: references/ruby/numeric.c:6643
1322
+ NAN:
1323
+ c_expression: DBL2NUM(nan(""))
1324
+ defined_at: references/ruby/numeric.c:6647
1325
+ aliases:
1326
+ inspect:
1327
+ old: to_s
1328
+ source: c
1329
+ defined_at: references/ruby/numeric.c:6650
1330
+ magnitude:
1331
+ old: abs
1332
+ source: prelude
1333
+ defined_at: references/ruby/numeric.rb:378
1334
+ instance_methods:
1335
+ to_s:
1336
+ source: c
1337
+ cfunc: flo_to_s
1338
+ arity: 0
1339
+ defined_at: references/ruby/numeric.c:6649
1340
+ c_body_at: references/ruby/numeric.c:949
1341
+ c_effects:
1342
+ - mutate
1343
+ purity: mutates_self
1344
+ rbs:
1345
+ - "() -> String"
1346
+ rbs_at: references/rbs/core/float.rbs:1156
1347
+ coerce:
1348
+ source: c
1349
+ cfunc: flo_coerce
1350
+ arity: 1
1351
+ defined_at: references/ruby/numeric.c:6651
1352
+ c_body_at: references/ruby/numeric.c:1040
1353
+ c_effects:
1354
+ - dispatch
1355
+ purity: dispatch
1356
+ rbs:
1357
+ - "(Numeric) -> [ Float, Float ]"
1358
+ rbs_at: references/rbs/core/float.rbs:614
1359
+ "+":
1360
+ source: c
1361
+ cfunc: rb_float_plus
1362
+ arity: 1
1363
+ defined_at: references/ruby/numeric.c:6652
1364
+ c_body_at: references/ruby/numeric.c:1072
1365
+ c_effects:
1366
+ - coerce_fallback
1367
+ purity: leaf_when_numeric
1368
+ rbs:
1369
+ - "(Complex) -> Complex"
1370
+ - "(Numeric) -> Float"
1371
+ rbs_at: references/rbs/core/float.rbs:336
1372
+ "-":
1373
+ source: c
1374
+ cfunc: rb_float_minus
1375
+ arity: 1
1376
+ defined_at: references/ruby/numeric.c:6653
1377
+ c_body_at: references/ruby/numeric.c:1103
1378
+ c_effects:
1379
+ - coerce_fallback
1380
+ purity: leaf_when_numeric
1381
+ rbs:
1382
+ - "(Complex) -> Complex"
1383
+ - "(Numeric) -> Float"
1384
+ rbs_at: references/rbs/core/float.rbs:351
1385
+ "*":
1386
+ source: c
1387
+ cfunc: rb_float_mul
1388
+ arity: 1
1389
+ defined_at: references/ruby/numeric.c:6654
1390
+ c_body_at: references/ruby/numeric.c:1134
1391
+ c_effects:
1392
+ - coerce_fallback
1393
+ purity: leaf_when_numeric
1394
+ rbs:
1395
+ - "(Complex) -> Complex"
1396
+ - "(Numeric) -> Float"
1397
+ rbs_at: references/rbs/core/float.rbs:300
1398
+ "/":
1399
+ source: c
1400
+ cfunc: rb_float_div
1401
+ arity: 1
1402
+ defined_at: references/ruby/numeric.c:6655
1403
+ c_body_at: references/ruby/numeric.c:1189
1404
+ c_effects:
1405
+ - coerce_fallback
1406
+ purity: leaf_when_numeric
1407
+ rbs:
1408
+ - "(Complex) -> Complex"
1409
+ - "(Numeric) -> Float"
1410
+ rbs_at: references/rbs/core/float.rbs:378
1411
+ quo:
1412
+ source: c
1413
+ cfunc: flo_quo
1414
+ arity: 1
1415
+ defined_at: references/ruby/numeric.c:6656
1416
+ c_body_at: references/ruby/numeric.c:1227
1417
+ c_effects:
1418
+ - dispatch
1419
+ purity: dispatch
1420
+ rbs:
1421
+ - "(Complex) -> Complex"
1422
+ - "(Numeric) -> Float"
1423
+ rbs_at: references/rbs/core/float.rbs:996
1424
+ fdiv:
1425
+ source: c
1426
+ cfunc: flo_quo
1427
+ arity: 1
1428
+ defined_at: references/ruby/numeric.c:6657
1429
+ c_body_at: references/ruby/numeric.c:1227
1430
+ c_effects:
1431
+ - dispatch
1432
+ purity: dispatch
1433
+ rbs:
1434
+ - "(Complex) -> Complex"
1435
+ - "(Numeric) -> Float"
1436
+ rbs_at: references/rbs/core/float.rbs:682
1437
+ "%":
1438
+ source: c
1439
+ cfunc: flo_mod
1440
+ arity: 1
1441
+ defined_at: references/ruby/numeric.c:6658
1442
+ c_body_at: references/ruby/numeric.c:1313
1443
+ c_effects:
1444
+ - coerce_fallback
1445
+ purity: leaf_when_numeric
1446
+ rbs:
1447
+ - "(Integer) -> Float"
1448
+ - "(Float) -> Float"
1449
+ - "(Rational) -> Float"
1450
+ - "(Numeric) -> Numeric"
1451
+ rbs_at: references/rbs/core/float.rbs:283
1452
+ modulo:
1453
+ source: c
1454
+ cfunc: flo_mod
1455
+ arity: 1
1456
+ defined_at: references/ruby/numeric.c:6659
1457
+ c_body_at: references/ruby/numeric.c:1313
1458
+ c_effects:
1459
+ - coerce_fallback
1460
+ purity: leaf_when_numeric
1461
+ rbs:
1462
+ - "(Numeric) -> Float"
1463
+ rbs_at: references/rbs/core/float.rbs:851
1464
+ divmod:
1465
+ source: c
1466
+ cfunc: flo_divmod
1467
+ arity: 1
1468
+ defined_at: references/ruby/numeric.c:6660
1469
+ c_body_at: references/ruby/numeric.c:1368
1470
+ c_effects:
1471
+ - coerce_fallback
1472
+ purity: leaf_when_numeric
1473
+ rbs:
1474
+ - "(Integer | Float | Rational) -> [ Integer, Float ]"
1475
+ - "(Numeric) -> [ Numeric, Numeric ]"
1476
+ rbs_at: references/rbs/core/float.rbs:650
1477
+ "**":
1478
+ source: c
1479
+ cfunc: rb_float_pow
1480
+ arity: 1
1481
+ defined_at: references/ruby/numeric.c:6661
1482
+ c_body_at: references/ruby/numeric.c:1407
1483
+ c_effects:
1484
+ - coerce_fallback
1485
+ purity: leaf_when_numeric
1486
+ rbs:
1487
+ - "(Complex) -> Complex"
1488
+ - "(Numeric) -> Float"
1489
+ rbs_at: references/rbs/core/float.rbs:316
1490
+ "==":
1491
+ source: c
1492
+ cfunc: flo_eq
1493
+ arity: 1
1494
+ defined_at: references/ruby/numeric.c:6662
1495
+ c_body_at: references/ruby/numeric.c:1518
1496
+ c_effects: []
1497
+ purity: leaf
1498
+ rbs:
1499
+ - "(untyped) -> bool"
1500
+ rbs_at: references/rbs/core/float.rbs:463
1501
+ "===":
1502
+ source: c
1503
+ cfunc: flo_eq
1504
+ arity: 1
1505
+ defined_at: references/ruby/numeric.c:6663
1506
+ c_body_at: references/ruby/numeric.c:1518
1507
+ c_effects: []
1508
+ purity: leaf
1509
+ rbs:
1510
+ - "(untyped) -> bool"
1511
+ rbs_at: references/rbs/core/float.rbs:478
1512
+ "<=>":
1513
+ source: c
1514
+ cfunc: flo_cmp
1515
+ arity: 1
1516
+ defined_at: references/ruby/numeric.c:6664
1517
+ c_body_at: references/ruby/numeric.c:1600
1518
+ c_effects:
1519
+ - coerce_fallback
1520
+ - dispatch
1521
+ purity: dispatch
1522
+ rbs:
1523
+ - "(Numeric) -> Integer?"
1524
+ rbs_at: references/rbs/core/float.rbs:445
1525
+ ">":
1526
+ source: c
1527
+ cfunc: rb_float_gt
1528
+ arity: 1
1529
+ defined_at: references/ruby/numeric.c:6665
1530
+ c_body_at: references/ruby/numeric.c:1653
1531
+ c_effects:
1532
+ - coerce_fallback
1533
+ purity: leaf_when_numeric
1534
+ rbs:
1535
+ - "(Numeric) -> bool"
1536
+ rbs_at: references/rbs/core/float.rbs:494
1537
+ ">=":
1538
+ source: c
1539
+ cfunc: flo_ge
1540
+ arity: 1
1541
+ defined_at: references/ruby/numeric.c:6666
1542
+ c_body_at: references/ruby/numeric.c:1690
1543
+ c_effects:
1544
+ - coerce_fallback
1545
+ purity: leaf_when_numeric
1546
+ rbs:
1547
+ - "(Numeric) -> bool"
1548
+ rbs_at: references/rbs/core/float.rbs:511
1549
+ "<":
1550
+ source: c
1551
+ cfunc: flo_lt
1552
+ arity: 1
1553
+ defined_at: references/ruby/numeric.c:6667
1554
+ c_body_at: references/ruby/numeric.c:1726
1555
+ c_effects:
1556
+ - coerce_fallback
1557
+ purity: leaf_when_numeric
1558
+ rbs:
1559
+ - "(Numeric) -> bool"
1560
+ rbs_at: references/rbs/core/float.rbs:396
1561
+ "<=":
1562
+ source: c
1563
+ cfunc: flo_le
1564
+ arity: 1
1565
+ defined_at: references/ruby/numeric.c:6668
1566
+ c_body_at: references/ruby/numeric.c:1764
1567
+ c_effects:
1568
+ - coerce_fallback
1569
+ purity: leaf_when_numeric
1570
+ rbs:
1571
+ - "(Numeric) -> bool"
1572
+ rbs_at: references/rbs/core/float.rbs:414
1573
+ eql?:
1574
+ source: c
1575
+ cfunc: flo_eql
1576
+ arity: 1
1577
+ defined_at: references/ruby/numeric.c:6669
1578
+ c_body_at: references/ruby/numeric.c:1803
1579
+ c_effects: []
1580
+ purity: leaf
1581
+ rbs:
1582
+ - "(untyped) -> bool"
1583
+ rbs_at: references/rbs/core/float.rbs:671
1584
+ hash:
1585
+ source: c
1586
+ cfunc: flo_hash
1587
+ arity: 0
1588
+ defined_at: references/ruby/numeric.c:6670
1589
+ c_body_at: references/ruby/numeric.c:1548
1590
+ c_effects: []
1591
+ purity: leaf
1592
+ rbs:
1593
+ - "() -> Integer"
1594
+ rbs_at: references/rbs/core/float.rbs:774
1595
+ to_i:
1596
+ source: c
1597
+ cfunc: flo_to_i
1598
+ arity: 0
1599
+ defined_at: references/ruby/numeric.c:6672
1600
+ c_body_at: references/ruby/numeric.c:2555
1601
+ c_effects: []
1602
+ purity: leaf
1603
+ rbs:
1604
+ - "() -> Integer"
1605
+ rbs_at: references/rbs/core/float.rbs:1097
1606
+ to_int:
1607
+ source: c
1608
+ cfunc: flo_to_i
1609
+ arity: 0
1610
+ defined_at: references/ruby/numeric.c:6673
1611
+ c_body_at: references/ruby/numeric.c:2555
1612
+ c_effects: []
1613
+ purity: leaf
1614
+ floor:
1615
+ source: c
1616
+ cfunc: flo_floor
1617
+ arity: -1
1618
+ defined_at: references/ruby/numeric.c:6674
1619
+ c_body_at: references/ruby/numeric.c:2120
1620
+ c_effects: []
1621
+ purity: leaf
1622
+ rbs:
1623
+ - "() -> Integer"
1624
+ - "(int digits) -> (Integer | Numeric)"
1625
+ rbs_at: references/rbs/core/float.rbs:763
1626
+ ceil:
1627
+ source: c
1628
+ cfunc: flo_ceil
1629
+ arity: -1
1630
+ defined_at: references/ruby/numeric.c:6675
1631
+ c_body_at: references/ruby/numeric.c:2205
1632
+ c_effects: []
1633
+ purity: leaf
1634
+ rbs:
1635
+ - "() -> Integer"
1636
+ - "(int digits) -> (Integer | Float)"
1637
+ rbs_at: references/rbs/core/float.rbs:597
1638
+ round:
1639
+ source: c
1640
+ cfunc: flo_round
1641
+ arity: -1
1642
+ defined_at: references/ruby/numeric.c:6676
1643
+ c_body_at: references/ruby/numeric.c:2463
1644
+ c_effects: []
1645
+ purity: leaf
1646
+ rbs:
1647
+ - "(?half: :up | :down | :even) -> Integer"
1648
+ - "(int digits, ?half: :up | :down | :even) -> (Integer | Float)"
1649
+ rbs_at: references/rbs/core/float.rbs:1072
1650
+ truncate:
1651
+ source: c
1652
+ cfunc: flo_truncate
1653
+ arity: -1
1654
+ defined_at: references/ruby/numeric.c:6677
1655
+ c_body_at: references/ruby/numeric.c:2601
1656
+ c_effects: []
1657
+ purity: leaf
1658
+ rbs:
1659
+ - "() -> Integer"
1660
+ - "(Integer ndigits) -> (Integer | Float)"
1661
+ rbs_at: references/rbs/core/float.rbs:1192
1662
+ nan?:
1663
+ source: c
1664
+ cfunc: flo_is_nan_p
1665
+ arity: 0
1666
+ defined_at: references/ruby/numeric.c:6679
1667
+ c_body_at: references/ruby/numeric.c:1835
1668
+ c_effects: []
1669
+ purity: leaf
1670
+ rbs:
1671
+ - "() -> bool"
1672
+ rbs_at: references/rbs/core/float.rbs:864
1673
+ infinite?:
1674
+ source: c
1675
+ cfunc: rb_flo_is_infinite_p
1676
+ arity: 0
1677
+ defined_at: references/ruby/numeric.c:6680
1678
+ c_body_at: references/ruby/numeric.c:1866
1679
+ c_effects: []
1680
+ purity: leaf
1681
+ rbs:
1682
+ - "() -> Integer?"
1683
+ rbs_at: references/rbs/core/float.rbs:797
1684
+ finite?:
1685
+ source: c
1686
+ cfunc: rb_flo_is_finite_p
1687
+ arity: 0
1688
+ defined_at: references/ruby/numeric.c:6681
1689
+ c_body_at: references/ruby/numeric.c:1896
1690
+ c_effects: []
1691
+ purity: leaf
1692
+ rbs:
1693
+ - "() -> bool"
1694
+ rbs_at: references/rbs/core/float.rbs:701
1695
+ next_float:
1696
+ source: c
1697
+ cfunc: flo_next_float
1698
+ arity: 0
1699
+ defined_at: references/ruby/numeric.c:6682
1700
+ c_body_at: references/ruby/numeric.c:1957
1701
+ c_effects: []
1702
+ purity: leaf
1703
+ rbs:
1704
+ - "() -> Float"
1705
+ rbs_at: references/rbs/core/float.rbs:917
1706
+ prev_float:
1707
+ source: c
1708
+ cfunc: flo_prev_float
1709
+ arity: 0
1710
+ defined_at: references/ruby/numeric.c:6683
1711
+ c_body_at: references/ruby/numeric.c:1998
1712
+ c_effects: []
1713
+ purity: leaf
1714
+ rbs:
1715
+ - "() -> Float"
1716
+ rbs_at: references/rbs/core/float.rbs:982
1717
+ to_f:
1718
+ source: prelude
1719
+ prelude_attrs: []
1720
+ body_kind: trivial_self
1721
+ cexpr_target:
1722
+ prelude_at: references/ruby/numeric.rb:360
1723
+ purity: trivial
1724
+ arity: 0
1725
+ cfunc:
1726
+ defined_at: references/ruby/numeric.rb:360
1727
+ rbs:
1728
+ - "() -> Float"
1729
+ rbs_at: references/rbs/core/float.rbs:1081
1730
+ abs:
1731
+ source: prelude
1732
+ prelude_attrs:
1733
+ - leaf
1734
+ body_kind: leaf_cexpr
1735
+ cexpr_target: rb_float_abs(self)
1736
+ prelude_at: references/ruby/numeric.rb:373
1737
+ purity: leaf
1738
+ arity: 0
1739
+ cfunc: rb_float_abs
1740
+ defined_at: references/ruby/numeric.rb:373
1741
+ c_body_at: references/ruby/numeric.c:1816
1742
+ c_effects: []
1743
+ rbs:
1744
+ - "() -> Float"
1745
+ rbs_at: references/rbs/core/float.rbs:523
1746
+ "-@":
1747
+ source: prelude
1748
+ prelude_attrs:
1749
+ - leaf
1750
+ body_kind: leaf_cexpr
1751
+ cexpr_target: rb_float_uminus(self)
1752
+ prelude_at: references/ruby/numeric.rb:389
1753
+ purity: leaf
1754
+ arity: 0
1755
+ cfunc: rb_float_uminus
1756
+ defined_at: references/ruby/numeric.rb:389
1757
+ c_body_at: references/ruby/numeric.c:1046
1758
+ c_effects: []
1759
+ rbs:
1760
+ - "() -> Float"
1761
+ rbs_at: references/rbs/core/float.rbs:364
1762
+ zero?:
1763
+ source: prelude
1764
+ prelude_attrs:
1765
+ - leaf
1766
+ body_kind: leaf_cexpr
1767
+ cexpr_target: RBOOL(FLOAT_ZERO_P(self))
1768
+ prelude_at: references/ruby/numeric.rb:398
1769
+ purity: leaf
1770
+ arity: 0
1771
+ cfunc: RBOOL
1772
+ defined_at: references/ruby/numeric.rb:398
1773
+ c_body_at: not_found
1774
+ rbs:
1775
+ - "() -> bool"
1776
+ rbs_at: references/rbs/core/float.rbs:1201
1777
+ positive?:
1778
+ source: prelude
1779
+ prelude_attrs:
1780
+ - leaf
1781
+ body_kind: leaf_cexpr
1782
+ cexpr_target: RBOOL(RFLOAT_VALUE(self) > 0.0)
1783
+ prelude_at: references/ruby/numeric.rb:407
1784
+ purity: leaf
1785
+ arity: 0
1786
+ cfunc: RBOOL
1787
+ defined_at: references/ruby/numeric.rb:407
1788
+ c_body_at: not_found
1789
+ rbs:
1790
+ - "() -> bool"
1791
+ rbs_at: references/rbs/core/float.rbs:946
1792
+ negative?:
1793
+ source: prelude
1794
+ prelude_attrs:
1795
+ - leaf
1796
+ body_kind: leaf_cexpr
1797
+ cexpr_target: RBOOL(RFLOAT_VALUE(self) < 0.0)
1798
+ prelude_at: references/ruby/numeric.rb:416
1799
+ purity: leaf
1800
+ arity: 0
1801
+ cfunc: RBOOL
1802
+ defined_at: references/ruby/numeric.rb:416
1803
+ c_body_at: not_found
1804
+ rbs:
1805
+ - "() -> bool"
1806
+ rbs_at: references/rbs/core/float.rbs:872
1807
+ singleton_methods: {}
1808
+ undefined:
1809
+ - new