rigortype 0.3.2 → 0.3.4

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 (179) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/data/builtins/ruby_core/array.yml +11 -24
  4. data/data/builtins/ruby_core/enumerable.yml +4 -8
  5. data/data/builtins/ruby_core/exception.yml +6 -9
  6. data/data/builtins/ruby_core/hash.yml +13 -20
  7. data/data/builtins/ruby_core/io.yml +6 -9
  8. data/data/builtins/ruby_core/numeric.yml +2 -3
  9. data/data/builtins/ruby_core/proc.yml +4 -8
  10. data/data/builtins/ruby_core/re.yml +6 -9
  11. data/data/builtins/ruby_core/set.yml +2 -3
  12. data/data/builtins/ruby_core/string.yml +4 -7
  13. data/data/builtins/ruby_core/struct.yml +0 -6
  14. data/data/builtins/ruby_core/time.yml +3 -6
  15. data/data/effects/core.yml +843 -0
  16. data/data/effects/registry.yml +67 -0
  17. data/docs/handbook/07-rbs-and-extended.md +106 -5
  18. data/docs/manual/02-cli-reference.md +311 -1
  19. data/docs/manual/03-configuration.md +84 -1
  20. data/docs/manual/04-diagnostics.md +14 -2
  21. data/docs/manual/16-rbs-extended-annotations.md +77 -0
  22. data/docs/manual/18-removing-dead-code.md +326 -0
  23. data/docs/manual/README.md +5 -0
  24. data/docs/manual/plugins/rigor-actionmailer.md +5 -0
  25. data/docs/manual/plugins/rigor-activejob.md +47 -0
  26. data/docs/manual/plugins/rigor-factorybot.md +16 -0
  27. data/docs/manual/plugins/rigor-pundit.md +26 -0
  28. data/docs/manual/plugins/rigor-rails-routes.md +41 -2
  29. data/docs/manual/plugins/rigor-rspec-rails.md +5 -0
  30. data/docs/manual/plugins/rigor-rspec.md +8 -0
  31. data/docs/manual/plugins/rigor-sidekiq.md +54 -0
  32. data/lib/rigor/analysis/check_rules/always_truthy_condition_collector.rb +8 -0
  33. data/lib/rigor/analysis/check_rules/declaration_sourced_guard.rb +53 -0
  34. data/lib/rigor/analysis/check_rules/rule_ids.rb +28 -2
  35. data/lib/rigor/analysis/check_rules/rule_walk.rb +7 -0
  36. data/lib/rigor/analysis/check_rules.rb +62 -22
  37. data/lib/rigor/analysis/incremental_session.rb +140 -6
  38. data/lib/rigor/analysis/reachability/graph.rb +244 -0
  39. data/lib/rigor/analysis/reachability/plugin_roots.rb +164 -0
  40. data/lib/rigor/analysis/reachability/project_files.rb +58 -0
  41. data/lib/rigor/analysis/reachability/scan.rb +241 -0
  42. data/lib/rigor/analysis/reachability/signature_scan.rb +134 -0
  43. data/lib/rigor/analysis/rule_catalog.rb +163 -1
  44. data/lib/rigor/analysis/run_cache_key.rb +16 -0
  45. data/lib/rigor/analysis/runner/declaration_position.rb +54 -0
  46. data/lib/rigor/analysis/runner/effect_annotation_residual_pass.rb +108 -0
  47. data/lib/rigor/analysis/runner/effect_envelope_pass.rb +358 -0
  48. data/lib/rigor/analysis/runner/envelope_messages.rb +61 -0
  49. data/lib/rigor/analysis/runner/pool_coordinator.rb +68 -10
  50. data/lib/rigor/analysis/runner.rb +420 -10
  51. data/lib/rigor/analysis/severity_stamp.rb +2 -1
  52. data/lib/rigor/analysis/worker_session.rb +58 -2
  53. data/lib/rigor/bleeding_edge.rb +22 -0
  54. data/lib/rigor/cache/incremental_snapshot.rb +24 -5
  55. data/lib/rigor/cli/check_command.rb +13 -1
  56. data/lib/rigor/cli/check_runner_factory.rb +4 -1
  57. data/lib/rigor/cli/effects_command.rb +131 -0
  58. data/lib/rigor/cli/effects_diff_renderer.rb +123 -0
  59. data/lib/rigor/cli/effects_explain_renderer.rb +68 -0
  60. data/lib/rigor/cli/effects_renderer.rb +54 -0
  61. data/lib/rigor/cli/effects_report.rb +53 -0
  62. data/lib/rigor/cli/effects_snapshot_command.rb +256 -0
  63. data/lib/rigor/cli/unused_command.rb +288 -0
  64. data/lib/rigor/cli.rb +16 -0
  65. data/lib/rigor/configuration/severity_profile.rb +23 -0
  66. data/lib/rigor/configuration.rb +296 -14
  67. data/lib/rigor/effects/attribution.rb +76 -0
  68. data/lib/rigor/effects/catalog.rb +275 -0
  69. data/lib/rigor/effects/collector.rb +182 -0
  70. data/lib/rigor/effects/config_envelopes.rb +185 -0
  71. data/lib/rigor/effects/discharge.rb +69 -0
  72. data/lib/rigor/effects/effect_table.rb +92 -0
  73. data/lib/rigor/effects/entry_points.rb +93 -0
  74. data/lib/rigor/effects/envelope.rb +86 -0
  75. data/lib/rigor/effects/envelope_check.rb +172 -0
  76. data/lib/rigor/effects/envelope_index.rb +157 -0
  77. data/lib/rigor/effects/file_collection.rb +160 -0
  78. data/lib/rigor/effects/framework_units.rb +167 -0
  79. data/lib/rigor/effects/identity.rb +104 -0
  80. data/lib/rigor/effects/label.rb +77 -0
  81. data/lib/rigor/effects/label_intent.rb +73 -0
  82. data/lib/rigor/effects/label_set.rb +136 -0
  83. data/lib/rigor/effects/liskov_check.rb +167 -0
  84. data/lib/rigor/effects/local_ownership.rb +132 -0
  85. data/lib/rigor/effects/method_key.rb +40 -0
  86. data/lib/rigor/effects/mutation_classifier.rb +92 -0
  87. data/lib/rigor/effects/narrowing.rb +202 -0
  88. data/lib/rigor/effects/origin.rb +66 -0
  89. data/lib/rigor/effects/path_finder.rb +89 -0
  90. data/lib/rigor/effects/plugin_facts.rb +335 -0
  91. data/lib/rigor/effects/propagator.rb +275 -0
  92. data/lib/rigor/effects/registry.rb +193 -0
  93. data/lib/rigor/effects/scanner.rb +290 -0
  94. data/lib/rigor/effects/signature_sources.rb +74 -0
  95. data/lib/rigor/effects/snapshot.rb +380 -0
  96. data/lib/rigor/effects/snapshot_diff.rb +265 -0
  97. data/lib/rigor/effects/summary.rb +154 -0
  98. data/lib/rigor/effects/taint_cause.rb +38 -0
  99. data/lib/rigor/effects/unit_scan.rb +572 -0
  100. data/lib/rigor/effects/unknown_label_check.rb +86 -0
  101. data/lib/rigor/effects/unknown_label_report.rb +59 -0
  102. data/lib/rigor/effects.rb +47 -0
  103. data/lib/rigor/environment/rbs_loader.rb +34 -0
  104. data/lib/rigor/environment.rb +8 -1
  105. data/lib/rigor/flow_contribution/element.rb +1 -0
  106. data/lib/rigor/flow_contribution/merge_result.rb +5 -3
  107. data/lib/rigor/flow_contribution/merger.rb +16 -1
  108. data/lib/rigor/flow_contribution.rb +20 -4
  109. data/lib/rigor/inference/anonymous_meta_class.rb +81 -0
  110. data/lib/rigor/inference/expression_typer.rb +74 -17
  111. data/lib/rigor/inference/fork_map.rb +45 -11
  112. data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +147 -17
  113. data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +97 -2
  114. data/lib/rigor/inference/method_dispatcher.rb +41 -10
  115. data/lib/rigor/inference/optimistic_origin.rb +68 -3
  116. data/lib/rigor/inference/pre_eval_constants.rb +189 -0
  117. data/lib/rigor/inference/scope_indexer.rb +134 -31
  118. data/lib/rigor/inference/singleton_object_constant.rb +63 -0
  119. data/lib/rigor/inference/statement_evaluator.rb +25 -12
  120. data/lib/rigor/plugin/base.rb +24 -0
  121. data/lib/rigor/plugin/effect_attribution.rb +208 -0
  122. data/lib/rigor/plugin/effect_edge.rb +101 -0
  123. data/lib/rigor/plugin/effect_entry_points.rb +51 -0
  124. data/lib/rigor/plugin/first_party.rb +57 -0
  125. data/lib/rigor/plugin/isolation.rb +4 -1
  126. data/lib/rigor/plugin/manifest.rb +103 -3
  127. data/lib/rigor/plugin/node_rule_walk.rb +6 -0
  128. data/lib/rigor/plugin/registry.rb +48 -0
  129. data/lib/rigor/plugin.rb +1 -0
  130. data/lib/rigor/protection/closure_kill_oracle.rb +20 -1
  131. data/lib/rigor/rbs_extended/envelope_scanner.rb +160 -0
  132. data/lib/rigor/rbs_extended.rb +168 -0
  133. data/lib/rigor/reflection.rb +131 -30
  134. data/lib/rigor/scope.rb +62 -2
  135. data/lib/rigor/source/node_walker.rb +12 -0
  136. data/lib/rigor/type/anonymous_class_name.rb +40 -0
  137. data/lib/rigor/type/nominal.rb +5 -2
  138. data/lib/rigor/type/singleton.rb +4 -1
  139. data/lib/rigor/version.rb +1 -1
  140. data/lib/rigor.rb +1 -0
  141. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable/effects.rb +90 -0
  142. data/plugins/rigor-actioncable/lib/rigor/plugin/actioncable.rb +7 -1
  143. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer/effects.rb +85 -0
  144. data/plugins/rigor-actionmailer/lib/rigor/plugin/actionmailer.rb +8 -1
  145. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/effects.rb +152 -0
  146. data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack.rb +9 -1
  147. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/effects.rb +156 -0
  148. data/plugins/rigor-activejob/lib/rigor/plugin/activejob/recurring_scan.rb +113 -0
  149. data/plugins/rigor-activejob/lib/rigor/plugin/activejob.rb +68 -3
  150. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/effects.rb +186 -0
  151. data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord.rb +12 -1
  152. data/plugins/rigor-activerecord/sig/active_record/relation.rbs +145 -0
  153. data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage/effects.rb +77 -0
  154. data/plugins/rigor-activestorage/lib/rigor/plugin/activestorage.rb +6 -1
  155. data/plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext/effects.rb +143 -0
  156. data/plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext.rb +9 -1
  157. data/plugins/rigor-activesupport-core-ext/sig/active_support/core_ext.rbs +385 -28
  158. data/plugins/rigor-factorybot/lib/rigor/plugin/factorybot.rb +30 -2
  159. data/plugins/rigor-pundit/lib/rigor/plugin/pundit/authorization_scan.rb +151 -0
  160. data/plugins/rigor-pundit/lib/rigor/plugin/pundit.rb +46 -3
  161. data/plugins/rigor-rails/lib/rigor-rails.rb +1 -0
  162. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/effects.rb +47 -0
  163. data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n.rb +7 -1
  164. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/acronyms.rb +81 -0
  165. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/helper_table.rb +13 -1
  166. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/routes_parser.rb +202 -15
  167. data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes.rb +43 -3
  168. data/plugins/rigor-railties/lib/rigor/plugin/railties/effects.rb +171 -0
  169. data/plugins/rigor-railties/lib/rigor/plugin/railties.rb +62 -0
  170. data/plugins/rigor-railties/lib/rigor-railties.rb +3 -0
  171. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq/schedule_scan.rb +122 -0
  172. data/plugins/rigor-sidekiq/lib/rigor/plugin/sidekiq.rb +56 -3
  173. data/sig/rigor/analysis/fact_store.rbs +1 -0
  174. data/sig/rigor/inference.rbs +2 -0
  175. data/sig/rigor/rbs_extended.rbs +6 -0
  176. data/sig/rigor/scope.rbs +4 -0
  177. data/sig/rigor.rbs +21 -1
  178. data/skills/rigor-unused-adjudicate/SKILL.md +90 -0
  179. metadata +83 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53ce9543e32229f3a80491f33886ac27cc0e1d3c0bb834536c703ab669188dd2
4
- data.tar.gz: f9bb40e6e3a44a8bd362cee2b5f46a406d36391c5cf3053982950f4acae574df
3
+ metadata.gz: ffcad04b990dc4220690a6906bb96306056a02792017fcf41200b8865c040846
4
+ data.tar.gz: b62aa8767389da9ddd808df2a74d09447aee4d5a9c0deb0d7d4292da5ff7669b
5
5
  SHA512:
6
- metadata.gz: f233af3b211b096772e29ee29eda2ef7a7bca353e02f300c0f6ed36cbfb66deb73df709486896207f9459a0fbb5203c155ed257790c7d8122562780b1a532391
7
- data.tar.gz: 21ed0e73b967f692d6df3a65a9cd6444b5b801b545cb82cb59e4cec8d0effdcec4e8f9b97ebd7a811a0ebe8a08366bdaabbb07df1338a59a939e5d855281b2be
6
+ metadata.gz: f55c7fb8b035ba5364d97163f6ae66e1212d544d5fa2821110a230818be1f64bd2d803ff88739af394d57c39a3bb6ed77737451a68f1cfb047276e23c6ede98a
7
+ data.tar.gz: 85aafda9ac9c46b73757c5690484d97d77b1dea26cc499252d39a24aefbd9f58fcf0dfda759a11e7dea553b4d8fac3ae83db9a165e1e926ff62a8fdecad78967
data/README.md CHANGED
@@ -231,7 +231,7 @@ rigor docs --list # list every bundled page
231
231
 
232
232
  ## Status
233
233
 
234
- Current release: **`v0.3.2`** (2026-08-08) — on the
234
+ Current release: **`v0.3.4`** (2026-08-21) — on the
235
235
  `0.3.x` line, continuing the evaluation era opened by `v0.2.0`, the first
236
236
  publicly-announced (general / evaluation) release. The line publishes
237
237
  an enumerated [compatibility surface](docs/compatibility.md) as a
@@ -83,9 +83,8 @@ classes:
83
83
  arity: 0
84
84
  defined_at: references/ruby/array.c:8882
85
85
  c_body_at: references/ruby/array.c:3148
86
- c_effects:
87
- - mutate
88
- purity: mutates_self
86
+ c_effects: []
87
+ purity: leaf
89
88
  rbs:
90
89
  - "() -> Array[E]"
91
90
  rbs_at: references/rbs/core/array.rbs:3795
@@ -97,7 +96,6 @@ classes:
97
96
  c_body_at: references/ruby/array.c:3184
98
97
  c_effects:
99
98
  - block
100
- - mutate
101
99
  - raises
102
100
  purity: block_dependent
103
101
  rbs:
@@ -234,9 +232,8 @@ classes:
234
232
  arity: -1
235
233
  defined_at: references/ruby/array.c:8896
236
234
  c_body_at: references/ruby/array.c:5721
237
- c_effects:
238
- - mutate
239
- purity: mutates_self
235
+ c_effects: []
236
+ purity: leaf
240
237
  rbs:
241
238
  - "(*array[untyped] other_arrays) -> Array[E]"
242
239
  rbs_at: references/rbs/core/array.rbs:1596
@@ -547,9 +544,8 @@ classes:
547
544
  arity: 0
548
545
  defined_at: references/ruby/array.c:8924
549
546
  c_body_at: references/ruby/array.c:3601
550
- c_effects:
551
- - mutate
552
- purity: mutates_self
547
+ c_effects: []
548
+ purity: leaf
553
549
  rbs:
554
550
  - "() -> Array[E]"
555
551
  - "() { (E a, E b) -> Comparable::_CompareToZero } -> Array[E]"
@@ -593,7 +589,6 @@ classes:
593
589
  c_body_at: references/ruby/array.c:3759
594
590
  c_effects:
595
591
  - block
596
- - mutate
597
592
  purity: block_dependent
598
593
  rbs:
599
594
  - "[T] () { (E item) -> T } -> Array[T]"
@@ -621,7 +616,6 @@ classes:
621
616
  c_body_at: references/ruby/array.c:3759
622
617
  c_effects:
623
618
  - block
624
- - mutate
625
619
  purity: block_dependent
626
620
  map!:
627
621
  source: c
@@ -641,7 +635,6 @@ classes:
641
635
  c_body_at: references/ruby/array.c:4000
642
636
  c_effects:
643
637
  - block
644
- - mutate
645
638
  purity: block_dependent
646
639
  rbs:
647
640
  - "() { (E element) -> boolish } -> Array[E]"
@@ -668,7 +661,6 @@ classes:
668
661
  c_body_at: references/ruby/array.c:4000
669
662
  c_effects:
670
663
  - block
671
- - mutate
672
664
  purity: block_dependent
673
665
  filter!:
674
666
  source: c
@@ -770,7 +762,6 @@ classes:
770
762
  c_body_at: references/ruby/array.c:4680
771
763
  c_effects:
772
764
  - block
773
- - mutate
774
765
  purity: block_dependent
775
766
  rbs:
776
767
  - "() -> Array[[ E ]]"
@@ -790,9 +781,8 @@ classes:
790
781
  defined_at: references/ruby/array.c:8943
791
782
  c_body_at: references/ruby/array.c:4753
792
783
  c_effects:
793
- - mutate
794
784
  - raises
795
- purity: mutates_self
785
+ purity: leaf
796
786
  rbs:
797
787
  - "() -> Array[Array[untyped]]"
798
788
  rbs_at: references/rbs/core/array.rbs:3857
@@ -938,9 +928,8 @@ classes:
938
928
  arity: 1
939
929
  defined_at: references/ruby/array.c:8959
940
930
  c_body_at: references/ruby/array.c:5673
941
- c_effects:
942
- - mutate
943
- purity: mutates_self
931
+ c_effects: []
932
+ purity: leaf
944
933
  rbs:
945
934
  - "(array[untyped] other_array) -> Array[E]"
946
935
  rbs_at: references/rbs/core/array.rbs:726
@@ -950,9 +939,8 @@ classes:
950
939
  arity: 1
951
940
  defined_at: references/ruby/array.c:8960
952
941
  c_body_at: references/ruby/array.c:5782
953
- c_effects:
954
- - mutate
955
- purity: mutates_self
942
+ c_effects: []
943
+ purity: leaf
956
944
  rbs:
957
945
  - "(array[untyped] other_array) -> Array[E]"
958
946
  rbs_at: references/rbs/core/array.rbs:675
@@ -1175,7 +1163,6 @@ classes:
1175
1163
  c_body_at: references/ruby/array.c:7668
1176
1164
  c_effects:
1177
1165
  - block
1178
- - mutate
1179
1166
  - raises
1180
1167
  purity: block_dependent
1181
1168
  rbs:
@@ -58,9 +58,8 @@ classes:
58
58
  arity: 0
59
59
  defined_at: references/ruby/enum.c:5210
60
60
  c_body_at: references/ruby/enum.c:1387
61
- c_effects:
62
- - mutate
63
- purity: mutates_self
61
+ c_effects: []
62
+ purity: leaf
64
63
  sort_by:
65
64
  source: c
66
65
  cfunc: enum_sort_by
@@ -69,7 +68,6 @@ classes:
69
68
  c_body_at: references/ruby/enum.c:1707
70
69
  c_effects:
71
70
  - block
72
- - mutate
73
71
  - raises
74
72
  purity: block_dependent
75
73
  grep:
@@ -248,9 +246,8 @@ classes:
248
246
  arity: -1
249
247
  defined_at: references/ruby/enum.c:5231
250
248
  c_body_at: references/ruby/enum.c:1285
251
- c_effects:
252
- - mutate
253
- purity: mutates_self
249
+ c_effects: []
250
+ purity: leaf
254
251
  first:
255
252
  source: c
256
253
  cfunc: enum_first
@@ -542,7 +539,6 @@ classes:
542
539
  c_body_at: references/ruby/enum.c:4905
543
540
  c_effects:
544
541
  - block
545
- - mutate
546
542
  purity: block_dependent
547
543
  compact:
548
544
  source: c
@@ -101,9 +101,8 @@ classes:
101
101
  arity: -1
102
102
  defined_at: references/ruby/error.c:3642
103
103
  c_body_at: references/ruby/error.c:1726
104
- c_effects:
105
- - mutate
106
- purity: mutates_self
104
+ c_effects: []
105
+ purity: leaf
107
106
  rbs:
108
107
  - "(?highlight: bool?, ?order: (:top | :bottom | string)?) -> String"
109
108
  rbs_at: references/rbs/core/exception.rbs:484
@@ -113,9 +112,8 @@ classes:
113
112
  arity: 0
114
113
  defined_at: references/ruby/error.c:3643
115
114
  c_body_at: references/ruby/error.c:1837
116
- c_effects:
117
- - mutate
118
- purity: mutates_self
115
+ c_effects: []
116
+ purity: leaf
119
117
  rbs:
120
118
  - "() -> String"
121
119
  rbs_at: references/rbs/core/exception.rbs:305
@@ -635,7 +633,6 @@ classes:
635
633
  arity: 0
636
634
  defined_at: references/ruby/error.c:3727
637
635
  c_body_at: references/ruby/error.c:263
638
- c_effects:
639
- - mutate
640
- purity: mutates_self
636
+ c_effects: []
637
+ purity: leaf
641
638
  undefined: []
@@ -399,9 +399,8 @@ classes:
399
399
  arity: 0
400
400
  defined_at: references/ruby/hash.c:7394
401
401
  c_body_at: references/ruby/hash.c:3770
402
- c_effects:
403
- - mutate
404
- purity: mutates_self
402
+ c_effects: []
403
+ purity: leaf
405
404
  rbs:
406
405
  - "() -> Array[K]"
407
406
  rbs_at: references/rbs/core/hash.rbs:1430
@@ -411,9 +410,8 @@ classes:
411
410
  arity: 0
412
411
  defined_at: references/ruby/hash.c:7395
413
412
  c_body_at: references/ruby/hash.c:3817
414
- c_effects:
415
- - mutate
416
- purity: mutates_self
413
+ c_effects: []
414
+ purity: leaf
417
415
  rbs:
418
416
  - "() -> Array[V]"
419
417
  rbs_at: references/rbs/core/hash.rbs:2098
@@ -423,9 +421,8 @@ classes:
423
421
  arity: -1
424
422
  defined_at: references/ruby/hash.c:7396
425
423
  c_body_at: references/ruby/hash.c:2689
426
- c_effects:
427
- - mutate
428
- purity: mutates_self
424
+ c_effects: []
425
+ purity: leaf
429
426
  rbs:
430
427
  - "(*_Key arg0) -> Array[V?]"
431
428
  rbs_at: references/rbs/core/hash.rbs:2116
@@ -435,9 +432,8 @@ classes:
435
432
  arity: -1
436
433
  defined_at: references/ruby/hash.c:7397
437
434
  c_body_at: references/ruby/hash.c:2725
438
- c_effects:
439
- - mutate
440
- purity: mutates_self
435
+ c_effects: []
436
+ purity: leaf
441
437
  rbs:
442
438
  - "(*_Key keys) -> Array[V]"
443
439
  - "[K2 < _Key, T] (*K2 keys) { (K2 key) -> T } -> Array[V | T]"
@@ -567,9 +563,8 @@ classes:
567
563
  arity: -1
568
564
  defined_at: references/ruby/hash.c:7409
569
565
  c_body_at: references/ruby/hash.c:2620
570
- c_effects:
571
- - mutate
572
- purity: mutates_self
566
+ c_effects: []
567
+ purity: leaf
573
568
  rbs:
574
569
  - "[K2 < _Key] (*K2 keys) -> Hash[K2, V]"
575
570
  rbs_at: references/rbs/core/hash.rbs:1703
@@ -579,9 +574,8 @@ classes:
579
574
  arity: -1
580
575
  defined_at: references/ruby/hash.c:7410
581
576
  c_body_at: references/ruby/hash.c:2655
582
- c_effects:
583
- - mutate
584
- purity: mutates_self
577
+ c_effects: []
578
+ purity: leaf
585
579
  rbs:
586
580
  - "(*_Key keys) -> Hash[K, V]"
587
581
  rbs_at: references/rbs/core/hash.rbs:1151
@@ -897,9 +891,8 @@ classes:
897
891
  defined_at: references/ruby/hash.c:7355
898
892
  c_body_at: references/ruby/hash.c:1787
899
893
  c_effects:
900
- - mutate
901
894
  - raises
902
- purity: mutates_self
895
+ purity: leaf
903
896
  rbs:
904
897
  - "[K, V] (hash[K, V] hash) -> instance"
905
898
  - "[K, V] (array[_Pair[K, V]] two_element_arrays) -> instance"
@@ -1282,9 +1282,8 @@ classes:
1282
1282
  arity: -1
1283
1283
  defined_at: references/ruby/io.c:15906
1284
1284
  c_body_at: references/ruby/io.c:13884
1285
- c_effects:
1286
- - mutate
1287
- purity: mutates_self
1285
+ c_effects: []
1286
+ purity: leaf
1288
1287
  readpartial:
1289
1288
  source: c
1290
1289
  cfunc: argf_readpartial
@@ -1307,18 +1306,16 @@ classes:
1307
1306
  arity: -1
1308
1307
  defined_at: references/ruby/io.c:15909
1309
1308
  c_body_at: references/ruby/io.c:10611
1310
- c_effects:
1311
- - mutate
1312
- purity: mutates_self
1309
+ c_effects: []
1310
+ purity: leaf
1313
1311
  to_a:
1314
1312
  source: c
1315
1313
  cfunc: argf_readlines
1316
1314
  arity: -1
1317
1315
  defined_at: references/ruby/io.c:15910
1318
1316
  c_body_at: references/ruby/io.c:10611
1319
- c_effects:
1320
- - mutate
1321
- purity: mutates_self
1317
+ c_effects: []
1318
+ purity: leaf
1322
1319
  gets:
1323
1320
  source: c
1324
1321
  cfunc: argf_gets
@@ -1294,9 +1294,8 @@ classes:
1294
1294
  arity: 0
1295
1295
  defined_at: references/ruby/numeric.c:6656
1296
1296
  c_body_at: references/ruby/numeric.c:951
1297
- c_effects:
1298
- - mutate
1299
- purity: mutates_self
1297
+ c_effects: []
1298
+ purity: leaf
1300
1299
  rbs:
1301
1300
  - "() -> String"
1302
1301
  rbs_at: references/rbs/core/float.rbs:1156
@@ -419,9 +419,8 @@ classes:
419
419
  defined_at: references/ruby/proc.c:4621
420
420
  c_body_at: references/ruby/proc.c:3339
421
421
  c_effects:
422
- - mutate
423
422
  - dispatch
424
- purity: mutates_self
423
+ purity: dispatch
425
424
  rbs:
426
425
  - "() -> String"
427
426
  rbs_at: references/rbs/core/method.rbs:87
@@ -432,9 +431,8 @@ classes:
432
431
  defined_at: references/ruby/proc.c:4622
433
432
  c_body_at: references/ruby/proc.c:3339
434
433
  c_effects:
435
- - mutate
436
434
  - dispatch
437
- purity: mutates_self
435
+ purity: dispatch
438
436
  to_proc:
439
437
  source: c
440
438
  cfunc: method_to_proc
@@ -621,9 +619,8 @@ classes:
621
619
  defined_at: references/ruby/proc.c:4648
622
620
  c_body_at: references/ruby/proc.c:3339
623
621
  c_effects:
624
- - mutate
625
622
  - dispatch
626
- purity: mutates_self
623
+ purity: dispatch
627
624
  rbs:
628
625
  - "() -> String"
629
626
  rbs_at: references/rbs/core/unbound_method.rbs:212
@@ -634,9 +631,8 @@ classes:
634
631
  defined_at: references/ruby/proc.c:4649
635
632
  c_body_at: references/ruby/proc.c:3339
636
633
  c_effects:
637
- - mutate
638
634
  - dispatch
639
- purity: mutates_self
635
+ purity: dispatch
640
636
  name:
641
637
  source: c
642
638
  cfunc: method_name
@@ -578,9 +578,8 @@ classes:
578
578
  arity: 1
579
579
  defined_at: references/ruby/re.c:4902
580
580
  c_body_at: references/ruby/re.c:2495
581
- c_effects:
582
- - mutate
583
- purity: mutates_self
581
+ c_effects: []
582
+ purity: leaf
584
583
  rbs:
585
584
  - "(Array[Symbol]? array_of_names) -> Hash[Symbol, String?]"
586
585
  rbs_at: references/rbs/core/match_data.rbs:273
@@ -590,9 +589,8 @@ classes:
590
589
  arity: -1
591
590
  defined_at: references/ruby/re.c:4903
592
591
  c_body_at: references/ruby/re.c:2321
593
- c_effects:
594
- - mutate
595
- purity: mutates_self
592
+ c_effects: []
593
+ purity: leaf
596
594
  rbs:
597
595
  - "(*capture | range[int?] backrefs) -> Array[String?]"
598
596
  rbs_at: references/rbs/core/match_data.rbs:636
@@ -635,9 +633,8 @@ classes:
635
633
  arity: 0
636
634
  defined_at: references/ruby/re.c:4907
637
635
  c_body_at: references/ruby/re.c:2608
638
- c_effects:
639
- - mutate
640
- purity: mutates_self
636
+ c_effects: []
637
+ purity: leaf
641
638
  rbs:
642
639
  - "() -> String"
643
640
  rbs_at: references/rbs/core/match_data.rbs:353
@@ -563,9 +563,8 @@ classes:
563
563
  arity: 0
564
564
  defined_at: references/ruby/set.c:2309
565
565
  c_body_at: references/ruby/set.c:644
566
- c_effects:
567
- - mutate
568
- purity: mutates_self
566
+ c_effects: []
567
+ purity: leaf
569
568
  rbs:
570
569
  - "() -> Array[A]"
571
570
  rbs_at: references/rbs/core/set.rbs:729
@@ -981,7 +981,6 @@ classes:
981
981
  c_body_at: references/ruby/string.c:10666
982
982
  c_effects:
983
983
  - block
984
- - mutate
985
984
  purity: block_dependent
986
985
  rbs:
987
986
  - "(Regexp pattern) -> Array[String | Array[String?]]"
@@ -1543,9 +1542,8 @@ classes:
1543
1542
  arity: -1
1544
1543
  defined_at: references/ruby/string.c:12791
1545
1544
  c_body_at: references/ruby/string.c:2143
1546
- c_effects:
1547
- - mutate
1548
- purity: mutates_self
1545
+ c_effects: []
1546
+ purity: leaf
1549
1547
  try_convert:
1550
1548
  source: c
1551
1549
  cfunc: rb_str_s_try_convert
@@ -1602,9 +1600,8 @@ classes:
1602
1600
  arity: 0
1603
1601
  defined_at: references/ruby/string.c:12964
1604
1602
  c_body_at: references/ruby/string.c:12308
1605
- c_effects:
1606
- - mutate
1607
- purity: mutates_self
1603
+ c_effects: []
1604
+ purity: leaf
1608
1605
  rbs:
1609
1606
  - "() -> String"
1610
1607
  rbs_at: references/rbs/core/symbol.rbs:332
@@ -118,7 +118,6 @@ classes:
118
118
  c_body_at: references/ruby/struct.c:1091
119
119
  c_effects:
120
120
  - block
121
- - mutate
122
121
  purity: block_dependent
123
122
  rbs:
124
123
  - "() -> Hash[Symbol, E]"
@@ -208,7 +207,6 @@ classes:
208
207
  c_body_at: references/ruby/struct.c:1388
209
208
  c_effects:
210
209
  - block
211
- - mutate
212
210
  purity: block_dependent
213
211
  rbs:
214
212
  - "() -> Enumerator[E, Array[E]]"
@@ -222,7 +220,6 @@ classes:
222
220
  c_body_at: references/ruby/struct.c:1388
223
221
  c_effects:
224
222
  - block
225
- - mutate
226
223
  purity: block_dependent
227
224
  values_at:
228
225
  source: c
@@ -286,7 +283,6 @@ classes:
286
283
  c_body_at: references/ruby/struct.c:643
287
284
  c_effects:
288
285
  - block
289
- - mutate
290
286
  - raises
291
287
  purity: block_dependent
292
288
  rbs:
@@ -391,7 +387,6 @@ classes:
391
387
  c_body_at: references/ruby/struct.c:1091
392
388
  c_effects:
393
389
  - block
394
- - mutate
395
390
  purity: block_dependent
396
391
  members:
397
392
  source: c
@@ -434,7 +429,6 @@ classes:
434
429
  c_body_at: references/ruby/struct.c:1709
435
430
  c_effects:
436
431
  - block
437
- - mutate
438
432
  - raises
439
433
  purity: block_dependent
440
434
  members:
@@ -216,9 +216,8 @@ classes:
216
216
  defined_at: references/ruby/time.c:6006
217
217
  c_body_at: references/ruby/time.c:4406
218
218
  c_effects:
219
- - mutate
220
219
  - dispatch
221
- purity: mutates_self
220
+ purity: dispatch
222
221
  rbs:
223
222
  - "() -> String"
224
223
  rbs_at: references/rbs/core/time.rbs:1182
@@ -241,9 +240,8 @@ classes:
241
240
  defined_at: references/ruby/time.c:6008
242
241
  c_body_at: references/ruby/time.c:5165
243
242
  c_effects:
244
- - mutate
245
243
  - raises
246
- purity: mutates_self
244
+ purity: leaf
247
245
  rbs:
248
246
  - "(Array[Symbol]?) -> Hash[Symbol, Integer]"
249
247
  rbs_at: references/rbs/core/time.rbs:913
@@ -672,9 +670,8 @@ classes:
672
670
  defined_at: references/ruby/time.c:6053
673
671
  c_body_at: references/ruby/time.c:5315
674
672
  c_effects:
675
- - mutate
676
673
  - dispatch
677
- purity: mutates_self
674
+ purity: dispatch
678
675
  rbs:
679
676
  - "(?Integer fraction_digits) -> String"
680
677
  rbs_at: references/rbs/core/time.rbs:1663