rigortype 0.1.3 → 0.1.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 (149) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +154 -33
  3. data/lib/rigor/analysis/check_rules.rb +10 -18
  4. data/lib/rigor/analysis/dependency_source_inference/boundary_cross_reporter.rb +75 -0
  5. data/lib/rigor/analysis/dependency_source_inference/builder.rb +47 -21
  6. data/lib/rigor/analysis/dependency_source_inference/gem_resolver.rb +1 -1
  7. data/lib/rigor/analysis/dependency_source_inference/index.rb +32 -3
  8. data/lib/rigor/analysis/dependency_source_inference/walker.rb +1 -1
  9. data/lib/rigor/analysis/dependency_source_inference.rb +1 -0
  10. data/lib/rigor/analysis/diagnostic.rb +0 -2
  11. data/lib/rigor/analysis/fact_store.rb +26 -6
  12. data/lib/rigor/analysis/result.rb +11 -3
  13. data/lib/rigor/analysis/rule_catalog.rb +2 -2
  14. data/lib/rigor/analysis/run_stats.rb +193 -0
  15. data/lib/rigor/analysis/runner.rb +498 -12
  16. data/lib/rigor/analysis/worker_session.rb +327 -0
  17. data/lib/rigor/builtins/imported_refinements.rb +364 -55
  18. data/lib/rigor/builtins/regex_refinement.rb +17 -12
  19. data/lib/rigor/cache/descriptor.rb +1 -1
  20. data/lib/rigor/cache/rbs_descriptor.rb +3 -1
  21. data/lib/rigor/cache/store.rb +39 -6
  22. data/lib/rigor/cli/diff_command.rb +1 -1
  23. data/lib/rigor/cli/sig_gen_command.rb +173 -0
  24. data/lib/rigor/cli/type_of_command.rb +1 -1
  25. data/lib/rigor/cli/type_scan_renderer.rb +1 -1
  26. data/lib/rigor/cli/type_scan_report.rb +2 -2
  27. data/lib/rigor/cli.rb +61 -3
  28. data/lib/rigor/configuration/dependencies.rb +2 -2
  29. data/lib/rigor/configuration.rb +131 -6
  30. data/lib/rigor/environment/bundle_sig_discovery.rb +198 -0
  31. data/lib/rigor/environment/class_registry.rb +12 -3
  32. data/lib/rigor/environment/lockfile_resolver.rb +125 -0
  33. data/lib/rigor/environment/rbs_collection_discovery.rb +126 -0
  34. data/lib/rigor/environment/rbs_coverage_report.rb +112 -0
  35. data/lib/rigor/environment/rbs_loader.rb +194 -6
  36. data/lib/rigor/environment/reflection.rb +152 -0
  37. data/lib/rigor/environment.rb +109 -6
  38. data/lib/rigor/flow_contribution/conflict.rb +2 -2
  39. data/lib/rigor/flow_contribution/element.rb +1 -1
  40. data/lib/rigor/flow_contribution/fact.rb +1 -1
  41. data/lib/rigor/flow_contribution/merge_result.rb +1 -1
  42. data/lib/rigor/flow_contribution/merger.rb +3 -3
  43. data/lib/rigor/flow_contribution.rb +2 -2
  44. data/lib/rigor/inference/acceptance.rb +35 -1
  45. data/lib/rigor/inference/block_parameter_binder.rb +0 -2
  46. data/lib/rigor/inference/builtins/method_catalog.rb +12 -5
  47. data/lib/rigor/inference/builtins/numeric_catalog.rb +15 -4
  48. data/lib/rigor/inference/coverage_scanner.rb +1 -1
  49. data/lib/rigor/inference/expression_typer.rb +77 -11
  50. data/lib/rigor/inference/fallback.rb +1 -1
  51. data/lib/rigor/inference/macro_block_self_type.rb +96 -0
  52. data/lib/rigor/inference/method_dispatcher/block_folding.rb +3 -5
  53. data/lib/rigor/inference/method_dispatcher/constant_folding.rb +29 -41
  54. data/lib/rigor/inference/method_dispatcher/iterator_dispatch.rb +1 -3
  55. data/lib/rigor/inference/method_dispatcher/kernel_dispatch.rb +4 -4
  56. data/lib/rigor/inference/method_dispatcher/literal_string_folding.rb +1 -1
  57. data/lib/rigor/inference/method_dispatcher/method_folding.rb +135 -0
  58. data/lib/rigor/inference/method_dispatcher/overload_selector.rb +7 -12
  59. data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +27 -11
  60. data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +46 -44
  61. data/lib/rigor/inference/method_dispatcher.rb +274 -5
  62. data/lib/rigor/inference/method_parameter_binder.rb +22 -14
  63. data/lib/rigor/inference/narrowing.rb +129 -12
  64. data/lib/rigor/inference/rbs_type_translator.rb +0 -2
  65. data/lib/rigor/inference/scope_indexer.rb +14 -9
  66. data/lib/rigor/inference/statement_evaluator.rb +7 -7
  67. data/lib/rigor/inference/synthetic_method.rb +86 -0
  68. data/lib/rigor/inference/synthetic_method_index.rb +82 -0
  69. data/lib/rigor/inference/synthetic_method_scanner.rb +521 -0
  70. data/lib/rigor/plugin/blueprint.rb +60 -0
  71. data/lib/rigor/plugin/io_boundary.rb +0 -2
  72. data/lib/rigor/plugin/loader.rb +5 -3
  73. data/lib/rigor/plugin/macro/block_as_method.rb +131 -0
  74. data/lib/rigor/plugin/macro/external_file.rb +143 -0
  75. data/lib/rigor/plugin/macro/heredoc_template.rb +201 -0
  76. data/lib/rigor/plugin/macro/trait_registry.rb +198 -0
  77. data/lib/rigor/plugin/macro.rb +31 -0
  78. data/lib/rigor/plugin/manifest.rb +102 -10
  79. data/lib/rigor/plugin/registry.rb +43 -2
  80. data/lib/rigor/plugin/services.rb +1 -1
  81. data/lib/rigor/plugin/type_node_resolver.rb +52 -0
  82. data/lib/rigor/plugin.rb +2 -0
  83. data/lib/rigor/rbs_extended/reporter.rb +91 -0
  84. data/lib/rigor/rbs_extended.rb +131 -32
  85. data/lib/rigor/scope.rb +25 -8
  86. data/lib/rigor/sig_gen/classification.rb +36 -0
  87. data/lib/rigor/sig_gen/generator.rb +1048 -0
  88. data/lib/rigor/sig_gen/layout_index.rb +108 -0
  89. data/lib/rigor/sig_gen/method_candidate.rb +62 -0
  90. data/lib/rigor/sig_gen/observation_collector.rb +391 -0
  91. data/lib/rigor/sig_gen/observed_call.rb +62 -0
  92. data/lib/rigor/sig_gen/path_mapper.rb +116 -0
  93. data/lib/rigor/sig_gen/renderer.rb +157 -0
  94. data/lib/rigor/sig_gen/type_elaborator.rb +92 -0
  95. data/lib/rigor/sig_gen/write_result.rb +48 -0
  96. data/lib/rigor/sig_gen/writer.rb +530 -0
  97. data/lib/rigor/sig_gen.rb +25 -0
  98. data/lib/rigor/trinary.rb +15 -11
  99. data/lib/rigor/type/bot.rb +6 -3
  100. data/lib/rigor/type/bound_method.rb +79 -0
  101. data/lib/rigor/type/combinator.rb +207 -3
  102. data/lib/rigor/type/constant.rb +13 -0
  103. data/lib/rigor/type/hash_shape.rb +0 -2
  104. data/lib/rigor/type/integer_range.rb +7 -7
  105. data/lib/rigor/type/refined.rb +18 -12
  106. data/lib/rigor/type/top.rb +4 -3
  107. data/lib/rigor/type/union.rb +20 -1
  108. data/lib/rigor/type.rb +1 -0
  109. data/lib/rigor/type_node/generic.rb +68 -0
  110. data/lib/rigor/type_node/identifier.rb +38 -0
  111. data/lib/rigor/type_node/indexed_access.rb +41 -0
  112. data/lib/rigor/type_node/integer_literal.rb +29 -0
  113. data/lib/rigor/type_node/name_scope.rb +52 -0
  114. data/lib/rigor/type_node/resolver_chain.rb +56 -0
  115. data/lib/rigor/type_node/string_literal.rb +32 -0
  116. data/lib/rigor/type_node/symbol_literal.rb +28 -0
  117. data/lib/rigor/type_node/union.rb +42 -0
  118. data/lib/rigor/type_node.rb +29 -0
  119. data/lib/rigor/version.rb +1 -1
  120. data/lib/rigor.rb +2 -0
  121. data/sig/rigor/analysis/check_rules/always_truthy_condition_collector.rbs +10 -0
  122. data/sig/rigor/analysis/check_rules/dead_assignment_collector.rbs +10 -0
  123. data/sig/rigor/analysis/dependency_source_inference/gem_resolver.rbs +25 -0
  124. data/sig/rigor/analysis/dependency_source_inference/index.rbs +9 -0
  125. data/sig/rigor/cli/diff_command.rbs +4 -0
  126. data/sig/rigor/cli/explain_command.rbs +4 -0
  127. data/sig/rigor/cli/sig_gen_command.rbs +4 -0
  128. data/sig/rigor/cli/type_scan_command.rbs +3 -0
  129. data/sig/rigor/environment.rbs +8 -2
  130. data/sig/rigor/inference/builtins/method_catalog.rbs +4 -0
  131. data/sig/rigor/inference/builtins/numeric_catalog.rbs +3 -0
  132. data/sig/rigor/inference/builtins.rbs +2 -0
  133. data/sig/rigor/plugin/access_denied_error.rbs +3 -0
  134. data/sig/rigor/plugin/base.rbs +6 -0
  135. data/sig/rigor/plugin/blueprint.rbs +7 -0
  136. data/sig/rigor/plugin/fact_store.rbs +11 -0
  137. data/sig/rigor/plugin/io_boundary.rbs +4 -0
  138. data/sig/rigor/plugin/load_error.rbs +6 -0
  139. data/sig/rigor/plugin/loader.rbs +20 -0
  140. data/sig/rigor/plugin/manifest.rbs +9 -0
  141. data/sig/rigor/plugin/registry.rbs +16 -0
  142. data/sig/rigor/plugin/services.rbs +3 -0
  143. data/sig/rigor/plugin/trust_policy.rbs +4 -0
  144. data/sig/rigor/plugin/type_node_resolver.rbs +3 -0
  145. data/sig/rigor/plugin.rbs +8 -0
  146. data/sig/rigor/scope.rbs +4 -2
  147. data/sig/rigor/type.rbs +28 -6
  148. data/sig/rigor.rbs +35 -2
  149. metadata +90 -1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rigortype
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rigor contributors
@@ -49,6 +49,26 @@ dependencies:
49
49
  - - "<"
50
50
  - !ruby/object:Gem::Version
51
51
  version: '5.0'
52
+ - !ruby/object:Gem::Dependency
53
+ name: parallel_tests
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '4.0'
59
+ - - "<"
60
+ - !ruby/object:Gem::Version
61
+ version: '6.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '4.0'
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: '6.0'
52
72
  - !ruby/object:Gem::Dependency
53
73
  name: rake
54
74
  requirement: !ruby/object:Gem::Requirement
@@ -188,6 +208,7 @@ files:
188
208
  - lib/rigor/analysis/check_rules/dead_assignment_collector.rb
189
209
  - lib/rigor/analysis/check_rules/ivar_write_collector.rb
190
210
  - lib/rigor/analysis/dependency_source_inference.rb
211
+ - lib/rigor/analysis/dependency_source_inference/boundary_cross_reporter.rb
191
212
  - lib/rigor/analysis/dependency_source_inference/builder.rb
192
213
  - lib/rigor/analysis/dependency_source_inference/gem_resolver.rb
193
214
  - lib/rigor/analysis/dependency_source_inference/index.rb
@@ -196,7 +217,9 @@ files:
196
217
  - lib/rigor/analysis/fact_store.rb
197
218
  - lib/rigor/analysis/result.rb
198
219
  - lib/rigor/analysis/rule_catalog.rb
220
+ - lib/rigor/analysis/run_stats.rb
199
221
  - lib/rigor/analysis/runner.rb
222
+ - lib/rigor/analysis/worker_session.rb
200
223
  - lib/rigor/ast.rb
201
224
  - lib/rigor/ast/type_node.rb
202
225
  - lib/rigor/builtins/imported_refinements.rb
@@ -214,6 +237,7 @@ files:
214
237
  - lib/rigor/cli.rb
215
238
  - lib/rigor/cli/diff_command.rb
216
239
  - lib/rigor/cli/explain_command.rb
240
+ - lib/rigor/cli/sig_gen_command.rb
217
241
  - lib/rigor/cli/type_of_command.rb
218
242
  - lib/rigor/cli/type_of_renderer.rb
219
243
  - lib/rigor/cli/type_scan_command.rb
@@ -223,9 +247,14 @@ files:
223
247
  - lib/rigor/configuration/dependencies.rb
224
248
  - lib/rigor/configuration/severity_profile.rb
225
249
  - lib/rigor/environment.rb
250
+ - lib/rigor/environment/bundle_sig_discovery.rb
226
251
  - lib/rigor/environment/class_registry.rb
252
+ - lib/rigor/environment/lockfile_resolver.rb
253
+ - lib/rigor/environment/rbs_collection_discovery.rb
254
+ - lib/rigor/environment/rbs_coverage_report.rb
227
255
  - lib/rigor/environment/rbs_hierarchy.rb
228
256
  - lib/rigor/environment/rbs_loader.rb
257
+ - lib/rigor/environment/reflection.rb
229
258
  - lib/rigor/flow_contribution.rb
230
259
  - lib/rigor/flow_contribution/conflict.rb
231
260
  - lib/rigor/flow_contribution/element.rb
@@ -259,6 +288,7 @@ files:
259
288
  - lib/rigor/inference/expression_typer.rb
260
289
  - lib/rigor/inference/fallback.rb
261
290
  - lib/rigor/inference/fallback_tracer.rb
291
+ - lib/rigor/inference/macro_block_self_type.rb
262
292
  - lib/rigor/inference/method_dispatcher.rb
263
293
  - lib/rigor/inference/method_dispatcher/block_folding.rb
264
294
  - lib/rigor/inference/method_dispatcher/constant_folding.rb
@@ -266,6 +296,7 @@ files:
266
296
  - lib/rigor/inference/method_dispatcher/iterator_dispatch.rb
267
297
  - lib/rigor/inference/method_dispatcher/kernel_dispatch.rb
268
298
  - lib/rigor/inference/method_dispatcher/literal_string_folding.rb
299
+ - lib/rigor/inference/method_dispatcher/method_folding.rb
269
300
  - lib/rigor/inference/method_dispatcher/overload_selector.rb
270
301
  - lib/rigor/inference/method_dispatcher/rbs_dispatch.rb
271
302
  - lib/rigor/inference/method_dispatcher/shape_dispatch.rb
@@ -275,20 +306,43 @@ files:
275
306
  - lib/rigor/inference/rbs_type_translator.rb
276
307
  - lib/rigor/inference/scope_indexer.rb
277
308
  - lib/rigor/inference/statement_evaluator.rb
309
+ - lib/rigor/inference/synthetic_method.rb
310
+ - lib/rigor/inference/synthetic_method_index.rb
311
+ - lib/rigor/inference/synthetic_method_scanner.rb
278
312
  - lib/rigor/plugin.rb
279
313
  - lib/rigor/plugin/access_denied_error.rb
280
314
  - lib/rigor/plugin/base.rb
315
+ - lib/rigor/plugin/blueprint.rb
281
316
  - lib/rigor/plugin/fact_store.rb
282
317
  - lib/rigor/plugin/io_boundary.rb
283
318
  - lib/rigor/plugin/load_error.rb
284
319
  - lib/rigor/plugin/loader.rb
320
+ - lib/rigor/plugin/macro.rb
321
+ - lib/rigor/plugin/macro/block_as_method.rb
322
+ - lib/rigor/plugin/macro/external_file.rb
323
+ - lib/rigor/plugin/macro/heredoc_template.rb
324
+ - lib/rigor/plugin/macro/trait_registry.rb
285
325
  - lib/rigor/plugin/manifest.rb
286
326
  - lib/rigor/plugin/registry.rb
287
327
  - lib/rigor/plugin/services.rb
288
328
  - lib/rigor/plugin/trust_policy.rb
329
+ - lib/rigor/plugin/type_node_resolver.rb
289
330
  - lib/rigor/rbs_extended.rb
331
+ - lib/rigor/rbs_extended/reporter.rb
290
332
  - lib/rigor/reflection.rb
291
333
  - lib/rigor/scope.rb
334
+ - lib/rigor/sig_gen.rb
335
+ - lib/rigor/sig_gen/classification.rb
336
+ - lib/rigor/sig_gen/generator.rb
337
+ - lib/rigor/sig_gen/layout_index.rb
338
+ - lib/rigor/sig_gen/method_candidate.rb
339
+ - lib/rigor/sig_gen/observation_collector.rb
340
+ - lib/rigor/sig_gen/observed_call.rb
341
+ - lib/rigor/sig_gen/path_mapper.rb
342
+ - lib/rigor/sig_gen/renderer.rb
343
+ - lib/rigor/sig_gen/type_elaborator.rb
344
+ - lib/rigor/sig_gen/write_result.rb
345
+ - lib/rigor/sig_gen/writer.rb
292
346
  - lib/rigor/source.rb
293
347
  - lib/rigor/source/node_locator.rb
294
348
  - lib/rigor/source/node_walker.rb
@@ -297,6 +351,7 @@ files:
297
351
  - lib/rigor/type.rb
298
352
  - lib/rigor/type/accepts_result.rb
299
353
  - lib/rigor/type/bot.rb
354
+ - lib/rigor/type/bound_method.rb
300
355
  - lib/rigor/type/combinator.rb
301
356
  - lib/rigor/type/constant.rb
302
357
  - lib/rigor/type/difference.rb
@@ -310,12 +365,46 @@ files:
310
365
  - lib/rigor/type/top.rb
311
366
  - lib/rigor/type/tuple.rb
312
367
  - lib/rigor/type/union.rb
368
+ - lib/rigor/type_node.rb
369
+ - lib/rigor/type_node/generic.rb
370
+ - lib/rigor/type_node/identifier.rb
371
+ - lib/rigor/type_node/indexed_access.rb
372
+ - lib/rigor/type_node/integer_literal.rb
373
+ - lib/rigor/type_node/name_scope.rb
374
+ - lib/rigor/type_node/resolver_chain.rb
375
+ - lib/rigor/type_node/string_literal.rb
376
+ - lib/rigor/type_node/symbol_literal.rb
377
+ - lib/rigor/type_node/union.rb
313
378
  - lib/rigor/version.rb
314
379
  - sig/rigor.rbs
380
+ - sig/rigor/analysis/check_rules/always_truthy_condition_collector.rbs
381
+ - sig/rigor/analysis/check_rules/dead_assignment_collector.rbs
382
+ - sig/rigor/analysis/dependency_source_inference/gem_resolver.rbs
383
+ - sig/rigor/analysis/dependency_source_inference/index.rbs
315
384
  - sig/rigor/analysis/fact_store.rbs
316
385
  - sig/rigor/ast.rbs
386
+ - sig/rigor/cli/diff_command.rbs
387
+ - sig/rigor/cli/explain_command.rbs
388
+ - sig/rigor/cli/sig_gen_command.rbs
389
+ - sig/rigor/cli/type_scan_command.rbs
317
390
  - sig/rigor/environment.rbs
318
391
  - sig/rigor/inference.rbs
392
+ - sig/rigor/inference/builtins.rbs
393
+ - sig/rigor/inference/builtins/method_catalog.rbs
394
+ - sig/rigor/inference/builtins/numeric_catalog.rbs
395
+ - sig/rigor/plugin.rbs
396
+ - sig/rigor/plugin/access_denied_error.rbs
397
+ - sig/rigor/plugin/base.rbs
398
+ - sig/rigor/plugin/blueprint.rbs
399
+ - sig/rigor/plugin/fact_store.rbs
400
+ - sig/rigor/plugin/io_boundary.rbs
401
+ - sig/rigor/plugin/load_error.rbs
402
+ - sig/rigor/plugin/loader.rbs
403
+ - sig/rigor/plugin/manifest.rbs
404
+ - sig/rigor/plugin/registry.rbs
405
+ - sig/rigor/plugin/services.rbs
406
+ - sig/rigor/plugin/trust_policy.rbs
407
+ - sig/rigor/plugin/type_node_resolver.rbs
319
408
  - sig/rigor/rbs_extended.rbs
320
409
  - sig/rigor/reflection.rbs
321
410
  - sig/rigor/scope.rbs