rigortype 0.0.4 → 0.0.6

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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +215 -134
  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/pathname.yml +1067 -0
  9. data/data/builtins/ruby_core/rational.yml +365 -0
  10. data/data/builtins/ruby_core/string.yml +9 -0
  11. data/data/builtins/ruby_core/time.yml +6 -4
  12. data/lib/rigor/cli.rb +1 -1
  13. data/lib/rigor/inference/builtins/comparable_catalog.rb +27 -0
  14. data/lib/rigor/inference/builtins/complex_catalog.rb +41 -0
  15. data/lib/rigor/inference/builtins/date_catalog.rb +98 -0
  16. data/lib/rigor/inference/builtins/enumerable_catalog.rb +27 -0
  17. data/lib/rigor/inference/builtins/pathname_catalog.rb +35 -0
  18. data/lib/rigor/inference/builtins/rational_catalog.rb +38 -0
  19. data/lib/rigor/inference/expression_typer.rb +285 -23
  20. data/lib/rigor/inference/method_dispatcher/block_folding.rb +322 -0
  21. data/lib/rigor/inference/method_dispatcher/constant_folding.rb +197 -12
  22. data/lib/rigor/inference/method_dispatcher/iterator_dispatch.rb +99 -0
  23. data/lib/rigor/inference/method_dispatcher/kernel_dispatch.rb +95 -0
  24. data/lib/rigor/inference/method_dispatcher.rb +20 -8
  25. data/lib/rigor/inference/narrowing.rb +210 -1
  26. data/lib/rigor/inference/scope_indexer.rb +87 -11
  27. data/lib/rigor/inference/statement_evaluator.rb +5 -1
  28. data/lib/rigor/rbs_extended.rb +11 -6
  29. data/lib/rigor/type/integer_range.rb +4 -2
  30. data/lib/rigor/version.rb +1 -1
  31. data/sig/rigor/environment.rbs +4 -6
  32. data/sig/rigor/inference.rbs +2 -1
  33. data/sig/rigor/type.rbs +41 -41
  34. metadata +15 -1
@@ -0,0 +1,505 @@
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/complex.c
6
+ ruby_prelude:
7
+ rbs:
8
+ - references/rbs/core/complex.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
+ Complex:
22
+ parent: Numeric
23
+ defined_at: references/ruby/complex.c:2740
24
+ includes: []
25
+ constants:
26
+ I:
27
+ c_expression: f_complex_new_bang2(rb_cComplex, ZERO, ONE)
28
+ defined_at: references/ruby/complex.c:2848
29
+ aliases: {}
30
+ instance_methods:
31
+ real:
32
+ source: c
33
+ cfunc: rb_complex_real
34
+ arity: 0
35
+ defined_at: references/ruby/complex.c:2766
36
+ c_body_at: references/ruby/complex.c:771
37
+ c_effects: []
38
+ purity: leaf
39
+ rbs:
40
+ - "() -> Numeric"
41
+ rbs_at: references/rbs/core/complex.rbs:686
42
+ imaginary:
43
+ source: c
44
+ cfunc: rb_complex_imag
45
+ arity: 0
46
+ defined_at: references/ruby/complex.c:2767
47
+ c_body_at: references/ruby/complex.c:794
48
+ c_effects: []
49
+ purity: leaf
50
+ rbs:
51
+ - "() -> Numeric"
52
+ rbs_at: references/rbs/core/complex.rbs:520
53
+ imag:
54
+ source: c
55
+ cfunc: rb_complex_imag
56
+ arity: 0
57
+ defined_at: references/ruby/complex.c:2768
58
+ c_body_at: references/ruby/complex.c:794
59
+ c_effects: []
60
+ purity: leaf
61
+ rbs:
62
+ - "() -> Numeric"
63
+ rbs_at: references/rbs/core/complex.rbs:503
64
+ "-@":
65
+ source: c
66
+ cfunc: rb_complex_uminus
67
+ arity: 0
68
+ defined_at: references/ruby/complex.c:2770
69
+ c_body_at: references/ruby/complex.c:811
70
+ c_effects: []
71
+ purity: leaf
72
+ rbs:
73
+ - "() -> Complex"
74
+ rbs_at: references/rbs/core/complex.rbs:264
75
+ "+":
76
+ source: c
77
+ cfunc: rb_complex_plus
78
+ arity: 1
79
+ defined_at: references/ruby/complex.c:2771
80
+ c_body_at: references/ruby/complex.c:841
81
+ c_effects:
82
+ - coerce_fallback
83
+ purity: leaf_when_numeric
84
+ rbs:
85
+ - "(Numeric) -> Complex"
86
+ rbs_at: references/rbs/core/complex.rbs:239
87
+ "-":
88
+ source: c
89
+ cfunc: rb_complex_minus
90
+ arity: 1
91
+ defined_at: references/ruby/complex.c:2772
92
+ c_body_at: references/ruby/complex.c:876
93
+ c_effects:
94
+ - coerce_fallback
95
+ purity: leaf_when_numeric
96
+ rbs:
97
+ - "(Numeric) -> Complex"
98
+ rbs_at: references/rbs/core/complex.rbs:253
99
+ "*":
100
+ source: c
101
+ cfunc: rb_complex_mul
102
+ arity: 1
103
+ defined_at: references/ruby/complex.c:2773
104
+ c_body_at: references/ruby/complex.c:938
105
+ c_effects:
106
+ - coerce_fallback
107
+ purity: leaf_when_numeric
108
+ rbs:
109
+ - "(Numeric) -> Complex"
110
+ rbs_at: references/rbs/core/complex.rbs:204
111
+ "/":
112
+ source: c
113
+ cfunc: rb_complex_div
114
+ arity: 1
115
+ defined_at: references/ruby/complex.c:2774
116
+ c_body_at: references/ruby/complex.c:1014
117
+ c_effects: []
118
+ purity: leaf
119
+ rbs:
120
+ - "(Numeric) -> Complex"
121
+ rbs_at: references/rbs/core/complex.rbs:278
122
+ quo:
123
+ source: c
124
+ cfunc: nucomp_quo
125
+ arity: 1
126
+ defined_at: references/ruby/complex.c:2775
127
+ c_body_at: references/ruby/complex.c:1014
128
+ c_effects: []
129
+ purity: leaf
130
+ rbs:
131
+ - "(Numeric) -> Complex"
132
+ rbs_at: references/rbs/core/complex.rbs:635
133
+ fdiv:
134
+ source: c
135
+ cfunc: nucomp_fdiv
136
+ arity: 1
137
+ defined_at: references/ruby/complex.c:2776
138
+ c_body_at: references/ruby/complex.c:1031
139
+ c_effects: []
140
+ purity: leaf
141
+ rbs:
142
+ - "(Numeric) -> Complex"
143
+ rbs_at: references/rbs/core/complex.rbs:445
144
+ "**":
145
+ source: c
146
+ cfunc: rb_complex_pow
147
+ arity: 1
148
+ defined_at: references/ruby/complex.c:2777
149
+ c_body_at: references/ruby/complex.c:1134
150
+ c_effects:
151
+ - coerce_fallback
152
+ purity: leaf_when_numeric
153
+ rbs:
154
+ - "(Numeric) -> Complex"
155
+ rbs_at: references/rbs/core/complex.rbs:215
156
+ "==":
157
+ source: c
158
+ cfunc: nucomp_eqeq_p
159
+ arity: 1
160
+ defined_at: references/ruby/complex.c:2779
161
+ c_body_at: references/ruby/complex.c:1238
162
+ c_effects: []
163
+ purity: leaf
164
+ rbs:
165
+ - "(untyped) -> bool"
166
+ rbs_at: references/rbs/core/complex.rbs:323
167
+ "<=>":
168
+ source: c
169
+ cfunc: nucomp_cmp
170
+ arity: 1
171
+ defined_at: references/ruby/complex.c:2780
172
+ c_body_at: references/ruby/complex.c:1289
173
+ c_effects:
174
+ - coerce_fallback
175
+ - dispatch
176
+ purity: dispatch
177
+ rbs:
178
+ - "(untyped) -> Integer?"
179
+ rbs_at: references/rbs/core/complex.rbs:312
180
+ coerce:
181
+ source: c
182
+ cfunc: nucomp_coerce
183
+ arity: 1
184
+ defined_at: references/ruby/complex.c:2781
185
+ c_body_at: references/ruby/complex.c:1317
186
+ c_effects:
187
+ - raises
188
+ purity: leaf
189
+ rbs:
190
+ - "(Numeric) -> [ Complex, Complex ]"
191
+ rbs_at: references/rbs/core/complex.rbs:396
192
+ abs:
193
+ source: c
194
+ cfunc: rb_complex_abs
195
+ arity: 0
196
+ defined_at: references/ruby/complex.c:2783
197
+ c_body_at: references/ruby/complex.c:1346
198
+ c_effects: []
199
+ purity: leaf
200
+ rbs:
201
+ - "() -> Numeric"
202
+ rbs_at: references/rbs/core/complex.rbs:344
203
+ magnitude:
204
+ source: c
205
+ cfunc: rb_complex_abs
206
+ arity: 0
207
+ defined_at: references/ruby/complex.c:2784
208
+ c_body_at: references/ruby/complex.c:1346
209
+ c_effects: []
210
+ purity: leaf
211
+ abs2:
212
+ source: c
213
+ cfunc: nucomp_abs2
214
+ arity: 0
215
+ defined_at: references/ruby/complex.c:2785
216
+ c_body_at: references/ruby/complex.c:1382
217
+ c_effects: []
218
+ purity: leaf
219
+ rbs:
220
+ - "() -> Numeric"
221
+ rbs_at: references/rbs/core/complex.rbs:361
222
+ arg:
223
+ source: c
224
+ cfunc: rb_complex_arg
225
+ arity: 0
226
+ defined_at: references/ruby/complex.c:2786
227
+ c_body_at: references/ruby/complex.c:1406
228
+ c_effects: []
229
+ purity: leaf
230
+ angle:
231
+ source: c
232
+ cfunc: rb_complex_arg
233
+ arity: 0
234
+ defined_at: references/ruby/complex.c:2787
235
+ c_body_at: references/ruby/complex.c:1406
236
+ c_effects: []
237
+ purity: leaf
238
+ rbs:
239
+ - "() -> Float"
240
+ rbs_at: references/rbs/core/complex.rbs:375
241
+ phase:
242
+ source: c
243
+ cfunc: rb_complex_arg
244
+ arity: 0
245
+ defined_at: references/ruby/complex.c:2788
246
+ c_body_at: references/ruby/complex.c:1406
247
+ c_effects: []
248
+ purity: leaf
249
+ rectangular:
250
+ source: c
251
+ cfunc: nucomp_rect
252
+ arity: 0
253
+ defined_at: references/ruby/complex.c:2789
254
+ c_body_at: references/ruby/complex.c:1432
255
+ c_effects: []
256
+ purity: leaf
257
+ rect:
258
+ source: c
259
+ cfunc: nucomp_rect
260
+ arity: 0
261
+ defined_at: references/ruby/complex.c:2790
262
+ c_body_at: references/ruby/complex.c:1432
263
+ c_effects: []
264
+ purity: leaf
265
+ rbs:
266
+ - "() -> [ Numeric, Numeric ]"
267
+ rbs_at: references/rbs/core/complex.rbs:708
268
+ polar:
269
+ source: c
270
+ cfunc: nucomp_polar
271
+ arity: 0
272
+ defined_at: references/ruby/complex.c:2791
273
+ c_body_at: references/ruby/complex.c:1456
274
+ c_effects: []
275
+ purity: leaf
276
+ rbs:
277
+ - "() -> [ Numeric, Float ]"
278
+ rbs_at: references/rbs/core/complex.rbs:619
279
+ conjugate:
280
+ source: c
281
+ cfunc: rb_complex_conjugate
282
+ arity: 0
283
+ defined_at: references/ruby/complex.c:2792
284
+ c_body_at: references/ruby/complex.c:1471
285
+ c_effects: []
286
+ purity: leaf
287
+ rbs:
288
+ - "() -> self"
289
+ rbs_at: references/rbs/core/complex.rbs:415
290
+ conj:
291
+ source: c
292
+ cfunc: rb_complex_conjugate
293
+ arity: 0
294
+ defined_at: references/ruby/complex.c:2793
295
+ c_body_at: references/ruby/complex.c:1471
296
+ c_effects: []
297
+ purity: leaf
298
+ rbs:
299
+ - "() -> self"
300
+ rbs_at: references/rbs/core/complex.rbs:404
301
+ real?:
302
+ source: c
303
+ cfunc: nucomp_real_p_m
304
+ arity: 0
305
+ defined_at: references/ruby/complex.c:2795
306
+ c_body_at: references/ruby/complex.c:1484
307
+ c_effects: []
308
+ purity: leaf
309
+ rbs:
310
+ - "() -> false"
311
+ rbs_at: references/rbs/core/complex.rbs:694
312
+ numerator:
313
+ source: c
314
+ cfunc: nucomp_numerator
315
+ arity: 0
316
+ defined_at: references/ruby/complex.c:2797
317
+ c_body_at: references/ruby/complex.c:1531
318
+ c_effects: []
319
+ purity: leaf
320
+ rbs:
321
+ - "() -> Complex"
322
+ rbs_at: references/rbs/core/complex.rbs:587
323
+ denominator:
324
+ source: c
325
+ cfunc: nucomp_denominator
326
+ arity: 0
327
+ defined_at: references/ruby/complex.c:2798
328
+ c_body_at: references/ruby/complex.c:1504
329
+ c_effects: []
330
+ purity: leaf
331
+ rbs:
332
+ - "() -> Integer"
333
+ rbs_at: references/rbs/core/complex.rbs:431
334
+ hash:
335
+ source: c
336
+ cfunc: nucomp_hash
337
+ arity: 0
338
+ defined_at: references/ruby/complex.c:2800
339
+ c_body_at: references/ruby/complex.c:1574
340
+ c_effects: []
341
+ purity: leaf
342
+ rbs:
343
+ - "() -> Integer"
344
+ rbs_at: references/rbs/core/complex.rbs:474
345
+ eql?:
346
+ source: c
347
+ cfunc: nucomp_eql_p
348
+ arity: 1
349
+ defined_at: references/ruby/complex.c:2801
350
+ c_body_at: references/ruby/complex.c:1581
351
+ c_effects: []
352
+ purity: leaf
353
+ to_s:
354
+ source: c
355
+ cfunc: nucomp_to_s
356
+ arity: 0
357
+ defined_at: references/ruby/complex.c:2803
358
+ c_body_at: references/ruby/complex.c:1644
359
+ c_effects:
360
+ - dispatch
361
+ purity: dispatch
362
+ rbs:
363
+ - "() -> String"
364
+ rbs_at: references/rbs/core/complex.rbs:802
365
+ inspect:
366
+ source: c
367
+ cfunc: nucomp_inspect
368
+ arity: 0
369
+ defined_at: references/ruby/complex.c:2804
370
+ c_body_at: references/ruby/complex.c:1663
371
+ c_effects:
372
+ - dispatch
373
+ purity: dispatch
374
+ rbs:
375
+ - "() -> String"
376
+ rbs_at: references/rbs/core/complex.rbs:548
377
+ finite?:
378
+ source: c
379
+ cfunc: rb_complex_finite_p
380
+ arity: 0
381
+ defined_at: references/ruby/complex.c:2809
382
+ c_body_at: references/ruby/complex.c:1689
383
+ c_effects: []
384
+ purity: leaf
385
+ rbs:
386
+ - "() -> bool"
387
+ rbs_at: references/rbs/core/complex.rbs:459
388
+ infinite?:
389
+ source: c
390
+ cfunc: rb_complex_infinite_p
391
+ arity: 0
392
+ defined_at: references/ruby/complex.c:2810
393
+ c_body_at: references/ruby/complex.c:1709
394
+ c_effects: []
395
+ purity: leaf
396
+ rbs:
397
+ - "() -> Integer?"
398
+ rbs_at: references/rbs/core/complex.rbs:534
399
+ to_i:
400
+ source: c
401
+ cfunc: nucomp_to_i
402
+ arity: 0
403
+ defined_at: references/ruby/complex.c:2818
404
+ c_body_at: references/ruby/complex.c:1815
405
+ c_effects:
406
+ - raises
407
+ purity: leaf
408
+ rbs:
409
+ - "() -> Integer"
410
+ rbs_at: references/rbs/core/complex.rbs:770
411
+ to_f:
412
+ source: c
413
+ cfunc: nucomp_to_f
414
+ arity: 0
415
+ defined_at: references/ruby/complex.c:2819
416
+ c_body_at: references/ruby/complex.c:1839
417
+ c_effects:
418
+ - raises
419
+ purity: leaf
420
+ rbs:
421
+ - "() -> Float"
422
+ rbs_at: references/rbs/core/complex.rbs:756
423
+ to_r:
424
+ source: c
425
+ cfunc: nucomp_to_r
426
+ arity: 0
427
+ defined_at: references/ruby/complex.c:2820
428
+ c_body_at: references/ruby/complex.c:1867
429
+ c_effects:
430
+ - raises
431
+ purity: leaf
432
+ rbs:
433
+ - "() -> Rational"
434
+ rbs_at: references/rbs/core/complex.rbs:788
435
+ rationalize:
436
+ source: c
437
+ cfunc: nucomp_rationalize
438
+ arity: -1
439
+ defined_at: references/ruby/complex.c:2821
440
+ c_body_at: references/ruby/complex.c:1917
441
+ c_effects:
442
+ - dispatch
443
+ - raises
444
+ purity: dispatch
445
+ rbs:
446
+ - "(?Numeric eps) -> Rational"
447
+ rbs_at: references/rbs/core/complex.rbs:669
448
+ to_c:
449
+ source: c
450
+ cfunc: nucomp_to_c
451
+ arity: 0
452
+ defined_at: references/ruby/complex.c:2822
453
+ c_body_at: references/ruby/complex.c:1937
454
+ c_effects: []
455
+ purity: leaf
456
+ rbs:
457
+ - "() -> Complex"
458
+ rbs_at: references/rbs/core/complex.rbs:742
459
+ singleton_methods:
460
+ rectangular:
461
+ source: c
462
+ cfunc: nucomp_s_new
463
+ arity: -1
464
+ defined_at: references/ruby/complex.c:2747
465
+ c_body_at: references/ruby/complex.c:493
466
+ c_effects: []
467
+ purity: leaf
468
+ rect:
469
+ source: c
470
+ cfunc: nucomp_s_new
471
+ arity: -1
472
+ defined_at: references/ruby/complex.c:2748
473
+ c_body_at: references/ruby/complex.c:493
474
+ c_effects: []
475
+ purity: leaf
476
+ rbs:
477
+ - "(Numeric, ?Numeric) -> Complex"
478
+ rbs_at: references/rbs/core/complex.rbs:172
479
+ polar:
480
+ source: c
481
+ cfunc: nucomp_s_polar
482
+ arity: -1
483
+ defined_at: references/ruby/complex.c:2749
484
+ c_body_at: references/ruby/complex.c:739
485
+ c_effects: []
486
+ purity: leaf
487
+ rbs:
488
+ - "(Numeric, ?Numeric) -> Complex"
489
+ rbs_at: references/rbs/core/complex.rbs:155
490
+ undefined:
491
+ - allocate
492
+ - new
493
+ - "%"
494
+ - div
495
+ - divmod
496
+ - floor
497
+ - ceil
498
+ - modulo
499
+ - remainder
500
+ - round
501
+ - step
502
+ - truncate
503
+ - i
504
+ - positive?
505
+ - negative?