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 docs
62 ○ Planned
phantom state mismatch — Feature: Phantom state mismatch detection
63 ✓ Passing
phantom state valid
64 ✓ Passing
multiple errors