rigortype 0.2.7 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/data/core_overlay/csv.rbs +28 -0
  4. data/data/core_overlay/psych.rbs +22 -0
  5. data/docs/handbook/01-getting-started.md +9 -1
  6. data/docs/handbook/02-everyday-types.md +4 -1
  7. data/docs/handbook/08-understanding-errors.md +3 -3
  8. data/docs/manual/01-installation.md +1 -0
  9. data/docs/manual/02-cli-reference.md +16 -7
  10. data/docs/manual/04-diagnostics.md +7 -4
  11. data/docs/manual/06-baseline.md +5 -2
  12. data/docs/manual/07-plugins.md +1 -1
  13. data/docs/manual/14-rails-quickstart.md +4 -2
  14. data/docs/manual/15-type-protection-coverage.md +27 -4
  15. data/docs/manual/plugins/rigor-actionpack.md +1 -1
  16. data/docs/manual/plugins/rigor-activerecord.md +12 -5
  17. data/docs/manual/plugins/rigor-rails-routes.md +11 -0
  18. data/lib/rigor/analysis/baseline.rb +56 -96
  19. data/lib/rigor/analysis/buffer_binding.rb +13 -20
  20. data/lib/rigor/analysis/check_rules/always_truthy_condition_collector.rb +29 -48
  21. data/lib/rigor/analysis/check_rules/dead_assignment_collector.rb +35 -54
  22. data/lib/rigor/analysis/check_rules/ivar_write_collector.rb +23 -37
  23. data/lib/rigor/analysis/check_rules/main_pass_collector.rb +16 -23
  24. data/lib/rigor/analysis/check_rules/rule_walk.rb +48 -71
  25. data/lib/rigor/analysis/check_rules/self_closedness_scanner.rb +19 -28
  26. data/lib/rigor/analysis/check_rules/unreachable_clause_collector.rb +48 -67
  27. data/lib/rigor/analysis/check_rules.rb +174 -274
  28. data/lib/rigor/analysis/dependency_recorder.rb +26 -38
  29. data/lib/rigor/analysis/dependency_source_inference/boundary_cross_reporter.rb +13 -25
  30. data/lib/rigor/analysis/dependency_source_inference/builder.rb +17 -30
  31. data/lib/rigor/analysis/dependency_source_inference/gem_resolver.rb +15 -26
  32. data/lib/rigor/analysis/dependency_source_inference/index.rb +45 -76
  33. data/lib/rigor/analysis/dependency_source_inference/return_type_heuristic.rb +23 -40
  34. data/lib/rigor/analysis/dependency_source_inference/walker.rb +50 -83
  35. data/lib/rigor/analysis/dependency_source_inference.rb +6 -10
  36. data/lib/rigor/analysis/diagnostic.rb +48 -75
  37. data/lib/rigor/analysis/erb_template_detector.rb +13 -18
  38. data/lib/rigor/analysis/fact_store.rb +12 -22
  39. data/lib/rigor/analysis/incremental.rb +47 -63
  40. data/lib/rigor/analysis/incremental_session.rb +74 -100
  41. data/lib/rigor/analysis/project_scan.rb +12 -23
  42. data/lib/rigor/analysis/result.rb +3 -5
  43. data/lib/rigor/analysis/rule_catalog.rb +67 -95
  44. data/lib/rigor/analysis/run_stats.rb +38 -61
  45. data/lib/rigor/analysis/runner/diagnostic_aggregator.rb +101 -160
  46. data/lib/rigor/analysis/runner/pool_coordinator.rb +121 -188
  47. data/lib/rigor/analysis/runner/project_pre_passes.rb +62 -96
  48. data/lib/rigor/analysis/runner/run_snapshots.rb +12 -18
  49. data/lib/rigor/analysis/runner.rb +220 -333
  50. data/lib/rigor/analysis/self_call_resolution_recorder.rb +30 -43
  51. data/lib/rigor/analysis/worker_session.rb +64 -102
  52. data/lib/rigor/ast/type_node.rb +6 -8
  53. data/lib/rigor/ast.rb +6 -10
  54. data/lib/rigor/bleeding_edge.rb +27 -35
  55. data/lib/rigor/builtins/hkt_builtins.rb +7 -14
  56. data/lib/rigor/builtins/imported_refinements.rb +106 -149
  57. data/lib/rigor/builtins/predefined_constant_refinements.rb +51 -65
  58. data/lib/rigor/builtins/regex_refinement.rb +32 -43
  59. data/lib/rigor/builtins/static_return_refinements.rb +57 -81
  60. data/lib/rigor/cache/descriptor.rb +58 -94
  61. data/lib/rigor/cache/incremental_snapshot.rb +32 -48
  62. data/lib/rigor/cache/rbs_cache_producer.rb +10 -15
  63. data/lib/rigor/cache/rbs_class_ancestor_table.rb +10 -16
  64. data/lib/rigor/cache/rbs_class_type_param_names.rb +10 -16
  65. data/lib/rigor/cache/rbs_constant_table.rb +8 -13
  66. data/lib/rigor/cache/rbs_descriptor.rb +8 -13
  67. data/lib/rigor/cache/rbs_environment.rb +11 -19
  68. data/lib/rigor/cache/rbs_environment_marshal_patch.rb +11 -19
  69. data/lib/rigor/cache/rbs_known_class_names.rb +8 -12
  70. data/lib/rigor/cache/store.rb +248 -186
  71. data/lib/rigor/cli/annotate_command.rb +51 -88
  72. data/lib/rigor/cli/baseline_command.rb +10 -17
  73. data/lib/rigor/cli/check_command.rb +121 -199
  74. data/lib/rigor/cli/check_runner_factory.rb +8 -14
  75. data/lib/rigor/cli/ci_detector.rb +9 -14
  76. data/lib/rigor/cli/command.rb +8 -14
  77. data/lib/rigor/cli/coverage_command.rb +62 -48
  78. data/lib/rigor/cli/coverage_mutation.rb +14 -19
  79. data/lib/rigor/cli/coverage_report.rb +0 -2
  80. data/lib/rigor/cli/coverage_scan.rb +7 -11
  81. data/lib/rigor/cli/diagnostic_formats.rb +46 -62
  82. data/lib/rigor/cli/diff_command.rb +10 -20
  83. data/lib/rigor/cli/docs_command.rb +26 -40
  84. data/lib/rigor/cli/doctor_command.rb +8 -9
  85. data/lib/rigor/cli/explain_command.rb +4 -7
  86. data/lib/rigor/cli/fused_protection_renderer.rb +4 -5
  87. data/lib/rigor/cli/fused_protection_report.rb +6 -8
  88. data/lib/rigor/cli/lsp_command.rb +11 -19
  89. data/lib/rigor/cli/mcp_command.rb +4 -6
  90. data/lib/rigor/cli/mutation_protection_renderer.rb +3 -4
  91. data/lib/rigor/cli/mutation_protection_report.rb +6 -9
  92. data/lib/rigor/cli/options.rb +11 -19
  93. data/lib/rigor/cli/plugin_command.rb +18 -30
  94. data/lib/rigor/cli/plugins_command.rb +29 -51
  95. data/lib/rigor/cli/plugins_renderer.rb +12 -20
  96. data/lib/rigor/cli/prism_colorizer.rb +13 -19
  97. data/lib/rigor/cli/protection_fork_scan.rb +55 -0
  98. data/lib/rigor/cli/protection_renderer.rb +5 -7
  99. data/lib/rigor/cli/protection_report.rb +34 -18
  100. data/lib/rigor/cli/renderable.rb +4 -6
  101. data/lib/rigor/cli/show_bleedingedge_command.rb +5 -8
  102. data/lib/rigor/cli/sig_gen_command.rb +14 -26
  103. data/lib/rigor/cli/skill_command.rb +30 -47
  104. data/lib/rigor/cli/skill_describe.rb +40 -64
  105. data/lib/rigor/cli/trace_command.rb +9 -16
  106. data/lib/rigor/cli/trace_renderer.rb +35 -51
  107. data/lib/rigor/cli/triage_command.rb +6 -10
  108. data/lib/rigor/cli/triage_renderer.rb +1 -2
  109. data/lib/rigor/cli/type_of_command.rb +14 -23
  110. data/lib/rigor/cli/type_of_renderer.rb +3 -5
  111. data/lib/rigor/cli/type_scan_command.rb +6 -10
  112. data/lib/rigor/cli/type_scan_renderer.rb +3 -5
  113. data/lib/rigor/cli/type_scan_report.rb +2 -3
  114. data/lib/rigor/cli/upgrade_command.rb +2 -3
  115. data/lib/rigor/cli.rb +16 -28
  116. data/lib/rigor/config_audit.rb +35 -44
  117. data/lib/rigor/configuration/dependencies.rb +41 -70
  118. data/lib/rigor/configuration/severity_profile.rb +28 -42
  119. data/lib/rigor/configuration.rb +150 -241
  120. data/lib/rigor/environment/bundle_sig_discovery.rb +74 -118
  121. data/lib/rigor/environment/class_registry.rb +19 -26
  122. data/lib/rigor/environment/constant_type_cache_holder.rb +14 -21
  123. data/lib/rigor/environment/hkt_registry_holder.rb +6 -12
  124. data/lib/rigor/environment/lockfile_resolver.rb +31 -47
  125. data/lib/rigor/environment/missing_gem_constant_index.rb +128 -0
  126. data/lib/rigor/environment/rbs_collection_discovery.rb +39 -63
  127. data/lib/rigor/environment/rbs_coverage_report.rb +24 -42
  128. data/lib/rigor/environment/rbs_loader.rb +420 -518
  129. data/lib/rigor/environment/reflection.rb +28 -53
  130. data/lib/rigor/environment/reporters.rb +13 -24
  131. data/lib/rigor/environment.rb +225 -304
  132. data/lib/rigor/flow_contribution/conflict.rb +16 -27
  133. data/lib/rigor/flow_contribution/element.rb +7 -12
  134. data/lib/rigor/flow_contribution/fact.rb +33 -57
  135. data/lib/rigor/flow_contribution/merge_result.rb +6 -9
  136. data/lib/rigor/flow_contribution/merger.rb +32 -47
  137. data/lib/rigor/flow_contribution.rb +37 -55
  138. data/lib/rigor/inference/acceptance.rb +133 -219
  139. data/lib/rigor/inference/block_parameter_binder.rb +52 -82
  140. data/lib/rigor/inference/body_fixpoint.rb +22 -30
  141. data/lib/rigor/inference/budget_trace.rb +43 -63
  142. data/lib/rigor/inference/builtins/array_catalog.rb +4 -6
  143. data/lib/rigor/inference/builtins/comparable_catalog.rb +4 -6
  144. data/lib/rigor/inference/builtins/complex_catalog.rb +13 -19
  145. data/lib/rigor/inference/builtins/date_catalog.rb +38 -67
  146. data/lib/rigor/inference/builtins/encoding_catalog.rb +22 -36
  147. data/lib/rigor/inference/builtins/enumerable_catalog.rb +4 -6
  148. data/lib/rigor/inference/builtins/exception_catalog.rb +38 -57
  149. data/lib/rigor/inference/builtins/hash_catalog.rb +9 -14
  150. data/lib/rigor/inference/builtins/method_catalog.rb +29 -48
  151. data/lib/rigor/inference/builtins/numeric_catalog.rb +13 -18
  152. data/lib/rigor/inference/builtins/pathname_catalog.rb +8 -13
  153. data/lib/rigor/inference/builtins/proc_catalog.rb +38 -62
  154. data/lib/rigor/inference/builtins/random_catalog.rb +21 -32
  155. data/lib/rigor/inference/builtins/range_catalog.rb +12 -21
  156. data/lib/rigor/inference/builtins/rational_catalog.rb +9 -15
  157. data/lib/rigor/inference/builtins/re_catalog.rb +29 -48
  158. data/lib/rigor/inference/builtins/set_catalog.rb +18 -27
  159. data/lib/rigor/inference/builtins/string_catalog.rb +12 -19
  160. data/lib/rigor/inference/builtins/struct_catalog.rb +18 -30
  161. data/lib/rigor/inference/builtins/time_catalog.rb +28 -44
  162. data/lib/rigor/inference/closure_escape_analyzer.rb +44 -67
  163. data/lib/rigor/inference/coverage_scanner.rb +13 -18
  164. data/lib/rigor/inference/def_return_typer.rb +8 -14
  165. data/lib/rigor/inference/dynamic_origin.rb +23 -20
  166. data/lib/rigor/inference/expression_typer.rb +794 -1154
  167. data/lib/rigor/inference/fallback.rb +8 -12
  168. data/lib/rigor/inference/fallback_tracer.rb +4 -10
  169. data/lib/rigor/inference/flow_tracer.rb +25 -36
  170. data/lib/rigor/inference/fork_map.rb +87 -0
  171. data/lib/rigor/inference/hkt_body.rb +45 -68
  172. data/lib/rigor/inference/hkt_body_parser.rb +33 -52
  173. data/lib/rigor/inference/hkt_reducer.rb +38 -59
  174. data/lib/rigor/inference/hkt_registry.rb +50 -76
  175. data/lib/rigor/inference/indexed_narrowing.rb +55 -81
  176. data/lib/rigor/inference/macro_block_self_type.rb +21 -34
  177. data/lib/rigor/inference/method_dispatcher/array_to_h_folding.rb +11 -18
  178. data/lib/rigor/inference/method_dispatcher/block_folding.rb +49 -83
  179. data/lib/rigor/inference/method_dispatcher/call_context.rb +16 -23
  180. data/lib/rigor/inference/method_dispatcher/cgi_folding.rb +13 -22
  181. data/lib/rigor/inference/method_dispatcher/constant_folding.rb +307 -454
  182. data/lib/rigor/inference/method_dispatcher/data_folding.rb +24 -34
  183. data/lib/rigor/inference/method_dispatcher/file_folding.rb +22 -37
  184. data/lib/rigor/inference/method_dispatcher/iterator_dispatch.rb +52 -81
  185. data/lib/rigor/inference/method_dispatcher/kernel_dispatch.rb +51 -78
  186. data/lib/rigor/inference/method_dispatcher/literal_string_folding.rb +60 -97
  187. data/lib/rigor/inference/method_dispatcher/math_folding.rb +23 -34
  188. data/lib/rigor/inference/method_dispatcher/member_shape_projection.rb +18 -26
  189. data/lib/rigor/inference/method_dispatcher/method_folding.rb +37 -71
  190. data/lib/rigor/inference/method_dispatcher/overload_selector.rb +114 -182
  191. data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +122 -193
  192. data/lib/rigor/inference/method_dispatcher/receiver_affinity.rb +15 -24
  193. data/lib/rigor/inference/method_dispatcher/reduce_folding.rb +64 -93
  194. data/lib/rigor/inference/method_dispatcher/regexp_folding.rb +31 -45
  195. data/lib/rigor/inference/method_dispatcher/set_folding.rb +6 -9
  196. data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +356 -511
  197. data/lib/rigor/inference/method_dispatcher/shellwords_folding.rb +22 -32
  198. data/lib/rigor/inference/method_dispatcher/singleton_folding.rb +15 -21
  199. data/lib/rigor/inference/method_dispatcher/struct_folding.rb +66 -82
  200. data/lib/rigor/inference/method_dispatcher/time_folding.rb +10 -15
  201. data/lib/rigor/inference/method_dispatcher/uri_folding.rb +9 -13
  202. data/lib/rigor/inference/method_dispatcher.rb +378 -524
  203. data/lib/rigor/inference/method_parameter_binder.rb +81 -114
  204. data/lib/rigor/inference/multi_target_binder.rb +51 -68
  205. data/lib/rigor/inference/mutation_widening.rb +115 -158
  206. data/lib/rigor/inference/narrowing.rb +627 -727
  207. data/lib/rigor/inference/origin_lookup.rb +38 -0
  208. data/lib/rigor/inference/parameter_inference_collector.rb +154 -109
  209. data/lib/rigor/inference/precision_scanner.rb +26 -35
  210. data/lib/rigor/inference/project_patched_methods.rb +20 -32
  211. data/lib/rigor/inference/project_patched_scanner.rb +23 -37
  212. data/lib/rigor/inference/protection_scanner.rb +16 -18
  213. data/lib/rigor/inference/rbs_type_translator.rb +49 -66
  214. data/lib/rigor/inference/scope_indexer.rb +473 -821
  215. data/lib/rigor/inference/statement_evaluator.rb +754 -1114
  216. data/lib/rigor/inference/struct_fold_safety.rb +34 -48
  217. data/lib/rigor/inference/synthetic_method.rb +9 -16
  218. data/lib/rigor/inference/synthetic_method_index.rb +20 -35
  219. data/lib/rigor/inference/synthetic_method_scanner.rb +63 -103
  220. data/lib/rigor/language_server/buffer_resolution.rb +6 -9
  221. data/lib/rigor/language_server/buffer_table.rb +11 -18
  222. data/lib/rigor/language_server/completion_provider.rb +69 -116
  223. data/lib/rigor/language_server/debouncer.rb +16 -25
  224. data/lib/rigor/language_server/diagnostic_publisher.rb +26 -40
  225. data/lib/rigor/language_server/document_symbol_provider.rb +14 -19
  226. data/lib/rigor/language_server/folding_range_provider.rb +11 -19
  227. data/lib/rigor/language_server/hover_provider.rb +8 -11
  228. data/lib/rigor/language_server/hover_renderer.rb +56 -93
  229. data/lib/rigor/language_server/loop.rb +14 -19
  230. data/lib/rigor/language_server/project_context.rb +46 -74
  231. data/lib/rigor/language_server/selection_range_provider.rb +9 -12
  232. data/lib/rigor/language_server/server.rb +55 -83
  233. data/lib/rigor/language_server/signature_help_provider.rb +29 -46
  234. data/lib/rigor/language_server/synchronized_writer.rb +4 -7
  235. data/lib/rigor/language_server/uri.rb +8 -13
  236. data/lib/rigor/language_server.rb +4 -6
  237. data/lib/rigor/mcp/loop.rb +2 -3
  238. data/lib/rigor/mcp/server.rb +4 -7
  239. data/lib/rigor/mcp.rb +3 -6
  240. data/lib/rigor/plugin/access_denied_error.rb +5 -8
  241. data/lib/rigor/plugin/additional_initializer.rb +21 -31
  242. data/lib/rigor/plugin/base.rb +335 -518
  243. data/lib/rigor/plugin/blueprint.rb +14 -23
  244. data/lib/rigor/plugin/box.rb +18 -29
  245. data/lib/rigor/plugin/fact_store.rb +16 -26
  246. data/lib/rigor/plugin/inflector.rb +37 -53
  247. data/lib/rigor/plugin/io_boundary.rb +33 -56
  248. data/lib/rigor/plugin/isolation.rb +42 -55
  249. data/lib/rigor/plugin/load_error.rb +10 -15
  250. data/lib/rigor/plugin/loader.rb +30 -49
  251. data/lib/rigor/plugin/macro/block_as_method.rb +20 -32
  252. data/lib/rigor/plugin/macro/heredoc_template.rb +35 -58
  253. data/lib/rigor/plugin/macro/nested_class_template.rb +22 -36
  254. data/lib/rigor/plugin/macro/trait_registry.rb +34 -51
  255. data/lib/rigor/plugin/macro.rb +10 -15
  256. data/lib/rigor/plugin/manifest.rb +85 -144
  257. data/lib/rigor/plugin/node_context.rb +14 -22
  258. data/lib/rigor/plugin/node_rule_walk.rb +49 -74
  259. data/lib/rigor/plugin/protocol_contract.rb +25 -39
  260. data/lib/rigor/plugin/registry.rb +132 -205
  261. data/lib/rigor/plugin/services.rb +21 -33
  262. data/lib/rigor/plugin/source_rbs_synthesis_reporter.rb +11 -19
  263. data/lib/rigor/plugin/trust_policy.rb +24 -38
  264. data/lib/rigor/plugin/type_node_resolver.rb +15 -24
  265. data/lib/rigor/protection/diagnostic_oracle.rb +11 -13
  266. data/lib/rigor/protection/mutation_scanner.rb +27 -35
  267. data/lib/rigor/protection/mutator.rb +50 -70
  268. data/lib/rigor/protection/test_suite_oracle.rb +20 -27
  269. data/lib/rigor/rbs_extended/conformance_checker.rb +48 -68
  270. data/lib/rigor/rbs_extended/hkt_directives.rb +28 -54
  271. data/lib/rigor/rbs_extended/reporter.rb +24 -40
  272. data/lib/rigor/rbs_extended.rb +107 -197
  273. data/lib/rigor/reflection.rb +68 -86
  274. data/lib/rigor/scope/discovery_index.rb +14 -19
  275. data/lib/rigor/scope.rb +255 -310
  276. data/lib/rigor/sig_gen/classification.rb +6 -10
  277. data/lib/rigor/sig_gen/generator.rb +197 -323
  278. data/lib/rigor/sig_gen/layout_index.rb +12 -20
  279. data/lib/rigor/sig_gen/method_candidate.rb +12 -17
  280. data/lib/rigor/sig_gen/observation_collector.rb +38 -70
  281. data/lib/rigor/sig_gen/observed_call.rb +13 -23
  282. data/lib/rigor/sig_gen/path_mapper.rb +17 -29
  283. data/lib/rigor/sig_gen/renderer.rb +7 -13
  284. data/lib/rigor/sig_gen/type_elaborator.rb +15 -28
  285. data/lib/rigor/sig_gen/write_result.rb +8 -16
  286. data/lib/rigor/sig_gen/writer.rb +95 -174
  287. data/lib/rigor/sig_gen.rb +3 -6
  288. data/lib/rigor/signature_path_audit.rb +24 -30
  289. data/lib/rigor/source/constant_path.rb +10 -14
  290. data/lib/rigor/source/literals.rb +31 -45
  291. data/lib/rigor/source/node_locator.rb +9 -11
  292. data/lib/rigor/source/node_walker.rb +9 -13
  293. data/lib/rigor/source.rb +3 -4
  294. data/lib/rigor/testing.rb +16 -20
  295. data/lib/rigor/triage/catalogue.rb +38 -62
  296. data/lib/rigor/triage.rb +31 -52
  297. data/lib/rigor/trinary.rb +9 -13
  298. data/lib/rigor/type/acceptance_router.rb +4 -6
  299. data/lib/rigor/type/accepts_result.rb +10 -14
  300. data/lib/rigor/type/app.rb +19 -27
  301. data/lib/rigor/type/bot.rb +4 -6
  302. data/lib/rigor/type/bound_method.rb +10 -15
  303. data/lib/rigor/type/combinator.rb +165 -257
  304. data/lib/rigor/type/constant.rb +23 -34
  305. data/lib/rigor/type/data_class.rb +10 -15
  306. data/lib/rigor/type/data_instance.rb +14 -20
  307. data/lib/rigor/type/difference.rb +21 -32
  308. data/lib/rigor/type/dynamic.rb +3 -5
  309. data/lib/rigor/type/hash_shape.rb +32 -18
  310. data/lib/rigor/type/integer_range.rb +11 -16
  311. data/lib/rigor/type/intersection.rb +27 -42
  312. data/lib/rigor/type/nominal.rb +10 -15
  313. data/lib/rigor/type/plain_lattice.rb +9 -13
  314. data/lib/rigor/type/refined.rb +67 -114
  315. data/lib/rigor/type/singleton.rb +4 -6
  316. data/lib/rigor/type/struct_class.rb +11 -16
  317. data/lib/rigor/type/struct_instance.rb +15 -21
  318. data/lib/rigor/type/tuple.rb +14 -19
  319. data/lib/rigor/type/union.rb +30 -42
  320. data/lib/rigor/type_node/generic.rb +14 -26
  321. data/lib/rigor/type_node/identifier.rb +12 -19
  322. data/lib/rigor/type_node.rb +3 -12
  323. data/lib/rigor/value_semantics.rb +16 -21
  324. data/lib/rigor/version.rb +1 -1
  325. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable/analyzer.rb +18 -30
  326. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable/channel_discoverer.rb +16 -29
  327. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable/channel_index.rb +12 -23
  328. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable.rb +22 -39
  329. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer/analyzer.rb +26 -46
  330. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer/mailer_discoverer.rb +51 -87
  331. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer/mailer_index.rb +10 -17
  332. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer.rb +26 -39
  333. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/analyzer.rb +141 -184
  334. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/controller_discoverer.rb +30 -51
  335. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/controller_index.rb +57 -92
  336. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack.rb +92 -108
  337. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/analyzer.rb +13 -22
  338. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/job_discoverer.rb +15 -25
  339. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/job_index.rb +8 -13
  340. data/plugins/rigor-activejob/lib/rigor/plugin/activejob.rb +16 -24
  341. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/analyzer.rb +40 -48
  342. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_discoverer.rb +140 -129
  343. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_index.rb +56 -59
  344. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_parser.rb +27 -41
  345. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_table.rb +16 -24
  346. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/structure_sql_parser.rb +172 -0
  347. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord.rb +168 -241
  348. data/plugins/rigor-activerecord/lib/rigor-activerecord.rb +3 -5
  349. data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage/analyzer.rb +8 -14
  350. data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage/attachment_discoverer.rb +9 -15
  351. data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage/attachment_index.rb +4 -7
  352. data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage.rb +23 -41
  353. data/plugins/rigor-activestorage/lib/rigor-activestorage.rb +3 -5
  354. data/plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext.rb +6 -10
  355. data/plugins/rigor-activesupport-core-ext/lib/rigor-activesupport-core-ext.rb +8 -11
  356. data/plugins/rigor-activesupport-core-ext/sig/active_support/core_ext.rbs +32 -0
  357. data/plugins/rigor-devise/lib/rigor/plugin/devise.rb +30 -45
  358. data/plugins/rigor-devise/lib/rigor-devise.rb +3 -5
  359. data/plugins/rigor-dry-schema/lib/rigor/plugin/dry_schema/schema_scanner.rb +43 -69
  360. data/plugins/rigor-dry-schema/lib/rigor/plugin/dry_schema.rb +26 -35
  361. data/plugins/rigor-dry-schema/lib/rigor-dry-schema.rb +3 -5
  362. data/plugins/rigor-dry-struct/lib/rigor/plugin/dry_struct.rb +30 -47
  363. data/plugins/rigor-dry-struct/lib/rigor-dry-struct.rb +3 -5
  364. data/plugins/rigor-dry-types/lib/rigor/plugin/dry_types/alias_scanner.rb +67 -113
  365. data/plugins/rigor-dry-types/lib/rigor/plugin/dry_types.rb +29 -46
  366. data/plugins/rigor-dry-types/lib/rigor-dry-types.rb +3 -5
  367. data/plugins/rigor-dry-validation/lib/rigor/plugin/dry_validation/contract_scanner.rb +13 -20
  368. data/plugins/rigor-dry-validation/lib/rigor/plugin/dry_validation.rb +14 -23
  369. data/plugins/rigor-dry-validation/lib/rigor-dry-validation.rb +2 -3
  370. data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot/analyzer.rb +22 -37
  371. data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot/factory_discoverer.rb +28 -46
  372. data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot/factory_index.rb +13 -17
  373. data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot.rb +30 -47
  374. data/plugins/rigor-graphql/lib/rigor/plugin/graphql/type_scanner.rb +52 -80
  375. data/plugins/rigor-graphql/lib/rigor/plugin/graphql.rb +21 -31
  376. data/plugins/rigor-graphql/lib/rigor-graphql.rb +3 -5
  377. data/plugins/rigor-hanami/lib/rigor/plugin/hanami/action_checker.rb +11 -17
  378. data/plugins/rigor-hanami/lib/rigor/plugin/hanami.rb +20 -34
  379. data/plugins/rigor-mangrove/lib/rigor/plugin/mangrove.rb +45 -75
  380. data/plugins/rigor-minitest/lib/rigor/plugin/minitest/assertion_analyzer.rb +22 -36
  381. data/plugins/rigor-minitest/lib/rigor/plugin/minitest.rb +22 -41
  382. data/plugins/rigor-pundit/lib/rigor/plugin/pundit/analyzer.rb +17 -32
  383. data/plugins/rigor-pundit/lib/rigor/plugin/pundit/policy_discoverer.rb +6 -12
  384. data/plugins/rigor-pundit/lib/rigor/plugin/pundit/policy_index.rb +4 -8
  385. data/plugins/rigor-pundit/lib/rigor/plugin/pundit.rb +17 -32
  386. data/plugins/rigor-rails/lib/rigor-rails.rb +11 -18
  387. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/analyzer.rb +58 -92
  388. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/locale_index.rb +20 -34
  389. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/locale_loader.rb +20 -31
  390. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n.rb +49 -82
  391. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/analyzer.rb +55 -92
  392. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/devise_routes.rb +51 -90
  393. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/doorkeeper_routes.rb +17 -30
  394. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/grape_api_discoverer.rb +189 -0
  395. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/helper_discoverer.rb +38 -70
  396. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/helper_table.rb +61 -75
  397. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/routes_parser.rb +319 -505
  398. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes.rb +91 -96
  399. data/plugins/rigor-rbs-inline/lib/rigor/plugin/rbs_inline.rb +32 -54
  400. data/plugins/rigor-rbs-inline/lib/rigor-rbs-inline.rb +8 -13
  401. data/plugins/rigor-rspec/lib/rigor/plugin/rspec/analyzer.rb +9 -16
  402. data/plugins/rigor-rspec/lib/rigor/plugin/rspec/let_scope_index.rb +24 -39
  403. data/plugins/rigor-rspec/lib/rigor/plugin/rspec/let_type_resolver.rb +13 -22
  404. data/plugins/rigor-rspec/lib/rigor/plugin/rspec/matcher_analyzer.rb +34 -56
  405. data/plugins/rigor-rspec/lib/rigor/plugin/rspec/scope_walker.rb +22 -42
  406. data/plugins/rigor-rspec/lib/rigor/plugin/rspec.rb +43 -75
  407. data/plugins/rigor-rspec-rails/lib/rigor/plugin/rspec_rails/have_http_status_analyzer.rb +27 -39
  408. data/plugins/rigor-rspec-rails/lib/rigor/plugin/rspec_rails/http_status_codes.rb +14 -19
  409. data/plugins/rigor-rspec-rails/lib/rigor/plugin/rspec_rails.rb +20 -34
  410. data/plugins/rigor-shoulda-matchers/lib/rigor/plugin/shoulda_matchers/analyzer.rb +28 -47
  411. data/plugins/rigor-shoulda-matchers/lib/rigor/plugin/shoulda_matchers.rb +21 -37
  412. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq/analyzer.rb +13 -22
  413. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq/worker_discoverer.rb +18 -31
  414. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq/worker_index.rb +6 -10
  415. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq.rb +14 -29
  416. data/plugins/rigor-sinatra/lib/rigor/plugin/sinatra.rb +23 -41
  417. data/plugins/rigor-sinatra/lib/rigor-sinatra.rb +3 -5
  418. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/absurd_recognizer.rb +23 -38
  419. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/assertion_recognizer.rb +57 -96
  420. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/catalog.rb +22 -35
  421. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/catalog_walker.rb +41 -69
  422. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/method_signature.rb +6 -10
  423. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/sig_parser.rb +24 -41
  424. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/sigil_detector.rb +29 -50
  425. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/type_translator.rb +55 -88
  426. data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet.rb +159 -262
  427. data/plugins/rigor-statesman/lib/rigor/plugin/statesman.rb +21 -29
  428. data/plugins/rigor-statesman/lib/rigor-statesman.rb +3 -5
  429. data/plugins/rigor-typescript-utility-types/lib/rigor/plugin/typescript_utility_types.rb +23 -37
  430. data/plugins/rigor-typescript-utility-types/lib/rigor-typescript-utility-types.rb +4 -6
  431. data/sig/rigor/environment.rbs +1 -0
  432. data/sig/rigor/scope.rbs +6 -0
  433. metadata +9 -1
@@ -6,29 +6,24 @@ require "rigor/source/literals"
6
6
 
7
7
  module Rigor
8
8
  module Plugin
9
- # Example plugin: validates state-machine references.
10
- # Demonstrates the **two-pass DSL analysis** pattern many
11
- # plugins reuse:
9
+ # Example plugin: validates state-machine references. Demonstrates the **two-pass DSL analysis**
10
+ # pattern many plugins reuse:
12
11
  #
13
- # 1. **Collect pass.** Walk the file once to gather every
14
- # state name declared inside a `state_machine do ... end`
15
- # block (`state :draft`, `state :submitted`, ...).
16
- # 2. **Validate pass.** Walk the file again, validating each
17
- # `transition_to(:sym)` and `event :sym` reference against
18
- # the collected state set. Levenshtein distance ≤ 3 drives
19
- # the did-you-mean suggestions.
12
+ # 1. **Collect pass.** Walk the file once to gather every state name declared inside a
13
+ # `state_machine do ... end` block (`state :draft`, `state :submitted`, ...).
14
+ # 2. **Validate pass.** Walk the file again, validating each `transition_to(:sym)` and `event :sym`
15
+ # reference against the collected state set. Levenshtein distance 3 drives the did-you-mean
16
+ # suggestions.
20
17
  #
21
- # Useful for `aasm` / `statesman` / hand-rolled DSLs and any
22
- # framework where declarations and uses live in the same
23
- # file. The same skeleton lifts to GraphQL types,
24
- # ActiveModel validations, route declarations anywhere a
25
- # declarative DSL produces a closed namespace and the rest
26
- # of the file references that namespace by literal symbol.
18
+ # Useful for `aasm` / `statesman` / hand-rolled DSLs and any framework where declarations and uses
19
+ # live in the same file. The same skeleton lifts to GraphQL types, ActiveModel validations, route
20
+ # declarations anywhere a declarative DSL produces a closed namespace and the rest of the file
21
+ # references that namespace by literal symbol.
27
22
  #
28
23
  # ## Configuration
29
24
  #
30
- # Defaults match the `Statesman::Machine` API; override via
31
- # `.rigor.yml` if your DSL uses different names:
25
+ # Defaults match the `Statesman::Machine` API; override via `.rigor.yml` if your DSL uses different
26
+ # names:
32
27
  #
33
28
  # plugins:
34
29
  # - gem: rigor-statesman
@@ -63,13 +58,11 @@ module Rigor
63
58
  @transition_method = config.fetch("transition_method").to_sym
64
59
  end
65
60
 
66
- # ADR-37 — the two-pass shape made explicit. The collect pass
67
- # (pass 1) runs once per file as the node-rule file context: it
68
- # MUST complete before validation because a `transition_to` may
69
- # precede the `state` that declares its target, so it cannot be a
70
- # per-node rule in the engine's single forward walk. The validate
71
- # pass (pass 2) is then a per-`CallNode` rule over the
72
- # engine-owned walk — no hand-rolled traversal.
61
+ # ADR-37 — the two-pass shape made explicit. The collect pass (pass 1) runs once per file as the
62
+ # node-rule file context: it MUST complete before validation because a `transition_to` may precede
63
+ # the `state` that declares its target, so it cannot be a per-node rule in the engine's single
64
+ # forward walk. The validate pass (pass 2) is then a per-`CallNode` rule over the engine-owned walk
65
+ # no hand-rolled traversal.
73
66
  node_file_context do |root, _scope|
74
67
  collect_states(root)
75
68
  end
@@ -86,10 +79,9 @@ module Rigor
86
79
 
87
80
  private
88
81
 
89
- # Pass 1 — every `state :foo` declaration inside a
90
- # `<dsl_method> do ... end` block on the file. Returns a
91
- # frozen Set of state name Symbols. Walks via the engine's
92
- # shared `Source::NodeWalker` rather than a hand-rolled traversal.
82
+ # Pass 1 — every `state :foo` declaration inside a `<dsl_method> do ... end` block on the file.
83
+ # Returns a frozen Set of state name Symbols. Walks via the engine's shared `Source::NodeWalker`
84
+ # rather than a hand-rolled traversal.
93
85
  def collect_states(root)
94
86
  states = Set.new
95
87
  Source::NodeWalker.each(root) do |node|
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Gem entry point. Required by Rigor's plugin loader when
4
- # `.rigor.yml` lists `rigor-statesman` under `plugins:`. The
5
- # loader expects this `require` to side-effect a call to
6
- # `Rigor::Plugin.register`, which the body of
7
- # `lib/rigor/plugin/statesman.rb` performs at load time.
3
+ # Gem entry point. Required by Rigor's plugin loader when `.rigor.yml` lists `rigor-statesman` under
4
+ # `plugins:`. The loader expects this `require` to side-effect a call to `Rigor::Plugin.register`, which
5
+ # the body of `lib/rigor/plugin/statesman.rb` performs at load time.
8
6
  require_relative "rigor/plugin/statesman"
@@ -4,36 +4,27 @@ require "rigor/plugin"
4
4
 
5
5
  module Rigor
6
6
  module Plugin
7
- # Example plugin: ships the TypeScript-canonical utility-type
8
- # aliases (`Pick<T, K>`, `Omit<T, K>`, `Partial<T>`,
9
- # `Required<T>`, `Readonly<T>`) as opt-in vocabulary that
10
- # resolves to the Rigor-canonical shape-projection type
11
- # functions introduced in ADR-13.
7
+ # Example plugin: ships the TypeScript-canonical utility-type aliases (`Pick<T, K>`, `Omit<T, K>`,
8
+ # `Partial<T>`, `Required<T>`, `Readonly<T>`) as opt-in vocabulary that resolves to the Rigor-canonical
9
+ # shape-projection type functions introduced in ADR-13.
12
10
  #
13
- # Background. `docs/type-specification/imported-built-in-types.md`
14
- # § "Deferred or rejected imports" deliberately rejects
15
- # TypeScript-canonical names from the Rigor core surface: the
16
- # core stays RBS-canonical per ADR-0 / ADR-1, and the shape
17
- # semantics live in core under `pick_of[T, K]` /
18
- # `omit_of[T, K]` / `partial_of[T]` / `required_of[T]` /
19
- # `readonly_of[T]` (added in ADR-13 slice 4). This plugin
20
- # ships the TS spellings as an opt-in translation layer for
21
- # users migrating from TypeScript / Sorbet / Flow-style RBI.
11
+ # Background. `docs/type-specification/imported-built-in-types.md` § "Deferred or rejected imports"
12
+ # deliberately rejects TypeScript-canonical names from the Rigor core surface: the core stays
13
+ # RBS-canonical per ADR-0 / ADR-1, and the shape semantics live in core under `pick_of[T, K]` /
14
+ # `omit_of[T, K]` / `partial_of[T]` / `required_of[T]` / `readonly_of[T]` (added in ADR-13 slice 4).
15
+ # This plugin ships the TS spellings as an opt-in translation layer for users migrating from
16
+ # TypeScript / Sorbet / Flow-style RBI.
22
17
  #
23
- # Off by default — users add the gem to their `.rigor.yml`
24
- # plugins list to enable.
18
+ # Off by default — users add the gem to their `.rigor.yml` plugins list to enable.
25
19
  #
26
20
  # @example .rigor.yml
27
21
  # plugins:
28
22
  # - gem: rigor-typescript-utility-types
29
23
  #
30
- # Once loaded, an RBS::Extended payload such as
31
- # `%a{rigor:v1:return: Pick[Foo, :a | :b]}` resolves through
32
- # the chain: the parser builds a `Generic("Pick", …)` AST,
33
- # the registry / built-in parametric builders decline, the
34
- # chain consults `Resolvers::Pick`, which recursively
35
- # resolves the two arguments to Rigor types and calls
36
- # `Type::Combinator.pick_of` on them.
24
+ # Once loaded, an RBS::Extended payload such as `%a{rigor:v1:return: Pick[Foo, :a | :b]}` resolves
25
+ # through the chain: the parser builds a `Generic("Pick", …)` AST, the registry / built-in parametric
26
+ # builders decline, the chain consults `Resolvers::Pick`, which recursively resolves the two arguments
27
+ # to Rigor types and calls `Type::Combinator.pick_of` on them.
37
28
  #
38
29
  # ## Translation table
39
30
  #
@@ -47,22 +38,17 @@ module Rigor
47
38
  #
48
39
  # ## Deferred TypeScript utility names
49
40
  #
50
- # `Parameters<F>` / `ReturnType<F>` / `InstanceType<C>` /
51
- # `Awaited<P>` / `Uppercase<S>` / `Lowercase<S>` /
52
- # `Capitalize<S>` / `Uncapitalize<S>` / `ThisParameterType<F>`
53
- # / `OmitThisParameter<F>` / `ConstructorParameters<C>` /
54
- # `NoInfer<T>` are NOT mapped today. The plugin returns `nil`
55
- # from `#resolve` for those heads, leaving the parser's
56
- # default Nominal-fallback to produce `Nominal[ReturnType, …]`
57
- # etc. Function-type projection operators (`params_of[F]` /
58
- # `return_of[F]`) and class projections (`instance_type[C]`)
59
- # would unlock these — they remain deferred in core.
41
+ # `Parameters<F>` / `ReturnType<F>` / `InstanceType<C>` / `Awaited<P>` / `Uppercase<S>` /
42
+ # `Lowercase<S>` / `Capitalize<S>` / `Uncapitalize<S>` / `ThisParameterType<F>` /
43
+ # `OmitThisParameter<F>` / `ConstructorParameters<C>` / `NoInfer<T>` are NOT mapped today. The plugin
44
+ # returns `nil` from `#resolve` for those heads, leaving the parser's default Nominal-fallback to
45
+ # produce `Nominal[ReturnType, …]` etc. Function-type projection operators (`params_of[F]` /
46
+ # `return_of[F]`) and class projections (`instance_type[C]`) would unlock these they remain
47
+ # deferred in core.
60
48
  class TypescriptUtilityTypes < Rigor::Plugin::Base
61
49
  module Resolvers
62
- # Common helper: extract a single-arg utility-type Generic
63
- # whose head matches `name`. Returns the resolved
64
- # argument's `Rigor::Type` or `nil` (so the chain falls
65
- # through).
50
+ # Common helper: extract a single-arg utility-type Generic whose head matches `name`. Returns the
51
+ # resolved argument's `Rigor::Type` or `nil` (so the chain falls through).
66
52
  module SingleArg
67
53
  def self.resolve(node, scope, name)
68
54
  return nil unless node.is_a?(Rigor::TypeNode::Generic)
@@ -1,9 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Gem entry point. Required by Rigor's plugin loader when
4
- # `.rigor.yml` lists `rigor-typescript-utility-types` under
5
- # `plugins:`. The loader expects this `require` to side-effect
6
- # a call to `Rigor::Plugin.register`, which the body of
7
- # `lib/rigor/plugin/typescript_utility_types.rb` performs at
8
- # load time.
3
+ # Gem entry point. Required by Rigor's plugin loader when `.rigor.yml` lists
4
+ # `rigor-typescript-utility-types` under `plugins:`. The loader expects this `require` to side-effect a
5
+ # call to `Rigor::Plugin.register`, which the body of `lib/rigor/plugin/typescript_utility_types.rb`
6
+ # performs at load time.
9
7
  require_relative "rigor/plugin/typescript_utility_types"
@@ -29,6 +29,7 @@ module Rigor
29
29
  def rbs_module?: (String | Symbol name) -> bool
30
30
  def class_ordering: (String | Symbol lhs, String | Symbol rhs) -> ordering
31
31
  def reflection: () -> untyped?
32
+ def missing_rbs_gem_owner: (String | Symbol root_constant_name) -> String?
32
33
 
33
34
  class ClassRegistry
34
35
  def self.default: () -> ClassRegistry
data/sig/rigor/scope.rbs CHANGED
@@ -9,6 +9,8 @@ module Rigor
9
9
  attr_reader globals: Hash[Symbol, Type::t]
10
10
  attr_reader discovery: DiscoveryIndex
11
11
  attr_reader dynamic_origins: Hash[untyped, Symbol]
12
+ attr_reader local_origins: Hash[Symbol, Symbol]
13
+ attr_reader ivar_origins: Hash[Symbol, Symbol]
12
14
  attr_reader indexed_narrowings: Hash[IndexedKey, Type::t]
13
15
  attr_reader method_chain_narrowings: Hash[ChainKey, Type::t]
14
16
  attr_reader source_path: String?
@@ -82,8 +84,12 @@ module Rigor
82
84
  def ivar: (String | Symbol name) -> Type::t?
83
85
  def cvar: (String | Symbol name) -> Type::t?
84
86
  def global: (String | Symbol name) -> Type::t?
87
+ def local_origin: (String | Symbol name) -> Symbol?
88
+ def ivar_origin: (String | Symbol name) -> Symbol?
85
89
  def with_local: (String | Symbol name, Type::t type) -> Scope
86
90
  def with_ivar: (String | Symbol name, Type::t type) -> Scope
91
+ def with_local_origin: (String | Symbol name, Symbol? cause) -> Scope
92
+ def with_ivar_origin: (String | Symbol name, Symbol? cause) -> Scope
87
93
  def with_cvar: (String | Symbol name, Type::t type) -> Scope
88
94
  def with_global: (String | Symbol name, Type::t type) -> Scope
89
95
  def declaration_sourced: () -> Set[[Symbol, Symbol]]
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.2.7
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rigor contributors
@@ -301,8 +301,10 @@ files:
301
301
  - data/builtins/ruby_core/string.yml
302
302
  - data/builtins/ruby_core/struct.yml
303
303
  - data/builtins/ruby_core/time.yml
304
+ - data/core_overlay/csv.rbs
304
305
  - data/core_overlay/numeric.rbs
305
306
  - data/core_overlay/pathname.rbs
307
+ - data/core_overlay/psych.rbs
306
308
  - data/core_overlay/string_scanner.rbs
307
309
  - data/gem_overlay/activesupport/core_ext.rbs
308
310
  - data/vendored_gem_sigs/ast/ast.rbs
@@ -484,6 +486,7 @@ files:
484
486
  - lib/rigor/cli/plugins_command.rb
485
487
  - lib/rigor/cli/plugins_renderer.rb
486
488
  - lib/rigor/cli/prism_colorizer.rb
489
+ - lib/rigor/cli/protection_fork_scan.rb
487
490
  - lib/rigor/cli/protection_renderer.rb
488
491
  - lib/rigor/cli/protection_report.rb
489
492
  - lib/rigor/cli/renderable.rb
@@ -511,6 +514,7 @@ files:
511
514
  - lib/rigor/environment/constant_type_cache_holder.rb
512
515
  - lib/rigor/environment/hkt_registry_holder.rb
513
516
  - lib/rigor/environment/lockfile_resolver.rb
517
+ - lib/rigor/environment/missing_gem_constant_index.rb
514
518
  - lib/rigor/environment/rbs_collection_discovery.rb
515
519
  - lib/rigor/environment/rbs_coverage_report.rb
516
520
  - lib/rigor/environment/rbs_hierarchy.rb
@@ -555,6 +559,7 @@ files:
555
559
  - lib/rigor/inference/fallback.rb
556
560
  - lib/rigor/inference/fallback_tracer.rb
557
561
  - lib/rigor/inference/flow_tracer.rb
562
+ - lib/rigor/inference/fork_map.rb
558
563
  - lib/rigor/inference/hkt_body.rb
559
564
  - lib/rigor/inference/hkt_body_parser.rb
560
565
  - lib/rigor/inference/hkt_reducer.rb
@@ -591,6 +596,7 @@ files:
591
596
  - lib/rigor/inference/multi_target_binder.rb
592
597
  - lib/rigor/inference/mutation_widening.rb
593
598
  - lib/rigor/inference/narrowing.rb
599
+ - lib/rigor/inference/origin_lookup.rb
594
600
  - lib/rigor/inference/parameter_inference_collector.rb
595
601
  - lib/rigor/inference/precision_scanner.rb
596
602
  - lib/rigor/inference/project_patched_methods.rb
@@ -746,6 +752,7 @@ files:
746
752
  - plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_index.rb
747
753
  - plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_parser.rb
748
754
  - plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_table.rb
755
+ - plugins/rigor-activerecord/lib/rigor/plugin/activerecord/structure_sql_parser.rb
749
756
  - plugins/rigor-activerecord/sig/active_record/relation.rbs
750
757
  - plugins/rigor-activestorage/lib/rigor-activestorage.rb
751
758
  - plugins/rigor-activestorage/lib/rigor/plugin/activestorage.rb
@@ -801,6 +808,7 @@ files:
801
808
  - plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/analyzer.rb
802
809
  - plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/devise_routes.rb
803
810
  - plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/doorkeeper_routes.rb
811
+ - plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/grape_api_discoverer.rb
804
812
  - plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/helper_discoverer.rb
805
813
  - plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/helper_table.rb
806
814
  - plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/routes_parser.rb