advanced features / phantom types

✓ 59 passing ✗ 5 failing ○ 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 ✗ Failing
010 module wildcard metatype — output
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 ✗ Failing
012 auto discharge explicit with multiple — backend-exec
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
030 taps with auto discharge
39 ✓ Passing
031 tap binding substitution
40 ✓ Passing
032 nested for scopes
41 ✗ Failing
035 autodischarge prefers void — backend-exec
42 ✓ Passing
036 autodischarge no void candidate
43 ✓ Passing
037 default discharge must be void
44 ✓ Passing
040 undisposed nested obligation
45 ✓ Passing
041 auto discharge single
46 ✗ Failing
042 metatype binding scope — output
47 ✓ Passing
050 union accepts either state
48 ✓ Passing
051 union with consume marker
49 ✓ Passing
052 escape field name mismatch
50 ✓ Passing
053 for loop obligation escape
51 ○ Planned
055 auto discharge cascade — Cascading auto-discharge: discharge creates new obligations that also need discharging
52 ✓ Passing
056 union per member consume marker
53 ✓ Passing
057 auto discharge emission parity
54 ✓ Passing
058 reject issue on input
55 ✓ Passing
059 reject consume on output
56 ✓ Passing
060 reject state mismatch on input
57 ✓ Passing
061 inline obligation cascade
58 ✗ Failing
062 reject identity struct mismatch — wrong-error
59 ✓ Passing
obligation lost at boundary
60 ✓ Passing
multiple cleanup paths
61 ✓ Passing
multiple resources cleanup
62 ✓ Passing
multiple resources partial cleanup
63 ✓ Passing
state variable wildcard
64 ✓ Passing
state variable constrained accepts
65 ✓ Passing
state variable constraint violation
66 ✓ Passing
state variable chaining
67 ○ Planned
phantom state mismatch — Feature: Phantom state mismatch detection
68 ✓ Passing
phantom state valid
69 ✓ Passing
multiple errors