rigortype 0.1.15 → 0.1.17
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.
- checksums.yaml +4 -4
- data/README.md +4 -2
- data/exe/rigor +19 -0
- data/lib/rigor/analysis/check_rules/self_closedness_scanner.rb +100 -0
- data/lib/rigor/analysis/check_rules/unreachable_clause_collector.rb +209 -0
- data/lib/rigor/analysis/check_rules.rb +174 -71
- data/lib/rigor/analysis/dependency_recorder.rb +122 -0
- data/lib/rigor/analysis/diagnostic.rb +58 -0
- data/lib/rigor/analysis/incremental.rb +162 -0
- data/lib/rigor/analysis/incremental_session.rb +337 -0
- data/lib/rigor/analysis/rule_catalog.rb +48 -0
- data/lib/rigor/analysis/runner.rb +485 -29
- data/lib/rigor/analysis/self_call_resolution_recorder.rb +121 -0
- data/lib/rigor/analysis/worker_session.rb +3 -2
- data/lib/rigor/builtins/static_return_refinements.rb +7 -1
- data/lib/rigor/cache/descriptor.rb +56 -51
- data/lib/rigor/cache/incremental_snapshot.rb +147 -0
- data/lib/rigor/cache/rbs_cache_producer.rb +30 -0
- data/lib/rigor/cache/rbs_class_ancestor_table.rb +2 -8
- data/lib/rigor/cache/rbs_class_type_param_names.rb +2 -8
- data/lib/rigor/cache/rbs_constant_table.rb +2 -8
- data/lib/rigor/cache/rbs_environment.rb +2 -8
- data/lib/rigor/cache/rbs_instance_definitions.rb +3 -16
- data/lib/rigor/cache/rbs_known_class_names.rb +2 -8
- data/lib/rigor/cache/store.rb +99 -1
- data/lib/rigor/cli/annotate_command.rb +2 -7
- data/lib/rigor/cli/baseline_command.rb +2 -7
- data/lib/rigor/cli/command.rb +47 -0
- data/lib/rigor/cli/coverage_command.rb +3 -23
- data/lib/rigor/cli/coverage_renderer.rb +3 -8
- data/lib/rigor/cli/diff_command.rb +3 -7
- data/lib/rigor/cli/explain_command.rb +2 -7
- data/lib/rigor/cli/lsp_command.rb +3 -7
- data/lib/rigor/cli/mcp_command.rb +3 -7
- data/lib/rigor/cli/options.rb +57 -0
- data/lib/rigor/cli/plugin_command.rb +3 -7
- data/lib/rigor/cli/plugins_command.rb +52 -10
- data/lib/rigor/cli/plugins_renderer.rb +86 -1
- data/lib/rigor/cli/renderable.rb +26 -0
- data/lib/rigor/cli/sig_gen_command.rb +2 -7
- data/lib/rigor/cli/skill_command.rb +3 -7
- data/lib/rigor/cli/triage_command.rb +2 -7
- data/lib/rigor/cli/type_of_command.rb +5 -38
- data/lib/rigor/cli/type_of_renderer.rb +4 -9
- data/lib/rigor/cli/type_scan_command.rb +3 -23
- data/lib/rigor/cli/type_scan_renderer.rb +4 -9
- data/lib/rigor/cli.rb +260 -48
- data/lib/rigor/configuration/dependencies.rb +18 -1
- data/lib/rigor/configuration/severity_profile.rb +22 -3
- data/lib/rigor/configuration.rb +13 -3
- data/lib/rigor/environment/rbs_loader.rb +335 -4
- data/lib/rigor/environment.rb +8 -2
- data/lib/rigor/inference/block_parameter_binder.rb +1 -2
- data/lib/rigor/inference/budget_trace.rb +137 -0
- data/lib/rigor/inference/builtins/array_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/comparable_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/complex_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/date_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/encoding_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/enumerable_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/exception_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/hash_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/method_catalog.rb +15 -0
- data/lib/rigor/inference/builtins/numeric_catalog.rb +21 -93
- data/lib/rigor/inference/builtins/pathname_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/proc_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/random_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/range_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/rational_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/re_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/set_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/string_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/struct_catalog.rb +2 -5
- data/lib/rigor/inference/builtins/time_catalog.rb +2 -5
- data/lib/rigor/inference/expression_typer.rb +149 -22
- data/lib/rigor/inference/hkt_reducer.rb +2 -0
- data/lib/rigor/inference/method_dispatcher/block_folding.rb +5 -1
- data/lib/rigor/inference/method_dispatcher/call_context.rb +65 -0
- data/lib/rigor/inference/method_dispatcher/cgi_folding.rb +11 -10
- data/lib/rigor/inference/method_dispatcher/constant_folding.rb +12 -6
- data/lib/rigor/inference/method_dispatcher/data_folding.rb +246 -0
- data/lib/rigor/inference/method_dispatcher/file_folding.rb +6 -2
- data/lib/rigor/inference/method_dispatcher/iterator_dispatch.rb +6 -2
- data/lib/rigor/inference/method_dispatcher/kernel_dispatch.rb +4 -1
- data/lib/rigor/inference/method_dispatcher/literal_string_folding.rb +4 -1
- data/lib/rigor/inference/method_dispatcher/math_folding.rb +6 -6
- data/lib/rigor/inference/method_dispatcher/method_folding.rb +12 -7
- data/lib/rigor/inference/method_dispatcher/overload_selector.rb +23 -6
- data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +100 -23
- data/lib/rigor/inference/method_dispatcher/regexp_folding.rb +9 -9
- data/lib/rigor/inference/method_dispatcher/set_folding.rb +6 -6
- data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +120 -9
- data/lib/rigor/inference/method_dispatcher/shellwords_folding.rb +12 -12
- data/lib/rigor/inference/method_dispatcher/singleton_folding.rb +49 -0
- data/lib/rigor/inference/method_dispatcher/time_folding.rb +6 -6
- data/lib/rigor/inference/method_dispatcher/uri_folding.rb +9 -9
- data/lib/rigor/inference/method_dispatcher.rb +147 -60
- data/lib/rigor/inference/narrowing.rb +202 -5
- data/lib/rigor/inference/precision_scanner.rb +60 -1
- data/lib/rigor/inference/scope_indexer.rb +257 -11
- data/lib/rigor/inference/statement_evaluator.rb +110 -26
- data/lib/rigor/inference/synthetic_method_index.rb +23 -4
- data/lib/rigor/inference/synthetic_method_scanner.rb +148 -14
- data/lib/rigor/language_server/buffer_resolution.rb +33 -0
- data/lib/rigor/language_server/completion_provider.rb +4 -4
- data/lib/rigor/language_server/document_symbol_provider.rb +4 -4
- data/lib/rigor/language_server/folding_range_provider.rb +4 -4
- data/lib/rigor/language_server/hover_provider.rb +4 -4
- data/lib/rigor/language_server/selection_range_provider.rb +4 -4
- data/lib/rigor/language_server/signature_help_provider.rb +4 -4
- data/lib/rigor/plugin/additional_initializer.rb +108 -0
- data/lib/rigor/plugin/base.rb +337 -2
- data/lib/rigor/plugin/box.rb +64 -0
- data/lib/rigor/plugin/inflector.rb +121 -0
- data/lib/rigor/plugin/isolation.rb +191 -0
- data/lib/rigor/plugin/macro/nested_class_template.rb +140 -0
- data/lib/rigor/plugin/macro.rb +1 -0
- data/lib/rigor/plugin/manifest.rb +120 -23
- data/lib/rigor/plugin/node_context.rb +62 -0
- data/lib/rigor/plugin/registry.rb +49 -1
- data/lib/rigor/plugin.rb +3 -0
- data/lib/rigor/rbs_extended/conformance_checker.rb +208 -0
- data/lib/rigor/rbs_extended.rb +39 -0
- data/lib/rigor/scope.rb +123 -9
- data/lib/rigor/sig_gen/generator.rb +2 -3
- data/lib/rigor/sig_gen/observation_collector.rb +2 -2
- data/lib/rigor/source/literals.rb +118 -0
- data/lib/rigor/source/node_walker.rb +26 -0
- data/lib/rigor/source.rb +1 -0
- data/lib/rigor/type/acceptance_router.rb +19 -0
- data/lib/rigor/type/accepts_result.rb +3 -10
- data/lib/rigor/type/app.rb +3 -7
- data/lib/rigor/type/bot.rb +2 -3
- data/lib/rigor/type/bound_method.rb +5 -12
- data/lib/rigor/type/combinator.rb +23 -1
- data/lib/rigor/type/constant.rb +2 -3
- data/lib/rigor/type/data_class.rb +80 -0
- data/lib/rigor/type/data_instance.rb +100 -0
- data/lib/rigor/type/difference.rb +5 -10
- data/lib/rigor/type/dynamic.rb +5 -10
- data/lib/rigor/type/hash_shape.rb +5 -15
- data/lib/rigor/type/integer_range.rb +5 -10
- data/lib/rigor/type/intersection.rb +5 -10
- data/lib/rigor/type/nominal.rb +5 -10
- data/lib/rigor/type/refined.rb +5 -10
- data/lib/rigor/type/singleton.rb +5 -10
- data/lib/rigor/type/top.rb +2 -3
- data/lib/rigor/type/tuple.rb +5 -10
- data/lib/rigor/type/union.rb +69 -10
- data/lib/rigor/type.rb +2 -0
- data/lib/rigor/value_semantics.rb +77 -0
- data/lib/rigor/version.rb +1 -1
- data/lib/rigor.rb +2 -0
- data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable/analyzer.rb +31 -53
- data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable.rb +21 -23
- data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer/analyzer.rb +38 -59
- data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer/mailer_discoverer.rb +7 -13
- data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer.rb +22 -33
- data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/analyzer.rb +298 -413
- data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack.rb +69 -71
- data/plugins/rigor-activejob/lib/rigor/plugin/activejob/analyzer.rb +24 -34
- data/plugins/rigor-activejob/lib/rigor/plugin/activejob.rb +18 -16
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/analyzer.rb +4 -46
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_discoverer.rb +4 -4
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_index.rb +1 -1
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord.rb +17 -12
- data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage/analyzer.rb +2 -8
- data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage/attachment_discoverer.rb +2 -7
- data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage.rb +2 -6
- data/plugins/rigor-dry-schema/lib/rigor/plugin/dry_schema/schema_scanner.rb +4 -3
- data/plugins/rigor-dry-validation/lib/rigor/plugin/dry_validation.rb +5 -1
- data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot/analyzer.rb +40 -45
- data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot/factory_discoverer.rb +7 -17
- data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot.rb +20 -42
- data/plugins/rigor-graphql/lib/rigor/plugin/graphql/type_scanner.rb +7 -4
- data/plugins/rigor-hanami/lib/rigor/plugin/hanami/action_checker.rb +4 -8
- data/plugins/rigor-mangrove/lib/rigor/plugin/mangrove.rb +188 -0
- data/plugins/rigor-mangrove/lib/rigor-mangrove.rb +3 -0
- data/plugins/rigor-minitest/lib/rigor/plugin/minitest/assertion_analyzer.rb +4 -0
- data/plugins/rigor-minitest/lib/rigor/plugin/minitest.rb +24 -8
- data/plugins/rigor-pundit/lib/rigor/plugin/pundit/analyzer.rb +31 -48
- data/plugins/rigor-pundit/lib/rigor/plugin/pundit.rb +21 -23
- data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/analyzer.rb +54 -82
- data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n.rb +25 -25
- data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/analyzer.rb +63 -147
- data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/devise_routes.rb +4 -17
- data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/routes_parser.rb +23 -114
- data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes.rb +48 -33
- data/plugins/rigor-rbs-inline/lib/rigor/plugin/rbs_inline.rb +0 -1
- data/plugins/rigor-rspec/lib/rigor/plugin/rspec/let_scope_index.rb +6 -3
- data/plugins/rigor-rspec/lib/rigor/plugin/rspec/scope_walker.rb +4 -2
- data/plugins/rigor-rspec/lib/rigor/plugin/rspec.rb +13 -12
- data/plugins/rigor-rspec-rails/lib/rigor/plugin/rspec_rails/have_http_status_analyzer.rb +28 -40
- data/plugins/rigor-rspec-rails/lib/rigor/plugin/rspec_rails/http_status_codes.rb +44 -47
- data/plugins/rigor-rspec-rails/lib/rigor/plugin/rspec_rails.rb +11 -10
- data/plugins/rigor-shoulda-matchers/lib/rigor/plugin/shoulda_matchers/analyzer.rb +45 -87
- data/plugins/rigor-shoulda-matchers/lib/rigor/plugin/shoulda_matchers.rb +11 -12
- data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq/analyzer.rb +29 -42
- data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq.rb +20 -19
- data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/catalog_walker.rb +73 -0
- data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet/type_translator.rb +43 -1
- data/plugins/rigor-sorbet/lib/rigor/plugin/sorbet.rb +21 -29
- data/plugins/rigor-statesman/lib/rigor/plugin/statesman.rb +36 -96
- data/sig/rigor/cache.rbs +19 -0
- data/sig/rigor/inference.rbs +22 -0
- data/sig/rigor/plugin/access_denied_error.rbs +3 -1
- data/sig/rigor/plugin/base.rbs +58 -3
- data/sig/rigor/plugin/io_boundary.rbs +3 -0
- data/sig/rigor/plugin/manifest.rbs +31 -1
- data/sig/rigor/rbs_extended.rbs +2 -0
- data/sig/rigor/scope.rbs +5 -0
- data/sig/rigor/source.rbs +12 -0
- data/sig/rigor/type.rbs +58 -1
- data/sig/rigor.rbs +11 -1
- data/skills/rigor-plugin-author/SKILL.md +13 -9
- data/skills/rigor-plugin-author/references/01-plan-and-scaffold.md +6 -5
- data/skills/rigor-plugin-author/references/02-walker-and-types.md +159 -75
- data/skills/rigor-plugin-author/references/03-test-and-ship.md +3 -3
- metadata +73 -2
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/inflector.rb +0 -114
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.
|
|
4
|
+
version: 0.1.17
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rigor contributors
|
|
@@ -69,6 +69,46 @@ dependencies:
|
|
|
69
69
|
- - "<"
|
|
70
70
|
- !ruby/object:Gem::Version
|
|
71
71
|
version: '5.0'
|
|
72
|
+
- !ruby/object:Gem::Dependency
|
|
73
|
+
name: activesupport
|
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
|
75
|
+
requirements:
|
|
76
|
+
- - ">="
|
|
77
|
+
- !ruby/object:Gem::Version
|
|
78
|
+
version: '7.0'
|
|
79
|
+
- - "<"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '9.0'
|
|
82
|
+
type: :development
|
|
83
|
+
prerelease: false
|
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '7.0'
|
|
89
|
+
- - "<"
|
|
90
|
+
- !ruby/object:Gem::Version
|
|
91
|
+
version: '9.0'
|
|
92
|
+
- !ruby/object:Gem::Dependency
|
|
93
|
+
name: rack
|
|
94
|
+
requirement: !ruby/object:Gem::Requirement
|
|
95
|
+
requirements:
|
|
96
|
+
- - ">="
|
|
97
|
+
- !ruby/object:Gem::Version
|
|
98
|
+
version: '2.0'
|
|
99
|
+
- - "<"
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: '4.0'
|
|
102
|
+
type: :development
|
|
103
|
+
prerelease: false
|
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
+
requirements:
|
|
106
|
+
- - ">="
|
|
107
|
+
- !ruby/object:Gem::Version
|
|
108
|
+
version: '2.0'
|
|
109
|
+
- - "<"
|
|
110
|
+
- !ruby/object:Gem::Version
|
|
111
|
+
version: '4.0'
|
|
72
112
|
- !ruby/object:Gem::Dependency
|
|
73
113
|
name: parallel_tests
|
|
74
114
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -249,6 +289,9 @@ files:
|
|
|
249
289
|
- lib/rigor/analysis/check_rules/always_truthy_condition_collector.rb
|
|
250
290
|
- lib/rigor/analysis/check_rules/dead_assignment_collector.rb
|
|
251
291
|
- lib/rigor/analysis/check_rules/ivar_write_collector.rb
|
|
292
|
+
- lib/rigor/analysis/check_rules/self_closedness_scanner.rb
|
|
293
|
+
- lib/rigor/analysis/check_rules/unreachable_clause_collector.rb
|
|
294
|
+
- lib/rigor/analysis/dependency_recorder.rb
|
|
252
295
|
- lib/rigor/analysis/dependency_source_inference.rb
|
|
253
296
|
- lib/rigor/analysis/dependency_source_inference/boundary_cross_reporter.rb
|
|
254
297
|
- lib/rigor/analysis/dependency_source_inference/builder.rb
|
|
@@ -259,11 +302,14 @@ files:
|
|
|
259
302
|
- lib/rigor/analysis/diagnostic.rb
|
|
260
303
|
- lib/rigor/analysis/erb_template_detector.rb
|
|
261
304
|
- lib/rigor/analysis/fact_store.rb
|
|
305
|
+
- lib/rigor/analysis/incremental.rb
|
|
306
|
+
- lib/rigor/analysis/incremental_session.rb
|
|
262
307
|
- lib/rigor/analysis/project_scan.rb
|
|
263
308
|
- lib/rigor/analysis/result.rb
|
|
264
309
|
- lib/rigor/analysis/rule_catalog.rb
|
|
265
310
|
- lib/rigor/analysis/run_stats.rb
|
|
266
311
|
- lib/rigor/analysis/runner.rb
|
|
312
|
+
- lib/rigor/analysis/self_call_resolution_recorder.rb
|
|
267
313
|
- lib/rigor/analysis/worker_session.rb
|
|
268
314
|
- lib/rigor/ast.rb
|
|
269
315
|
- lib/rigor/ast/type_node.rb
|
|
@@ -272,6 +318,8 @@ files:
|
|
|
272
318
|
- lib/rigor/builtins/regex_refinement.rb
|
|
273
319
|
- lib/rigor/builtins/static_return_refinements.rb
|
|
274
320
|
- lib/rigor/cache/descriptor.rb
|
|
321
|
+
- lib/rigor/cache/incremental_snapshot.rb
|
|
322
|
+
- lib/rigor/cache/rbs_cache_producer.rb
|
|
275
323
|
- lib/rigor/cache/rbs_class_ancestor_table.rb
|
|
276
324
|
- lib/rigor/cache/rbs_class_type_param_names.rb
|
|
277
325
|
- lib/rigor/cache/rbs_constant_table.rb
|
|
@@ -284,6 +332,7 @@ files:
|
|
|
284
332
|
- lib/rigor/cli.rb
|
|
285
333
|
- lib/rigor/cli/annotate_command.rb
|
|
286
334
|
- lib/rigor/cli/baseline_command.rb
|
|
335
|
+
- lib/rigor/cli/command.rb
|
|
287
336
|
- lib/rigor/cli/coverage_command.rb
|
|
288
337
|
- lib/rigor/cli/coverage_renderer.rb
|
|
289
338
|
- lib/rigor/cli/coverage_report.rb
|
|
@@ -291,10 +340,12 @@ files:
|
|
|
291
340
|
- lib/rigor/cli/explain_command.rb
|
|
292
341
|
- lib/rigor/cli/lsp_command.rb
|
|
293
342
|
- lib/rigor/cli/mcp_command.rb
|
|
343
|
+
- lib/rigor/cli/options.rb
|
|
294
344
|
- lib/rigor/cli/plugin_command.rb
|
|
295
345
|
- lib/rigor/cli/plugins_command.rb
|
|
296
346
|
- lib/rigor/cli/plugins_renderer.rb
|
|
297
347
|
- lib/rigor/cli/prism_colorizer.rb
|
|
348
|
+
- lib/rigor/cli/renderable.rb
|
|
298
349
|
- lib/rigor/cli/sig_gen_command.rb
|
|
299
350
|
- lib/rigor/cli/skill_command.rb
|
|
300
351
|
- lib/rigor/cli/triage_command.rb
|
|
@@ -326,6 +377,7 @@ files:
|
|
|
326
377
|
- lib/rigor/flow_contribution/merger.rb
|
|
327
378
|
- lib/rigor/inference/acceptance.rb
|
|
328
379
|
- lib/rigor/inference/block_parameter_binder.rb
|
|
380
|
+
- lib/rigor/inference/budget_trace.rb
|
|
329
381
|
- lib/rigor/inference/builtins/array_catalog.rb
|
|
330
382
|
- lib/rigor/inference/builtins/comparable_catalog.rb
|
|
331
383
|
- lib/rigor/inference/builtins/complex_catalog.rb
|
|
@@ -360,8 +412,10 @@ files:
|
|
|
360
412
|
- lib/rigor/inference/macro_block_self_type.rb
|
|
361
413
|
- lib/rigor/inference/method_dispatcher.rb
|
|
362
414
|
- lib/rigor/inference/method_dispatcher/block_folding.rb
|
|
415
|
+
- lib/rigor/inference/method_dispatcher/call_context.rb
|
|
363
416
|
- lib/rigor/inference/method_dispatcher/cgi_folding.rb
|
|
364
417
|
- lib/rigor/inference/method_dispatcher/constant_folding.rb
|
|
418
|
+
- lib/rigor/inference/method_dispatcher/data_folding.rb
|
|
365
419
|
- lib/rigor/inference/method_dispatcher/file_folding.rb
|
|
366
420
|
- lib/rigor/inference/method_dispatcher/iterator_dispatch.rb
|
|
367
421
|
- lib/rigor/inference/method_dispatcher/kernel_dispatch.rb
|
|
@@ -375,6 +429,7 @@ files:
|
|
|
375
429
|
- lib/rigor/inference/method_dispatcher/set_folding.rb
|
|
376
430
|
- lib/rigor/inference/method_dispatcher/shape_dispatch.rb
|
|
377
431
|
- lib/rigor/inference/method_dispatcher/shellwords_folding.rb
|
|
432
|
+
- lib/rigor/inference/method_dispatcher/singleton_folding.rb
|
|
378
433
|
- lib/rigor/inference/method_dispatcher/time_folding.rb
|
|
379
434
|
- lib/rigor/inference/method_dispatcher/uri_folding.rb
|
|
380
435
|
- lib/rigor/inference/method_parameter_binder.rb
|
|
@@ -391,6 +446,7 @@ files:
|
|
|
391
446
|
- lib/rigor/inference/synthetic_method_index.rb
|
|
392
447
|
- lib/rigor/inference/synthetic_method_scanner.rb
|
|
393
448
|
- lib/rigor/language_server.rb
|
|
449
|
+
- lib/rigor/language_server/buffer_resolution.rb
|
|
394
450
|
- lib/rigor/language_server/buffer_table.rb
|
|
395
451
|
- lib/rigor/language_server/completion_provider.rb
|
|
396
452
|
- lib/rigor/language_server/debouncer.rb
|
|
@@ -411,18 +467,24 @@ files:
|
|
|
411
467
|
- lib/rigor/mcp/server.rb
|
|
412
468
|
- lib/rigor/plugin.rb
|
|
413
469
|
- lib/rigor/plugin/access_denied_error.rb
|
|
470
|
+
- lib/rigor/plugin/additional_initializer.rb
|
|
414
471
|
- lib/rigor/plugin/base.rb
|
|
415
472
|
- lib/rigor/plugin/blueprint.rb
|
|
473
|
+
- lib/rigor/plugin/box.rb
|
|
416
474
|
- lib/rigor/plugin/fact_store.rb
|
|
475
|
+
- lib/rigor/plugin/inflector.rb
|
|
417
476
|
- lib/rigor/plugin/io_boundary.rb
|
|
477
|
+
- lib/rigor/plugin/isolation.rb
|
|
418
478
|
- lib/rigor/plugin/load_error.rb
|
|
419
479
|
- lib/rigor/plugin/loader.rb
|
|
420
480
|
- lib/rigor/plugin/macro.rb
|
|
421
481
|
- lib/rigor/plugin/macro/block_as_method.rb
|
|
422
482
|
- lib/rigor/plugin/macro/external_file.rb
|
|
423
483
|
- lib/rigor/plugin/macro/heredoc_template.rb
|
|
484
|
+
- lib/rigor/plugin/macro/nested_class_template.rb
|
|
424
485
|
- lib/rigor/plugin/macro/trait_registry.rb
|
|
425
486
|
- lib/rigor/plugin/manifest.rb
|
|
487
|
+
- lib/rigor/plugin/node_context.rb
|
|
426
488
|
- lib/rigor/plugin/protocol_contract.rb
|
|
427
489
|
- lib/rigor/plugin/registry.rb
|
|
428
490
|
- lib/rigor/plugin/services.rb
|
|
@@ -430,6 +492,7 @@ files:
|
|
|
430
492
|
- lib/rigor/plugin/trust_policy.rb
|
|
431
493
|
- lib/rigor/plugin/type_node_resolver.rb
|
|
432
494
|
- lib/rigor/rbs_extended.rb
|
|
495
|
+
- lib/rigor/rbs_extended/conformance_checker.rb
|
|
433
496
|
- lib/rigor/rbs_extended/hkt_directives.rb
|
|
434
497
|
- lib/rigor/rbs_extended/reporter.rb
|
|
435
498
|
- lib/rigor/reflection.rb
|
|
@@ -447,6 +510,7 @@ files:
|
|
|
447
510
|
- lib/rigor/sig_gen/write_result.rb
|
|
448
511
|
- lib/rigor/sig_gen/writer.rb
|
|
449
512
|
- lib/rigor/source.rb
|
|
513
|
+
- lib/rigor/source/literals.rb
|
|
450
514
|
- lib/rigor/source/node_locator.rb
|
|
451
515
|
- lib/rigor/source/node_walker.rb
|
|
452
516
|
- lib/rigor/testing.rb
|
|
@@ -455,12 +519,15 @@ files:
|
|
|
455
519
|
- lib/rigor/triage/hint.rb
|
|
456
520
|
- lib/rigor/trinary.rb
|
|
457
521
|
- lib/rigor/type.rb
|
|
522
|
+
- lib/rigor/type/acceptance_router.rb
|
|
458
523
|
- lib/rigor/type/accepts_result.rb
|
|
459
524
|
- lib/rigor/type/app.rb
|
|
460
525
|
- lib/rigor/type/bot.rb
|
|
461
526
|
- lib/rigor/type/bound_method.rb
|
|
462
527
|
- lib/rigor/type/combinator.rb
|
|
463
528
|
- lib/rigor/type/constant.rb
|
|
529
|
+
- lib/rigor/type/data_class.rb
|
|
530
|
+
- lib/rigor/type/data_instance.rb
|
|
464
531
|
- lib/rigor/type/difference.rb
|
|
465
532
|
- lib/rigor/type/dynamic.rb
|
|
466
533
|
- lib/rigor/type/hash_shape.rb
|
|
@@ -482,6 +549,7 @@ files:
|
|
|
482
549
|
- lib/rigor/type_node/string_literal.rb
|
|
483
550
|
- lib/rigor/type_node/symbol_literal.rb
|
|
484
551
|
- lib/rigor/type_node/union.rb
|
|
552
|
+
- lib/rigor/value_semantics.rb
|
|
485
553
|
- lib/rigor/version.rb
|
|
486
554
|
- plugins/rigor-actioncable/lib/rigor-actioncable.rb
|
|
487
555
|
- plugins/rigor-actioncable/lib/rigor/plugin/actioncable.rb
|
|
@@ -506,7 +574,6 @@ files:
|
|
|
506
574
|
- plugins/rigor-activerecord/lib/rigor-activerecord.rb
|
|
507
575
|
- plugins/rigor-activerecord/lib/rigor/plugin/activerecord.rb
|
|
508
576
|
- plugins/rigor-activerecord/lib/rigor/plugin/activerecord/analyzer.rb
|
|
509
|
-
- plugins/rigor-activerecord/lib/rigor/plugin/activerecord/inflector.rb
|
|
510
577
|
- plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_discoverer.rb
|
|
511
578
|
- plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_index.rb
|
|
512
579
|
- plugins/rigor-activerecord/lib/rigor/plugin/activerecord/schema_parser.rb
|
|
@@ -546,6 +613,8 @@ files:
|
|
|
546
613
|
- plugins/rigor-hanami/lib/rigor/plugin/hanami.rb
|
|
547
614
|
- plugins/rigor-hanami/lib/rigor/plugin/hanami/action_checker.rb
|
|
548
615
|
- plugins/rigor-hanami/sig/hanami_action.rbs
|
|
616
|
+
- plugins/rigor-mangrove/lib/rigor-mangrove.rb
|
|
617
|
+
- plugins/rigor-mangrove/lib/rigor/plugin/mangrove.rb
|
|
549
618
|
- plugins/rigor-minitest/lib/rigor-minitest.rb
|
|
550
619
|
- plugins/rigor-minitest/lib/rigor/plugin/minitest.rb
|
|
551
620
|
- plugins/rigor-minitest/lib/rigor/plugin/minitest/assertion_analyzer.rb
|
|
@@ -613,6 +682,7 @@ files:
|
|
|
613
682
|
- sig/rigor/analysis/dependency_source_inference/index.rbs
|
|
614
683
|
- sig/rigor/analysis/fact_store.rbs
|
|
615
684
|
- sig/rigor/ast.rbs
|
|
685
|
+
- sig/rigor/cache.rbs
|
|
616
686
|
- sig/rigor/cli/diff_command.rbs
|
|
617
687
|
- sig/rigor/cli/explain_command.rbs
|
|
618
688
|
- sig/rigor/cli/sig_gen_command.rbs
|
|
@@ -680,6 +750,7 @@ require_paths:
|
|
|
680
750
|
- plugins/rigor-factorybot/lib
|
|
681
751
|
- plugins/rigor-graphql/lib
|
|
682
752
|
- plugins/rigor-hanami/lib
|
|
753
|
+
- plugins/rigor-mangrove/lib
|
|
683
754
|
- plugins/rigor-minitest/lib
|
|
684
755
|
- plugins/rigor-pundit/lib
|
|
685
756
|
- plugins/rigor-rails/lib
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Rigor
|
|
4
|
-
module Plugin
|
|
5
|
-
class Activerecord < Rigor::Plugin::Base
|
|
6
|
-
# Tiny inflection helper for the common `ClassName → snake_case_plural`
|
|
7
|
-
# mapping Rails uses to derive table names. Deliberately
|
|
8
|
-
# narrow — handles the regular cases (`User → users`,
|
|
9
|
-
# `BlogPost → blog_posts`, `Category → categories`,
|
|
10
|
-
# `Bus → buses`, `Wolf → wolves`). Irregular plurals
|
|
11
|
-
# (`Person → people`, `Mouse → mice`, `Datum → data`) are
|
|
12
|
-
# NOT handled; the user is expected to declare
|
|
13
|
-
# `self.table_name = "people"` for those.
|
|
14
|
-
#
|
|
15
|
-
# Avoids an `activesupport` runtime dependency. Rails apps
|
|
16
|
-
# that need richer inflection should set explicit table
|
|
17
|
-
# names on the affected models.
|
|
18
|
-
module Inflector
|
|
19
|
-
IRREGULAR_PLURALS = {
|
|
20
|
-
# Common ones we still want to handle without bringing
|
|
21
|
-
# in a full inflection table. Users get the configured
|
|
22
|
-
# explicit table_name route for anything else.
|
|
23
|
-
"person" => "people",
|
|
24
|
-
"child" => "children",
|
|
25
|
-
"datum" => "data"
|
|
26
|
-
}.freeze
|
|
27
|
-
|
|
28
|
-
module_function
|
|
29
|
-
|
|
30
|
-
# `BlogPost` → `blog_posts`. `User::Profile` → `user_profiles`
|
|
31
|
-
# (Rails-style namespacing flattens with underscore).
|
|
32
|
-
def tableize(class_name)
|
|
33
|
-
underscore = underscore(class_name.to_s.gsub("::", "/"))
|
|
34
|
-
# `user/profiles` → `user_profiles`
|
|
35
|
-
underscore = underscore.tr("/", "_")
|
|
36
|
-
pluralize(underscore)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# `BlogPost` → `blog_post`. Standard Rails-style underscore.
|
|
40
|
-
def underscore(camel_case_word)
|
|
41
|
-
word = camel_case_word.to_s.dup
|
|
42
|
-
word.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
|
43
|
-
word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
|
|
44
|
-
word.tr!("-", "_")
|
|
45
|
-
word.downcase!
|
|
46
|
-
word
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# `users` → `User`, `blog_posts` → `BlogPost`.
|
|
50
|
-
# Used by the association detector to map an
|
|
51
|
-
# association NAME (`has_many :posts` → `Post`) to the
|
|
52
|
-
# target class without requiring an explicit
|
|
53
|
-
# `class_name:` option. Singularises the word first,
|
|
54
|
-
# then camel-cases. Recognises the same irregular
|
|
55
|
-
# plurals as {.pluralize}.
|
|
56
|
-
def classify(word)
|
|
57
|
-
camelize(singularize(word.to_s))
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# `posts` → `post`, `categories` → `category`,
|
|
61
|
-
# `wolves` → `wolf`, `buses` → `bus`. The inverse of
|
|
62
|
-
# {.pluralize} for the regular cases this module
|
|
63
|
-
# recognises. Irregular forms (`people` → `person`)
|
|
64
|
-
# round-trip via {IRREGULAR_PLURALS}.
|
|
65
|
-
def singularize(word)
|
|
66
|
-
IRREGULAR_PLURALS.each { |singular, plural| return singular if word == plural }
|
|
67
|
-
|
|
68
|
-
case word
|
|
69
|
-
when /(.*[bcdfghjklmnpqrstvwxz])ies\z/
|
|
70
|
-
"#{Regexp.last_match(1)}y"
|
|
71
|
-
when /(.*[sxz]|.*[cs]h)es\z/
|
|
72
|
-
Regexp.last_match(0)[0..-3]
|
|
73
|
-
when /(.*)ves\z/
|
|
74
|
-
"#{Regexp.last_match(1)}f"
|
|
75
|
-
when /(.+)s\z/
|
|
76
|
-
Regexp.last_match(1)
|
|
77
|
-
else
|
|
78
|
-
word
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
# `blog_post` → `BlogPost`. Camelizes around `_` and
|
|
83
|
-
# `/` separators; the latter promotes namespace boundaries
|
|
84
|
-
# to `::` (Rails-style).
|
|
85
|
-
def camelize(snake)
|
|
86
|
-
snake.to_s.split("/").map do |segment|
|
|
87
|
-
segment.split("_").map { |part| part.empty? ? part : part[0].upcase + part[1..] }.join
|
|
88
|
-
end.join("::")
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
# `user` → `users`, `category` → `categories`,
|
|
92
|
-
# `bus` → `buses`, `wolf` → `wolves`. Falls back to a
|
|
93
|
-
# plain `+ "s"` for unrecognised endings.
|
|
94
|
-
def pluralize(word)
|
|
95
|
-
return IRREGULAR_PLURALS[word] if IRREGULAR_PLURALS.key?(word)
|
|
96
|
-
|
|
97
|
-
case word
|
|
98
|
-
when /(.*[bcdfghjklmnpqrstvwxz])y\z/
|
|
99
|
-
# `category` → `categories`, `cherry` → `cherries`
|
|
100
|
-
"#{Regexp.last_match(1)}ies"
|
|
101
|
-
when /(.*[sxz]|.*[cs]h)\z/
|
|
102
|
-
# `bus` → `buses`, `box` → `boxes`, `dish` → `dishes`
|
|
103
|
-
"#{Regexp.last_match(0)}es"
|
|
104
|
-
when /(.*)fe?\z/
|
|
105
|
-
# `wolf` → `wolves`, `knife` → `knives`
|
|
106
|
-
"#{Regexp.last_match(1)}ves"
|
|
107
|
-
else
|
|
108
|
-
"#{word}s"
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
end
|