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,365 @@
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/rational.c
6
+ ruby_prelude:
7
+ rbs:
8
+ - references/rbs/core/rational.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
+ Rational:
22
+ parent: Numeric
23
+ defined_at: references/ruby/rational.c:2758
24
+ includes: []
25
+ constants: {}
26
+ aliases: {}
27
+ instance_methods:
28
+ numerator:
29
+ source: c
30
+ cfunc: nurat_numerator
31
+ arity: 0
32
+ defined_at: references/ruby/rational.c:2767
33
+ c_body_at: references/ruby/rational.c:586
34
+ c_effects: []
35
+ purity: leaf
36
+ rbs:
37
+ - "() -> Integer"
38
+ rbs_at: references/rbs/core/rational.rbs:342
39
+ denominator:
40
+ source: c
41
+ cfunc: nurat_denominator
42
+ arity: 0
43
+ defined_at: references/ruby/rational.c:2768
44
+ c_body_at: references/ruby/rational.c:604
45
+ c_effects: []
46
+ purity: leaf
47
+ rbs:
48
+ - "() -> Integer"
49
+ rbs_at: references/rbs/core/rational.rbs:250
50
+ "-@":
51
+ source: c
52
+ cfunc: rb_rational_uminus
53
+ arity: 0
54
+ defined_at: references/ruby/rational.c:2770
55
+ c_body_at: references/ruby/rational.c:621
56
+ c_effects: []
57
+ purity: leaf
58
+ rbs:
59
+ - "() -> Rational"
60
+ rbs_at: references/rbs/core/rational.rbs:138
61
+ "+":
62
+ source: c
63
+ cfunc: rb_rational_plus
64
+ arity: 1
65
+ defined_at: references/ruby/rational.c:2771
66
+ c_body_at: references/ruby/rational.c:745
67
+ c_effects:
68
+ - coerce_fallback
69
+ purity: leaf_when_numeric
70
+ rbs:
71
+ - "(Float) -> Float"
72
+ - "(Complex) -> Complex"
73
+ - "(Numeric) -> Rational"
74
+ rbs_at: references/rbs/core/rational.rbs:109
75
+ "-":
76
+ source: c
77
+ cfunc: rb_rational_minus
78
+ arity: 1
79
+ defined_at: references/ruby/rational.c:2772
80
+ c_body_at: references/ruby/rational.c:786
81
+ c_effects:
82
+ - coerce_fallback
83
+ purity: leaf_when_numeric
84
+ rbs:
85
+ - "(Float) -> Float"
86
+ - "(Complex) -> Complex"
87
+ - "(Numeric) -> Rational"
88
+ rbs_at: references/rbs/core/rational.rbs:125
89
+ "*":
90
+ source: c
91
+ cfunc: rb_rational_mul
92
+ arity: 1
93
+ defined_at: references/ruby/rational.c:2773
94
+ c_body_at: references/ruby/rational.c:884
95
+ c_effects:
96
+ - coerce_fallback
97
+ purity: leaf_when_numeric
98
+ rbs:
99
+ - "(Integer) -> Rational"
100
+ - "(Rational) -> Rational"
101
+ - "[T < Numeric] (T) -> T"
102
+ rbs_at: references/rbs/core/rational.rbs:67
103
+ "/":
104
+ source: c
105
+ cfunc: rb_rational_div
106
+ arity: 1
107
+ defined_at: references/ruby/rational.c:2774
108
+ c_body_at: references/ruby/rational.c:925
109
+ c_effects:
110
+ - coerce_fallback
111
+ - raises
112
+ purity: leaf_when_numeric
113
+ rbs:
114
+ - "(Float) -> Float"
115
+ - "(Complex) -> Complex"
116
+ - "(Numeric) -> Rational"
117
+ rbs_at: references/rbs/core/rational.rbs:152
118
+ quo:
119
+ source: c
120
+ cfunc: rb_rational_div
121
+ arity: 1
122
+ defined_at: references/ruby/rational.c:2775
123
+ c_body_at: references/ruby/rational.c:925
124
+ c_effects:
125
+ - coerce_fallback
126
+ - raises
127
+ purity: leaf_when_numeric
128
+ rbs:
129
+ - "(Float) -> Float"
130
+ - "(Complex) -> Complex"
131
+ - "(Numeric) -> Rational"
132
+ rbs_at: references/rbs/core/rational.rbs:363
133
+ fdiv:
134
+ source: c
135
+ cfunc: nurat_fdiv
136
+ arity: 1
137
+ defined_at: references/ruby/rational.c:2776
138
+ c_body_at: references/ruby/rational.c:973
139
+ c_effects:
140
+ - dispatch
141
+ purity: dispatch
142
+ rbs:
143
+ - "(Numeric) -> Float"
144
+ rbs_at: references/rbs/core/rational.rbs:265
145
+ "**":
146
+ source: c
147
+ cfunc: nurat_expt
148
+ arity: 1
149
+ defined_at: references/ruby/rational.c:2777
150
+ c_body_at: references/ruby/rational.c:1002
151
+ c_effects:
152
+ - coerce_fallback
153
+ - raises
154
+ purity: leaf_when_numeric
155
+ rbs:
156
+ - "(Complex) -> Complex"
157
+ - "(Numeric) -> Numeric"
158
+ rbs_at: references/rbs/core/rational.rbs:84
159
+ "<=>":
160
+ source: c
161
+ cfunc: rb_rational_cmp
162
+ arity: 1
163
+ defined_at: references/ruby/rational.c:2779
164
+ c_body_at: references/ruby/rational.c:1106
165
+ c_effects:
166
+ - coerce_fallback
167
+ purity: leaf_when_numeric
168
+ rbs:
169
+ - "(Integer | Rational) -> Integer"
170
+ - "(untyped) -> Integer?"
171
+ rbs_at: references/rbs/core/rational.rbs:182
172
+ "==":
173
+ source: c
174
+ cfunc: nurat_eqeq_p
175
+ arity: 1
176
+ defined_at: references/ruby/rational.c:2780
177
+ c_body_at: references/ruby/rational.c:1159
178
+ c_effects:
179
+ - dispatch
180
+ purity: dispatch
181
+ rbs:
182
+ - "(untyped) -> bool"
183
+ rbs_at: references/rbs/core/rational.rbs:197
184
+ coerce:
185
+ source: c
186
+ cfunc: nurat_coerce
187
+ arity: 1
188
+ defined_at: references/ruby/rational.c:2781
189
+ c_body_at: references/ruby/rational.c:1201
190
+ c_effects:
191
+ - raises
192
+ purity: leaf
193
+ rbs:
194
+ - "(Numeric) -> [ Numeric, Numeric ]"
195
+ rbs_at: references/rbs/core/rational.rbs:237
196
+ positive?:
197
+ source: c
198
+ cfunc: nurat_positive_p
199
+ arity: 0
200
+ defined_at: references/ruby/rational.c:2783
201
+ c_body_at: references/ruby/rational.c:1238
202
+ c_effects: []
203
+ purity: leaf
204
+ rbs:
205
+ - "() -> bool"
206
+ rbs_at: references/rbs/core/rational.rbs:352
207
+ negative?:
208
+ source: c
209
+ cfunc: nurat_negative_p
210
+ arity: 0
211
+ defined_at: references/ruby/rational.c:2784
212
+ c_body_at: references/ruby/rational.c:1251
213
+ c_effects: []
214
+ purity: leaf
215
+ rbs:
216
+ - "() -> bool"
217
+ rbs_at: references/rbs/core/rational.rbs:329
218
+ abs:
219
+ source: c
220
+ cfunc: rb_rational_abs
221
+ arity: 0
222
+ defined_at: references/ruby/rational.c:2785
223
+ c_body_at: references/ruby/rational.c:1270
224
+ c_effects: []
225
+ purity: leaf
226
+ rbs:
227
+ - "() -> Rational"
228
+ rbs_at: references/rbs/core/rational.rbs:209
229
+ magnitude:
230
+ source: c
231
+ cfunc: rb_rational_abs
232
+ arity: 0
233
+ defined_at: references/ruby/rational.c:2786
234
+ c_body_at: references/ruby/rational.c:1270
235
+ c_effects: []
236
+ purity: leaf
237
+ floor:
238
+ source: c
239
+ cfunc: nurat_floor_n
240
+ arity: -1
241
+ defined_at: references/ruby/rational.c:2788
242
+ c_body_at: references/ruby/rational.c:1466
243
+ c_effects: []
244
+ purity: leaf
245
+ rbs:
246
+ - "() -> Integer"
247
+ - "(Integer digits) -> (Integer | Rational)"
248
+ rbs_at: references/rbs/core/rational.rbs:290
249
+ ceil:
250
+ source: c
251
+ cfunc: nurat_ceil_n
252
+ arity: -1
253
+ defined_at: references/ruby/rational.c:2789
254
+ c_body_at: references/ruby/rational.c:1496
255
+ c_effects: []
256
+ purity: leaf
257
+ rbs:
258
+ - "() -> Integer"
259
+ - "(Integer digits) -> (Integer | Rational)"
260
+ rbs_at: references/rbs/core/rational.rbs:234
261
+ truncate:
262
+ source: c
263
+ cfunc: nurat_truncate_n
264
+ arity: -1
265
+ defined_at: references/ruby/rational.c:2790
266
+ c_body_at: references/ruby/rational.c:1526
267
+ c_effects: []
268
+ purity: leaf
269
+ rbs:
270
+ - "() -> Integer"
271
+ - "(Integer ndigits) -> (Integer | Rational)"
272
+ rbs_at: references/rbs/core/rational.rbs:500
273
+ round:
274
+ source: c
275
+ cfunc: nurat_round_n
276
+ arity: -1
277
+ defined_at: references/ruby/rational.c:2791
278
+ c_body_at: references/ruby/rational.c:1569
279
+ c_effects: []
280
+ purity: leaf
281
+ rbs:
282
+ - "(?half: :up | :down | :even) -> Integer"
283
+ - "(Integer digits, ?half: :up | :down | :even) -> (Integer | Rational)"
284
+ rbs_at: references/rbs/core/rational.rbs:422
285
+ to_i:
286
+ source: c
287
+ cfunc: nurat_truncate
288
+ arity: 0
289
+ defined_at: references/ruby/rational.c:2793
290
+ c_body_at: references/ruby/rational.c:1309
291
+ c_effects: []
292
+ purity: leaf
293
+ rbs:
294
+ - "() -> Integer"
295
+ rbs_at: references/rbs/core/rational.rbs:452
296
+ to_f:
297
+ source: c
298
+ cfunc: nurat_to_f
299
+ arity: 0
300
+ defined_at: references/ruby/rational.c:2794
301
+ c_body_at: references/ruby/rational.c:1607
302
+ c_effects: []
303
+ purity: leaf
304
+ rbs:
305
+ - "() -> Float"
306
+ rbs_at: references/rbs/core/rational.rbs:436
307
+ to_r:
308
+ source: c
309
+ cfunc: nurat_to_r
310
+ arity: 0
311
+ defined_at: references/ruby/rational.c:2795
312
+ c_body_at: references/ruby/rational.c:1622
313
+ c_effects: []
314
+ purity: leaf
315
+ rbs:
316
+ - "() -> Rational"
317
+ rbs_at: references/rbs/core/rational.rbs:463
318
+ rationalize:
319
+ source: c
320
+ cfunc: nurat_rationalize
321
+ arity: -1
322
+ defined_at: references/ruby/rational.c:2796
323
+ c_body_at: references/ruby/rational.c:1756
324
+ c_effects: []
325
+ purity: leaf
326
+ rbs:
327
+ - "(?Numeric eps) -> Rational"
328
+ rbs_at: references/rbs/core/rational.rbs:380
329
+ hash:
330
+ source: c
331
+ cfunc: nurat_hash
332
+ arity: 0
333
+ defined_at: references/ruby/rational.c:2798
334
+ c_body_at: references/ruby/rational.c:1803
335
+ c_effects: []
336
+ purity: leaf
337
+ rbs:
338
+ - "() -> Integer"
339
+ rbs_at: references/rbs/core/rational.rbs:298
340
+ to_s:
341
+ source: c
342
+ cfunc: nurat_to_s
343
+ arity: 0
344
+ defined_at: references/ruby/rational.c:2800
345
+ c_body_at: references/ruby/rational.c:1833
346
+ c_effects: []
347
+ purity: leaf
348
+ rbs:
349
+ - "() -> String"
350
+ rbs_at: references/rbs/core/rational.rbs:475
351
+ inspect:
352
+ source: c
353
+ cfunc: nurat_inspect
354
+ arity: 0
355
+ defined_at: references/ruby/rational.c:2801
356
+ c_body_at: references/ruby/rational.c:1849
357
+ c_effects: []
358
+ purity: leaf
359
+ rbs:
360
+ - "() -> String"
361
+ rbs_at: references/rbs/core/rational.rbs:310
362
+ singleton_methods: {}
363
+ undefined:
364
+ - allocate
365
+ - new