rigortype 0.0.3 → 0.0.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.
- checksums.yaml +4 -4
- data/README.md +24 -7
- data/data/builtins/ruby_core/hash.yml +936 -0
- data/data/builtins/ruby_core/range.yml +389 -0
- data/data/builtins/ruby_core/set.yml +594 -0
- data/data/builtins/ruby_core/time.yml +750 -0
- data/lib/rigor/analysis/check_rules.rb +11 -3
- data/lib/rigor/builtins/imported_refinements.rb +192 -10
- data/lib/rigor/inference/acceptance.rb +181 -12
- data/lib/rigor/inference/builtins/hash_catalog.rb +40 -0
- data/lib/rigor/inference/builtins/range_catalog.rb +46 -0
- data/lib/rigor/inference/builtins/set_catalog.rb +54 -0
- data/lib/rigor/inference/builtins/time_catalog.rb +64 -0
- data/lib/rigor/inference/method_dispatcher/constant_folding.rb +28 -8
- data/lib/rigor/inference/method_dispatcher/iterator_dispatch.rb +103 -1
- data/lib/rigor/inference/method_dispatcher/overload_selector.rb +23 -7
- data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +135 -6
- data/lib/rigor/inference/method_parameter_binder.rb +29 -4
- data/lib/rigor/inference/narrowing.rb +2 -0
- data/lib/rigor/inference/statement_evaluator.rb +2 -0
- data/lib/rigor/rbs_extended.rb +167 -16
- data/lib/rigor/type/combinator.rb +90 -0
- data/lib/rigor/type/intersection.rb +135 -0
- data/lib/rigor/type/refined.rb +174 -0
- data/lib/rigor/type.rb +2 -0
- data/lib/rigor/version.rb +1 -1
- data/sig/rigor/rbs_extended.rbs +11 -0
- data/sig/rigor/type.rbs +40 -0
- metadata +11 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 23970981c0d0b952bc6885102dcf163fbb0cd0f00e4bb2232300676a6904d3a3
|
|
4
|
+
data.tar.gz: 07211b55ad358bcb535de36b86d00465c5ba708197ce0945667386b2eca0e3eb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 170f4ce6750090993b14cc4d899d2cf89a89cf1c2a0a086188988a9062b70d569db78488efa4d25805a42204f4b62ad02fee2f812ad51d36008bb75d648b58bf
|
|
7
|
+
data.tar.gz: 63df03ee2ef43fa69716911399d971e48da46567ab4f6b5dd4b9ee5c3543fca2db5a169f12f84c4a3964a293f50704190439fc1d32475f41808bfdac771eb50a
|
data/README.md
CHANGED
|
@@ -12,13 +12,20 @@ catalogue.
|
|
|
12
12
|
|
|
13
13
|
## Status
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
`master` is at the **fourth preview** (`v0.0.4`). The engine
|
|
16
|
+
recognises the bulk of canonical Ruby surface — local variables,
|
|
17
|
+
ivars / cvars / globals (intra- and cross-method), self typing,
|
|
18
|
+
lexical constant lookup, predicate narrowing
|
|
19
19
|
(`is_a?` / `==` / `===` / `case`-`when`), block parameter binding,
|
|
20
|
-
closure escape, Tuple / HashShape carriers
|
|
21
|
-
|
|
20
|
+
closure escape, Tuple / HashShape carriers — plus the v0.0.3
|
|
21
|
+
constant-folding surface and the v0.0.4 refinement-carrier
|
|
22
|
+
catalogue (`Type::Difference` / `Type::Refined` / `Type::Intersection`,
|
|
23
|
+
14 imported built-in refinement names through
|
|
24
|
+
`Builtins::ImportedRefinements`, and the symmetric
|
|
25
|
+
`rigor:v1:return:` / `rigor:v1:param:` / `rigor:v1:assert:`
|
|
26
|
+
RBS::Extended directive routes). See [CHANGELOG.md](CHANGELOG.md)
|
|
27
|
+
for the per-release surface and
|
|
28
|
+
[docs/CURRENT_WORK.md](docs/CURRENT_WORK.md) for the live slice
|
|
22
29
|
trail.
|
|
23
30
|
|
|
24
31
|
## Requirements
|
|
@@ -116,6 +123,16 @@ The first preview engine resolves:
|
|
|
116
123
|
typed receiver, wrong number of positional arguments. Both
|
|
117
124
|
consult RBS plus in-source `def` / `define_method` discovery so
|
|
118
125
|
reopened classes do not produce false positives.
|
|
126
|
+
- **`RBS::Extended` annotation routes** —
|
|
127
|
+
`rigor:v1:return: <refinement>` overrides a method's RBS-declared
|
|
128
|
+
return; `rigor:v1:param: <name> [is] <refinement>` tightens a
|
|
129
|
+
parameter at both the call boundary and inside the method body;
|
|
130
|
+
`rigor:v1:assert <name> is <refinement>` substitutes the
|
|
131
|
+
refinement carrier at the post-call scope. The right-hand side
|
|
132
|
+
accepts any Capitalised class name OR a kebab-case refinement
|
|
133
|
+
payload from the imported-built-in catalogue (including
|
|
134
|
+
parameterised forms `non-empty-array[Integer]` and bounded
|
|
135
|
+
ranges `int<5, 10>`).
|
|
119
136
|
|
|
120
137
|
See [docs/CURRENT_WORK.md](docs/CURRENT_WORK.md) for the canonical
|
|
121
138
|
status snapshot, [docs/internal-spec/inference-engine.md](docs/internal-spec/inference-engine.md)
|
|
@@ -130,7 +147,7 @@ decision records.
|
|
|
130
147
|
- `lib/rigor/inference` — `Scope`-driven typers, dispatchers, and
|
|
131
148
|
narrowing.
|
|
132
149
|
- `sig` — RBS signatures for Rigor itself.
|
|
133
|
-
- `spec` — RSpec test suite (
|
|
150
|
+
- `spec` — RSpec test suite (1250+ examples).
|
|
134
151
|
- `docs/adr` — architecture decision records.
|
|
135
152
|
- `docs/internal-spec` — engine contracts.
|
|
136
153
|
- `docs/type-specification` — type-language semantics.
|