advanced features / phantom types
✓ 59 passing ○ 5 planned
Lessons
1 ✓
Passing
001 module qualified phantom states
2 ✓
Passing 002 phantom state mismatch
3 ✓
Passing 003 unknown phantom module
4 ✓
Passing 004 cleanup obligation escape
5 ✓
Passing 005 cleanup obligation satisfied
6 ✓
Passing 006 cleanup consumed by disposal
7 ✓
Passing 007 use after disposal
8 ✓
Passing 008 obligation escapes via interface
9 ✓
Passing 009 universal wildcard metatype
10 ✓
Passing 010 module wildcard metatype
11 ✓
Passing 011 auto discharge multiple
12 ○
Planned 011 transition metatype — Feature: Transition metatype requires taps.eventToString and taps.branchToString which don't exist yet
13 ✓
Passing 012 auto discharge explicit with multiple
14 ✓
Passing 012 auto discharge none
15 ✓
Passing 013 auto discharge explicit ok
16 ✓
Passing 014 scope for loop inner
17 ✓
Passing 015 scope for loop outer
18 ✓
Passing 016 scope nested
19 ○
Planned 017 scope label loop — Auto-dispose for obligations in @loop branches not implemented
20 ✓
Passing 018 auto discharge escaped obligation
21 ✓
Passing 019 auto discharge branch constructor
22 ✓
Passing 019 for manual done ok
23 ○
Planned 020 auto discharge void event — TODO: Auto-dispose doesn't trigger before void event invocations
24 ✓
Passing 020 for manual each error
25 ✓
Passing 021 auto discharge multiple resources
26 ✓
Passing 021 for auto done ok
27 ✓
Passing 022 if manual both branches
28 ✓
Passing 023 if auto both branches
29 ✓
Passing 024 if hybrid manual auto
30 ✓
Passing 025 auto discharge disabled
31 ✓
Passing 025 nested if in for
32 ✓
Passing 026 auto discharge warn
33 ✓
Passing 026 nested for in if
34 ✓
Passing 027 db transaction pattern
35 ✓
Passing 027 default discharge annotation
36 ✓
Passing 028 ambiguous without default
37 ✓
Passing 028 optional branch obligation
38 ✓
Passing 029 auto discharge void chain
39 ✓
Passing 030 taps with auto discharge
40 ✓
Passing 031 tap binding substitution
41 ✓
Passing 032 nested for scopes
42 ✓
Passing 035 autodischarge prefers void
43 ✓
Passing 036 autodischarge no void candidate
44 ✓
Passing 037 default discharge must be void
45 ✓
Passing 040 undisposed nested obligation
46 ✓
Passing 041 auto discharge single
47 ✓
Passing 042 metatype binding scope
48 ✓
Passing 050 union accepts either state
49 ✓
Passing 051 union with consume marker
50 ✓
Passing 052 escape field name mismatch
51 ✓
Passing 053 for loop obligation escape
52 ○
Planned 055 auto discharge cascade — Cascading auto-discharge: discharge creates new obligations that also need discharging
53 ✓
Passing obligation lost at boundary
54 ✓
Passing multiple cleanup paths
55 ✓
Passing multiple resources cleanup
56 ✓
Passing multiple resources partial cleanup
57 ✓
Passing state variable wildcard
58 ✓
Passing state variable constrained accepts
59 ✓
Passing state variable constraint violation
60 ✓
Passing state variable chaining
61 ✓
Passing emitter inline flow numbering
Has docs62 ○
Planned phantom state mismatch — Feature: Phantom state mismatch detection
63 ✓
Passing phantom state valid
64 ✓
Passing multiple errors