compiler features / parser
✓ 271 passing ○ 9 planned
Lessons
1 ✓
Passing
lenient multiple errors
2 ✓
Passing 001 event multiline shape
3 ✓
Passing 003 conditional imports
4 ✓
Passing 004 branch when clauses
5 ✓
Passing 006 flow checker validation
6 ✓
Passing 007 flow checker missing else
7 ✓
Passing 008 tap nested continuation
8 ○
Planned 009 source with scope capture — OWED: source-with-captured-continuation-bindings AST matches the pinned dump.
9 ✓
Passing 010 module annotations
10 ✓
Passing 011 callsite catchall refused
11 ✓
Passing 012 missing required branch
12 ✓
Passing 013 void event chaining
13 ✓
Passing 014 void chaining nested
14 ✓
Passing 015 abstract impl
15 ✓
Passing 016 optional branches ignored
16 ✓
Passing 017 metatype catchall refused
17 ✓
Passing 018 multiline annotations
18 ✓
Passing 019 subflow multiline call
19 ✓
Passing 020 transitive imports
20 ✓
Passing 022 invocation parentheses rules
21 ✓
Passing 023 pipeline chain depth
22 ○
Planned 024 source scope capture — Dubious source-block-type-tag syntax — parked pending a design decision.
23 ✓
Passing 026 template interpolation
24 ✓
Passing 029 transform requires comptime
25 ✓
Passing 030 comptime flows
26 ✓
Passing 031 annotations in ast
27 ✓
Passing 032 implicit source param
28 ✓
Passing 034 parser wrapper
29 ○
Planned 035 circular imports — OWED: circular file imports compile and dispatch in both directions.
30 ✓
Passing 036 expression parameter
31 ✓
Passing 037 expression scope capture
32 ✓
Passing 038 implicit expr and source
33 ○
Planned 039 file source syntax — STATUS: PARSER WORK PENDING / FEATURE UNCERTAIN
34 ✓
Passing 040 expression string capture
35 ✓
Passing 041 expression backslash escape
36 ✓
Passing 042 orisha pattern
37 ✓
Passing 043 inline continuation rejected
38 ✓
Passing 044 source block with branches
39 ✓
Passing 045 source block in pipeline
40 ✓
Passing 046 implicit expression with semicolon
41 ✓
Passing 047 flow step brace is invocation not constructor
42 ✓
Passing 048 loop unhandled branch
43 ○
Planned 049 parser runtime — OWED: std/parser is usable as a runtime library (parse + inspect AST).
44 ✓
Passing 050 expression parameter emit
45 ✓
Passing 051 subflow field shorthand
46 ✓
Passing 052 pattern branches
47 ○
Planned 053 reject old tap syntax — OWED: bare `source -> dest` tap spelling is refused with the pinned diagnostic.
48 ✓
Passing 054 inline source block args
49 ✓
Passing 056 cross module comptime dispatch
50 ○
Planned 057 cross module comptime callsite fields — Cross-module comptime continuation missing raw AST fields (invocation, item) — emitArgs() injects program/allocator by name but has no mechanism for *const Invocation/*const Item pointers that transform events require
51 ✓
Passing 058 cross module comptime return type
52 ○
Planned 059 reject tilde after pipe forward — OWED: `~` after `|>` is refused — a pipe-forward is a continuation, not a new flow.
53 ✓
Passing 060 proc abstract override
54 ✓
Passing 061 reject zig struct syntax
55 ✓
Passing 062 reject empty brace payload
56 ✓
Passing 063 reject single field braces
57 ✓
Passing 064 parser drops second call after void
58 ✓
Passing 065 reject inline flow in proc
59 ✓
Passing 066 reject pipe forward body on next line
60 ✓
Passing 070 reject terminal before effect at decl
61 ✓
Passing 071 reject terminal before effect at dispatch
62 ✓
Passing 072 effect branch simple decl
63 ✓
Passing 073 effect branch only no terminal
64 ✓
Passing 074 effect branch resume type
65 ✓
Passing 075 effect branch consumer dispatch
66 ✓
Passing 076 optional effect branch decl
67 ✓
Passing 077 effect catchall refused
68 ✓
Passing 078 reject redundant when parens
69 ✓
Passing 079 effect branch resume expression
70 ✓
Passing 080 body position expressions
71 ✓
Passing 081 reject bare terminal catchall discard
72 ✓
Passing 082 reject bare effect catchall discard
73 ✓
Passing 083 reject metatype catchall full discard
74 ✓
Passing 084 reject when only required terminal branch
75 ✓
Passing 085 when only required effect legal
76 ✓
Passing 086 accept when only optional effect branch
77 ✓
Passing 087 phantom literal suffix
78 ✓
Passing 088 reject redundant punning call site
79 ✓
Passing 089 reject redundant punning path
80 ✓
Passing 090 reject redundant punning constructor
81 ✓
Passing 091 explicit label required when not punnable
82 ✓
Passing 092 effect multi arm decl indented
83 ✓
Passing 093 effect multi arm decl single line
84 ✓
Passing 094 reject bare arg name mismatch
85 ✓
Passing 095 reject bare literal arg
86 ✓
Passing 096 reject bare path name mismatch
87 ✓
Passing 120 reject square bracket phantom
88 ✓
Passing 121 module annotation above import
89 ✓
Passing 122 char literal paren in args
90 ✓
Passing 123 label on subflow rhs panics
91 ✓
Passing 124 if cond and dropped
92 ✓
Passing 125 panic branch decl
93 ✓
Passing 126 panic effect branch decl
94 ✓
Passing 127 panic branch synthesized
95 ✓
Passing 128 reject bare panic marker
96 ✓
Passing 129 reject panic dup name
97 ✓
Passing 130 panic branch strict flag
98 ✓
Passing 131 reject single continuation branch with payload
99 ✓
Passing 132 reject arrow in continuation branch decl
100 ✓
Passing 133 reject bare const decl dot k
101 ✓
Passing 134 effect arm indent must align
102 ✓
Passing 135 effect arms exclusive with resume type
103 ✓
Passing 136 effect arms never nest effects
104 ✓
Passing 137 effect unit payload spelled by omission
105 ✓
Passing 138 reject empty ctor braces
106 ✓
Passing 139 inline block close then branch
107 ✓
Passing 140 variant selector on transform swallowed
108 ✓
Passing 141 reject branches off bodiless branch
109 ✓
Passing 142 capture inflow compiler annotation
110 ✓
Passing 144 single field multi branch advises identity
111 ✓
Passing 145 reject deferred branch decl
112 ✓
Passing 146 reject deref continuation
113 ✓
Passing 147 destructure field must exist in payload
114 ✓
Passing 148 destructure valid fields
115 ✓
Passing 149 reject single field bare return record
116 ✓
Passing 150 reject single field effect resume record
117 ✓
Passing 151 pointfree chain threads whole input
118 ✓
Passing 152 pointfree choke catches failing stage
119 ✓
Passing 153 pointfree choke record body
120 ✓
Passing 154 pun scalar bind inline
121 ✓
Passing 155 pun required no match
122 ✓
Passing 156 pun type mismatch
123 ✓
Passing 157 pun effect payload bind
124 ✓
Passing 158 transform continuation position panic
125 ✓
Passing 159 annotation error keeps rest of file
126 ✓
Passing 160 annotation error locates the entry
127 ✓
Passing 161 diagnostic never shows injected source
128 ✓
Passing 162 reject pub var decl dot k
129 ✓
Passing 163 reject variant tag on tor decl
130 ✓
Passing 164 ast locations are file relative
131 ✓
Passing 165 reject unknown label on implicit slot callee
132 ✓
Passing 166 fold prefix drops exit arm capture
133 ✓
Passing 167 midflow fold reads outer binding
134 ✓
Passing 168 source block opens subflow definition line
135 ✓
Passing 169 chain after multiline source block on definition line
136 ✓
Passing 170 fold prefix drops effect handlers
137 ✓
Passing 171 double slash in midchain string
138 ✓
Passing 172 chain bind threads by pun
139 ✓
Passing 173 rebind in chain leaks zig error
140 ✓
Passing 174 multiline chain eats following arms
141 ✓
Passing 175 thread arrives as subject
142 ✓
Passing 176 thread binds by type not position
143 ✓
Passing 177 subflow chain runs every step
144 ✓
Passing 178 listed body line is refused dot k
145 ✓
Passing 179 listed body line is refused dot kz
146 ✓
Passing 180 thread cannot elect between slots
147 ✓
Passing 181 thread has no home in next stage
148 ✓
Passing 182 arrow terminus after binderless chain
149 ✓
Passing 183 bare arrow terminus without bind is refused
150 ✓
Passing 184 last step return satisfies flow return
151 ✓
Passing 185 chain arrow terminus without any bind is refused
152 ✓
Passing 186 chain ends on wrong return type
153 ✓
Passing 187 chain ends on step producing nothing
154 ✓
Passing 188 threaded chain gets synthesized terminus
155 ✓
Passing 189 effect bearing step keeps its return bind
156 ✓
Passing 190 reject named single outcome
157 ✓
Passing 191 unbound branch payload threads by type
158 ✓
Passing 192 unbound effect payload threads by type
159 ✓
Passing 193 multiline chain carries its effect arms
160 ✓
Passing 194 durable bind threads by type through subtree
161 ✓
Passing 195 head label on bare return binds result
162 ✓
Passing 196 escaped quote in arg string
163 ✓
Passing 197 pointfree choke heterogeneous stages
164 ✓
Passing 198 pointfree choke claims no stage
165 ✓
Passing 199 choke body keeps module qualifier
166 ✓
Passing 200 multiline subflow body keeps its chain tail
167 ✓
Passing 201 arm diagnostic locates the arm
168 ✓
Passing 202 multiline string is not proc body code
169 ✓
Passing 203 reject tilde in dot k
170 ✓
Passing 204 inline flow in proc is refused
171 ✓
Passing 205 head label on bare return binds in a subflow
172 ✓
Passing 206 inline identity branches on tor
173 ✓
Passing 207 source block shallower than branch
174 ✓
Passing 208 top level multiline chain carries its arms
175 ✓
Passing 209 braced produce in an arm
176 ○
Planned 210 head label in subflow body binds result — OWED: a head label inside a subflow body binds the callee's result (same sugar as 210_195).
177 ✓
Passing 211 pointfree choke consumer drops payload binding
178 ✓
Passing 212 pointfree choke consumer interpolated refused
179 ✓
Passing 213 arrow void discard sink
180 ✓
Passing 214 arrow discard re raise
181 ✓
Passing 215 arrow bind into void sink
182 ✓
Passing 216 arrow discard into void sink
183 ✓
Passing 217 arrow void mid chain continues
184 ✓
Passing 218 pun fill binds by name not index
185 ✓
Passing 219 branch decl arrow caret on branch
186 ✓
Passing 220 raw branch name caret on branch
187 ✓
Passing 221 proc equals caret on decl
188 ✓
Passing 222 proc missing body caret on decl
189 ✓
Passing 223 continuation bad name caret on line
190 ✓
Passing 224 when missing condition caret on line
191 ✓
Passing 225 ctor paren name caret on line
192 ✓
Passing 226 ctor discard caret on line
193 ✓
Passing 227 shape multi colon caret on decl
194 ✓
Passing 228 ctor bad name caret on line
195 ✓
Passing 229 effect arrow and arms sameline caret
196 ✓
Passing 230 effect arrow and indented arms caret
197 ✓
Passing 231 dup resume arm caret on arm
198 ✓
Passing 232 snake proc name caret on decl
199 ✓
Passing 233 dot namespace caret on invocation
200 ✓
Passing 234 flow block missing tilde caret on line
201 ✓
Passing 235 record resume single field caret
202 ✓
Passing 236 branch annotation unclosed caret
203 ✓
Passing 237 label decl empty name refused
204 ✓
Passing 238 reject trailing pipe flow head
205 ✓
Passing 239 comment inside flow chain
206 ✓
Passing 240 positional tail store new refused
207 ✓
Passing 241 positional tail pump create refused
208 ✓
Passing 242 positional tail after named arg refused
209 ✓
Passing 243 positional tail tor call refused
210 ✓
Passing 244 duplicate label bound twice refused
211 ✓
Passing 245 duplicate label freeform callee refused
212 ✓
Passing 246 explicit label collides with implicit expr
213 ✓
Passing 247 dup field tor input refused
214 ✓
Passing 248 dup field branch payload refused
215 ✓
Passing 249 dup field branch ctor refused
216 ✓
Passing 250 dup label jump arg refused
217 ✓
Passing 251 dup field record return refused
218 ✓
Passing 252 distinct field names legal
219 ✓
Passing 253 dup field record value refused
220 ✓
Passing 254 dup pun record value refused
221 ✓
Passing 255 dup field captured source refused
222 ✓
Passing 256 dup field capture seed refused
223 ✓
Passing 258 subflow nextline invocation caret
224 ✓
Passing 259 label flow caret on head
225 ✓
Passing 260 ctor impl caret on head
226 ✓
Passing 261 bare return impl caret on head
227 ✓
Passing 262 dup tor decl refused
228 ✓
Passing 263 call in field default refused
229 ✓
Passing 264 call in return field default refused
230 ✓
Passing 265 branch payload field default refused
231 ✓
Passing 266 identity branch default refused
232 ✓
Passing 267 label jump unknown param refused
233 ✓
Passing 268 label jump bare arg no param refused
234 ✓
Passing 269 destructure dup name refused
235 ✓
Passing 270 return destructure dup refused
236 ✓
Passing 271 destructure annotation no consumer
237 ✓
Passing 272 return destructure annotation refused
238 ✓
Passing 273 destructure dup across nesting refused
239 ✓
Passing 274 malformed inline record field type
240 ✓
Passing 275 same line missing comma refused
241 ✓
Passing 276 record return fused field refused
242 ✓
Passing 277 record return unnamed field refused
243 ✓
Passing 278 record return empty type refused
244 ✓
Passing 279 record resume fused field refused
245 ✓
Passing 280 input shape fused field refused
246 ✓
Passing 281 branch payload fused field refused
247 ✓
Passing 282 resume arm fused field refused
248 ✓
Passing 283 input shape empty field type refused
249 ✓
Passing 284 input shape nameless field refused
250 ✓
Passing 285 ctor value fused after index refused
251 ✓
Passing 286 ctor value fused after deref refused
252 ✓
Passing 287 capture seed fused after typed value refused
253 ✓
Passing 288 bare return fused record refused
254 ✓
Passing 289 bare return nameless field refused
255 ✓
Passing 290 bare return empty field value refused
256 ✓
Passing 291 invocation arg fused record refused
257 ✓
Passing 292 ctor nested record fused refused
258 ✓
Passing 293 bare return redundant label refused
259 ✓
Passing 294 label jump arg fused record refused
260 ✓
Passing 295 ctor nameless field refused
261 ✓
Passing 296 ctor typeless field refused
262 ✓
Passing 297 value tail record fields legal
263 ✓
Passing 298 label decl args not a name
264 ✓
Passing 299 label decl args at form
265 ✓
Passing 300 label anchor name not identifier
266 ✓
Passing 301 stray effect arm line refused dot k
267 ✓
Passing 302 stray effect arm line refused dot kz
268 ✓
Passing 303 tor name with call tail refused
269 ✓
Passing 304 proc name with call tail refused
270 ✓
Passing 305 subflow impl name with call tail refused
271 ✓
Passing 306 tor module qualified name refused
272 ✓
Passing 307 blank line severs chain orphan run
273 ✓
Passing 308 comment in nested chain seam
274 ✓
Passing 309 bare return with named branches
275 ✓
Passing 310 bare return panic branch refused
276 ✓
Passing 311 empty source block eats next decl k
277 ✓
Passing 312 empty source block eats next decl kz
278 ✓
Passing 313 empty source block comptime handler emit
279 ✓
Passing 314 second chain step keeps its arms
280 ✓
Passing 209 reject tilde after annotation close