rigortype 0.0.1

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 (73) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +373 -0
  3. data/README.md +152 -0
  4. data/exe/rigor +9 -0
  5. data/lib/rigor/analysis/check_rules.rb +503 -0
  6. data/lib/rigor/analysis/diagnostic.rb +35 -0
  7. data/lib/rigor/analysis/fact_store.rb +133 -0
  8. data/lib/rigor/analysis/result.rb +29 -0
  9. data/lib/rigor/analysis/runner.rb +119 -0
  10. data/lib/rigor/ast/type_node.rb +41 -0
  11. data/lib/rigor/ast.rb +22 -0
  12. data/lib/rigor/cli/type_of_command.rb +160 -0
  13. data/lib/rigor/cli/type_of_renderer.rb +88 -0
  14. data/lib/rigor/cli/type_scan_command.rb +160 -0
  15. data/lib/rigor/cli/type_scan_renderer.rb +165 -0
  16. data/lib/rigor/cli/type_scan_report.rb +32 -0
  17. data/lib/rigor/cli.rb +195 -0
  18. data/lib/rigor/configuration.rb +49 -0
  19. data/lib/rigor/environment/class_registry.rb +141 -0
  20. data/lib/rigor/environment/rbs_hierarchy.rb +64 -0
  21. data/lib/rigor/environment/rbs_loader.rb +244 -0
  22. data/lib/rigor/environment.rb +177 -0
  23. data/lib/rigor/inference/acceptance.rb +444 -0
  24. data/lib/rigor/inference/block_parameter_binder.rb +198 -0
  25. data/lib/rigor/inference/closure_escape_analyzer.rb +191 -0
  26. data/lib/rigor/inference/coverage_scanner.rb +85 -0
  27. data/lib/rigor/inference/expression_typer.rb +831 -0
  28. data/lib/rigor/inference/fallback.rb +35 -0
  29. data/lib/rigor/inference/fallback_tracer.rb +64 -0
  30. data/lib/rigor/inference/method_dispatcher/constant_folding.rb +102 -0
  31. data/lib/rigor/inference/method_dispatcher/overload_selector.rb +169 -0
  32. data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +421 -0
  33. data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +336 -0
  34. data/lib/rigor/inference/method_dispatcher.rb +213 -0
  35. data/lib/rigor/inference/method_parameter_binder.rb +257 -0
  36. data/lib/rigor/inference/multi_target_binder.rb +143 -0
  37. data/lib/rigor/inference/narrowing.rb +1008 -0
  38. data/lib/rigor/inference/rbs_type_translator.rb +219 -0
  39. data/lib/rigor/inference/scope_indexer.rb +468 -0
  40. data/lib/rigor/inference/statement_evaluator.rb +1017 -0
  41. data/lib/rigor/rbs_extended.rb +98 -0
  42. data/lib/rigor/scope.rb +340 -0
  43. data/lib/rigor/source/node_locator.rb +104 -0
  44. data/lib/rigor/source/node_walker.rb +37 -0
  45. data/lib/rigor/source.rb +15 -0
  46. data/lib/rigor/testing.rb +65 -0
  47. data/lib/rigor/trinary.rb +108 -0
  48. data/lib/rigor/type/accepts_result.rb +109 -0
  49. data/lib/rigor/type/bot.rb +57 -0
  50. data/lib/rigor/type/combinator.rb +148 -0
  51. data/lib/rigor/type/constant.rb +90 -0
  52. data/lib/rigor/type/dynamic.rb +60 -0
  53. data/lib/rigor/type/hash_shape.rb +246 -0
  54. data/lib/rigor/type/nominal.rb +83 -0
  55. data/lib/rigor/type/singleton.rb +65 -0
  56. data/lib/rigor/type/top.rb +56 -0
  57. data/lib/rigor/type/tuple.rb +84 -0
  58. data/lib/rigor/type/union.rb +65 -0
  59. data/lib/rigor/type.rb +23 -0
  60. data/lib/rigor/version.rb +5 -0
  61. data/lib/rigor.rb +29 -0
  62. data/sig/rigor/analysis/fact_store.rbs +51 -0
  63. data/sig/rigor/ast.rbs +11 -0
  64. data/sig/rigor/environment.rbs +59 -0
  65. data/sig/rigor/inference.rbs +151 -0
  66. data/sig/rigor/rbs_extended.rbs +22 -0
  67. data/sig/rigor/scope.rbs +49 -0
  68. data/sig/rigor/source.rbs +20 -0
  69. data/sig/rigor/testing.rbs +9 -0
  70. data/sig/rigor/trinary.rbs +29 -0
  71. data/sig/rigor/type.rbs +171 -0
  72. data/sig/rigor.rbs +70 -0
  73. metadata +260 -0
metadata ADDED
@@ -0,0 +1,260 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rigortype
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Rigor contributors
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-01 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: prism
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '1.0'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '2.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '1.0'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '2.0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: rbs
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '3.0'
39
+ - - "<"
40
+ - !ruby/object:Gem::Version
41
+ version: '5.0'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '3.0'
49
+ - - "<"
50
+ - !ruby/object:Gem::Version
51
+ version: '5.0'
52
+ - !ruby/object:Gem::Dependency
53
+ name: rake
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '13.0'
59
+ - - "<"
60
+ - !ruby/object:Gem::Version
61
+ version: '15.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '13.0'
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: '15.0'
72
+ - !ruby/object:Gem::Dependency
73
+ name: rspec
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '3.13'
79
+ - - "<"
80
+ - !ruby/object:Gem::Version
81
+ version: '4.0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '3.13'
89
+ - - "<"
90
+ - !ruby/object:Gem::Version
91
+ version: '4.0'
92
+ - !ruby/object:Gem::Dependency
93
+ name: rubocop
94
+ requirement: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '1.70'
99
+ - - "<"
100
+ - !ruby/object:Gem::Version
101
+ version: '2.0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '1.70'
109
+ - - "<"
110
+ - !ruby/object:Gem::Version
111
+ version: '2.0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rubocop-rake
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0.6'
119
+ - - "<"
120
+ - !ruby/object:Gem::Version
121
+ version: '1.0'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '0.6'
129
+ - - "<"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.0'
132
+ - !ruby/object:Gem::Dependency
133
+ name: rubocop-rspec
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '3.0'
139
+ - - "<"
140
+ - !ruby/object:Gem::Version
141
+ version: '4.0'
142
+ type: :development
143
+ prerelease: false
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: '3.0'
149
+ - - "<"
150
+ - !ruby/object:Gem::Version
151
+ version: '4.0'
152
+ description: Rigor is a CLI-first static analyzer for Ruby applications that prioritizes
153
+ type inference, clean application code, and zero runtime dependencies.
154
+ email:
155
+ - maintainers@example.invalid
156
+ executables:
157
+ - rigor
158
+ extensions: []
159
+ extra_rdoc_files: []
160
+ files:
161
+ - LICENSE
162
+ - README.md
163
+ - exe/rigor
164
+ - lib/rigor.rb
165
+ - lib/rigor/analysis/check_rules.rb
166
+ - lib/rigor/analysis/diagnostic.rb
167
+ - lib/rigor/analysis/fact_store.rb
168
+ - lib/rigor/analysis/result.rb
169
+ - lib/rigor/analysis/runner.rb
170
+ - lib/rigor/ast.rb
171
+ - lib/rigor/ast/type_node.rb
172
+ - lib/rigor/cli.rb
173
+ - lib/rigor/cli/type_of_command.rb
174
+ - lib/rigor/cli/type_of_renderer.rb
175
+ - lib/rigor/cli/type_scan_command.rb
176
+ - lib/rigor/cli/type_scan_renderer.rb
177
+ - lib/rigor/cli/type_scan_report.rb
178
+ - lib/rigor/configuration.rb
179
+ - lib/rigor/environment.rb
180
+ - lib/rigor/environment/class_registry.rb
181
+ - lib/rigor/environment/rbs_hierarchy.rb
182
+ - lib/rigor/environment/rbs_loader.rb
183
+ - lib/rigor/inference/acceptance.rb
184
+ - lib/rigor/inference/block_parameter_binder.rb
185
+ - lib/rigor/inference/closure_escape_analyzer.rb
186
+ - lib/rigor/inference/coverage_scanner.rb
187
+ - lib/rigor/inference/expression_typer.rb
188
+ - lib/rigor/inference/fallback.rb
189
+ - lib/rigor/inference/fallback_tracer.rb
190
+ - lib/rigor/inference/method_dispatcher.rb
191
+ - lib/rigor/inference/method_dispatcher/constant_folding.rb
192
+ - lib/rigor/inference/method_dispatcher/overload_selector.rb
193
+ - lib/rigor/inference/method_dispatcher/rbs_dispatch.rb
194
+ - lib/rigor/inference/method_dispatcher/shape_dispatch.rb
195
+ - lib/rigor/inference/method_parameter_binder.rb
196
+ - lib/rigor/inference/multi_target_binder.rb
197
+ - lib/rigor/inference/narrowing.rb
198
+ - lib/rigor/inference/rbs_type_translator.rb
199
+ - lib/rigor/inference/scope_indexer.rb
200
+ - lib/rigor/inference/statement_evaluator.rb
201
+ - lib/rigor/rbs_extended.rb
202
+ - lib/rigor/scope.rb
203
+ - lib/rigor/source.rb
204
+ - lib/rigor/source/node_locator.rb
205
+ - lib/rigor/source/node_walker.rb
206
+ - lib/rigor/testing.rb
207
+ - lib/rigor/trinary.rb
208
+ - lib/rigor/type.rb
209
+ - lib/rigor/type/accepts_result.rb
210
+ - lib/rigor/type/bot.rb
211
+ - lib/rigor/type/combinator.rb
212
+ - lib/rigor/type/constant.rb
213
+ - lib/rigor/type/dynamic.rb
214
+ - lib/rigor/type/hash_shape.rb
215
+ - lib/rigor/type/nominal.rb
216
+ - lib/rigor/type/singleton.rb
217
+ - lib/rigor/type/top.rb
218
+ - lib/rigor/type/tuple.rb
219
+ - lib/rigor/type/union.rb
220
+ - lib/rigor/version.rb
221
+ - sig/rigor.rbs
222
+ - sig/rigor/analysis/fact_store.rbs
223
+ - sig/rigor/ast.rbs
224
+ - sig/rigor/environment.rbs
225
+ - sig/rigor/inference.rbs
226
+ - sig/rigor/rbs_extended.rbs
227
+ - sig/rigor/scope.rbs
228
+ - sig/rigor/source.rbs
229
+ - sig/rigor/testing.rbs
230
+ - sig/rigor/trinary.rbs
231
+ - sig/rigor/type.rbs
232
+ homepage: https://github.com/rigortype/rigor
233
+ licenses:
234
+ - MPL-2.0
235
+ metadata:
236
+ bug_tracker_uri: https://github.com/rigortype/rigor/issues
237
+ source_code_uri: https://github.com/rigortype/rigor
238
+ documentation_uri: https://github.com/rigortype/rigor/tree/main/docs
239
+ rubygems_mfa_required: 'true'
240
+ rdoc_options: []
241
+ require_paths:
242
+ - lib
243
+ required_ruby_version: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - ">="
246
+ - !ruby/object:Gem::Version
247
+ version: 4.0.0
248
+ - - "<"
249
+ - !ruby/object:Gem::Version
250
+ version: '4.1'
251
+ required_rubygems_version: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ version: '0'
256
+ requirements: []
257
+ rubygems_version: 3.7.2
258
+ specification_version: 4
259
+ summary: Inference-first static analysis for Ruby.
260
+ test_files: []