rigortype 0.1.0 → 0.1.2

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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -2
  3. data/data/builtins/ruby_core/array.yml +6 -6
  4. data/data/builtins/ruby_core/hash.yml +1 -1
  5. data/data/builtins/ruby_core/io.yml +3 -3
  6. data/data/builtins/ruby_core/numeric.yml +1 -1
  7. data/data/builtins/ruby_core/pathname.yml +100 -100
  8. data/data/builtins/ruby_core/proc.yml +1 -1
  9. data/data/builtins/ruby_core/range.yml +6 -4
  10. data/data/builtins/ruby_core/string.yml +15 -10
  11. data/data/builtins/ruby_core/time.yml +3 -3
  12. data/lib/rigor/analysis/check_rules/always_truthy_condition_collector.rb +116 -0
  13. data/lib/rigor/analysis/check_rules/dead_assignment_collector.rb +123 -0
  14. data/lib/rigor/analysis/check_rules/ivar_write_collector.rb +118 -0
  15. data/lib/rigor/analysis/check_rules.rb +346 -18
  16. data/lib/rigor/analysis/rule_catalog.rb +343 -0
  17. data/lib/rigor/analysis/runner.rb +90 -6
  18. data/lib/rigor/builtins/regex_refinement.rb +104 -0
  19. data/lib/rigor/cli/diff_command.rb +169 -0
  20. data/lib/rigor/cli/explain_command.rb +129 -0
  21. data/lib/rigor/cli/type_of_command.rb +3 -3
  22. data/lib/rigor/cli/type_scan_command.rb +4 -4
  23. data/lib/rigor/cli.rb +29 -5
  24. data/lib/rigor/configuration/severity_profile.rb +18 -3
  25. data/lib/rigor/configuration.rb +186 -13
  26. data/lib/rigor/environment.rb +12 -4
  27. data/lib/rigor/inference/expression_typer.rb +3 -1
  28. data/lib/rigor/inference/method_dispatcher/kernel_dispatch.rb +31 -0
  29. data/lib/rigor/inference/method_dispatcher/literal_string_folding.rb +43 -2
  30. data/lib/rigor/inference/method_dispatcher/overload_selector.rb +104 -12
  31. data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +68 -2
  32. data/lib/rigor/inference/method_dispatcher.rb +50 -1
  33. data/lib/rigor/inference/narrowing.rb +150 -6
  34. data/lib/rigor/inference/scope_indexer.rb +220 -17
  35. data/lib/rigor/inference/statement_evaluator.rb +29 -0
  36. data/lib/rigor/plugin/base.rb +43 -0
  37. data/lib/rigor/plugin/fact_store.rb +92 -0
  38. data/lib/rigor/plugin/io_boundary.rb +92 -19
  39. data/lib/rigor/plugin/load_error.rb +14 -2
  40. data/lib/rigor/plugin/loader.rb +116 -0
  41. data/lib/rigor/plugin/manifest.rb +75 -6
  42. data/lib/rigor/plugin/services.rb +14 -2
  43. data/lib/rigor/plugin/trust_policy.rb +30 -7
  44. data/lib/rigor/plugin.rb +1 -0
  45. data/lib/rigor/scope.rb +30 -5
  46. data/lib/rigor/trinary.rb +1 -1
  47. data/lib/rigor/type/integer_range.rb +6 -2
  48. data/lib/rigor/version.rb +1 -1
  49. data/sig/rigor/environment.rbs +3 -2
  50. data/sig/rigor/scope.rbs +3 -0
  51. data/sig/rigor.rbs +8 -2
  52. metadata +9 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 257469533556c55164c5dbb9ea351c142ea600b17a90b6f9e632b5307bbbac08
4
- data.tar.gz: be2141e8f53748716bd7f19e95632a1fab17fde8110dd824d981baaf2522371c
3
+ metadata.gz: 47346567152367cb408115b6a33214e43468f2255bd632b4894d8c68164b8ada
4
+ data.tar.gz: 407d5cda9e08342670a4eeb05ae2c565d398866174d292c586793cb213a77fdb
5
5
  SHA512:
6
- metadata.gz: 221248b2968dcd5d11963197468407ffbc34f2c41b79aa45321a5171e8183817e1ed67fbac37c852c6f22c910b065fef7214cf5f5ef2f03ec6f3c2aef5cce213
7
- data.tar.gz: d2b096836618fd21a44810aa7c87bad2b0fd28a90baf395dd206ece02844d65819f1ab0cc80ea7a956a4b590351a4f67572be959d8b4effc9d086ff120498e2e
6
+ metadata.gz: f6ffecd573e1bbb387c861cbe3a6d909d217dfadef453a7a84339a4f7fd44e2c86dbbac54c8369298b56a2de3771c0f75c28cfe098cb895355a52155657f4f9d
7
+ data.tar.gz: 6f924aed4bc15581bae58ffa62a5d8194db3fabbdc3056f2b6cfc4f068f972063e0148f85df8b8ef3e5f5003fad35b4e9016e534ef604cbfc581d0cdab76bb7b
data/README.md CHANGED
@@ -376,7 +376,7 @@ analyzer guarantees live under
376
376
  ## Plugins (v0.1.0)
377
377
 
378
378
  `v0.1.0` adds an extension API so projects can teach Rigor about
379
- their own DSLs. Six worked examples ship under
379
+ their own DSLs. Seven worked examples ship under
380
380
  [`examples/`](examples/) — each is a fully-shaped plugin gem
381
381
  with a runnable demo and an end-to-end integration spec, and
382
382
  each spotlights a different facet of the plugin contract:
@@ -394,7 +394,12 @@ each spotlights a different facet of the plugin contract:
394
394
  tracking through arithmetic.
395
395
  - [`rigor-routes`](examples/rigor-routes/) — `Plugin::IoBoundary`
396
396
  reads under `TrustPolicy` plus cache producers (slice 2 +
397
- slice 6) — the most architecturally complete example.
397
+ slice 6).
398
+ - [`rigor-activerecord`](examples/rigor-activerecord/) —
399
+ validates `Model.find` / `.find_by` / `.where` against
400
+ `db/schema.rb` and discovered AR model classes; combines
401
+ DSL interpretation, multi-file `IoBoundary`, and chained
402
+ cache producers — the most architecturally complete example.
398
403
 
399
404
  [`examples/README.md`](examples/README.md) is the plugin
400
405
  authoring landing page — comparison table, recommended reading
@@ -1361,7 +1361,7 @@ classes:
1361
1361
  body_kind: composed
1362
1362
  cexpr_target:
1363
1363
  prelude_at: references/ruby/array.rb:22
1364
- purity: unknown
1364
+ purity: dispatch
1365
1365
  arity: -1
1366
1366
  cfunc:
1367
1367
  defined_at: references/ruby/array.rb:22
@@ -1374,7 +1374,7 @@ classes:
1374
1374
  body_kind: composed
1375
1375
  cexpr_target:
1376
1376
  prelude_at: references/ruby/array.rb:45
1377
- purity: unknown
1377
+ purity: dispatch
1378
1378
  arity: -1
1379
1379
  cfunc:
1380
1380
  defined_at: references/ruby/array.rb:45
@@ -1387,7 +1387,7 @@ classes:
1387
1387
  body_kind: composed
1388
1388
  cexpr_target:
1389
1389
  prelude_at: references/ruby/array.rb:95
1390
- purity: unknown
1390
+ purity: dispatch
1391
1391
  arity: -1
1392
1392
  cfunc:
1393
1393
  defined_at: references/ruby/array.rb:95
@@ -1401,7 +1401,7 @@ classes:
1401
1401
  body_kind: composed
1402
1402
  cexpr_target:
1403
1403
  prelude_at: references/ruby/array.rb:129
1404
- purity: unknown
1404
+ purity: dispatch
1405
1405
  arity: -1
1406
1406
  cfunc:
1407
1407
  defined_at: references/ruby/array.rb:129
@@ -1415,7 +1415,7 @@ classes:
1415
1415
  body_kind: composed
1416
1416
  cexpr_target:
1417
1417
  prelude_at: references/ruby/array.rb:166
1418
- purity: unknown
1418
+ purity: dispatch
1419
1419
  arity: -1
1420
1420
  cfunc:
1421
1421
  defined_at: references/ruby/array.rb:166
@@ -1429,7 +1429,7 @@ classes:
1429
1429
  body_kind: composed
1430
1430
  cexpr_target:
1431
1431
  prelude_at: references/ruby/array.rb:210
1432
- purity: unknown
1432
+ purity: dispatch
1433
1433
  arity: -1
1434
1434
  cfunc:
1435
1435
  defined_at: references/ruby/array.rb:210
@@ -880,7 +880,7 @@ classes:
880
880
  body_kind: composed
881
881
  cexpr_target:
882
882
  prelude_at: references/ruby/hash.rb:37
883
- purity: unknown
883
+ purity: dispatch
884
884
  arity: -1
885
885
  cfunc:
886
886
  defined_at: references/ruby/hash.rb:37
@@ -891,7 +891,7 @@ classes:
891
891
  body_kind: composed
892
892
  cexpr_target:
893
893
  prelude_at: references/ruby/io.rb:62
894
- purity: unknown
894
+ purity: dispatch
895
895
  arity: -2
896
896
  cfunc:
897
897
  defined_at: references/ruby/io.rb:62
@@ -906,7 +906,7 @@ classes:
906
906
  body_kind: composed
907
907
  cexpr_target:
908
908
  prelude_at: references/ruby/io.rb:120
909
- purity: unknown
909
+ purity: dispatch
910
910
  arity: -2
911
911
  cfunc:
912
912
  defined_at: references/ruby/io.rb:120
@@ -920,7 +920,7 @@ classes:
920
920
  body_kind: composed
921
921
  cexpr_target:
922
922
  prelude_at: references/ruby/io.rb:133
923
- purity: unknown
923
+ purity: dispatch
924
924
  arity: -1
925
925
  cfunc:
926
926
  defined_at: references/ruby/io.rb:133
@@ -1222,7 +1222,7 @@ classes:
1222
1222
  body_kind: composed
1223
1223
  cexpr_target:
1224
1224
  prelude_at: references/ruby/numeric.rb:308
1225
- purity: unknown
1225
+ purity: dispatch
1226
1226
  arity: 1
1227
1227
  cfunc:
1228
1228
  defined_at: references/ruby/numeric.rb:308