Replace the single `loopBody` index with a `Loop` struct that tracks scope depth, enabling the compiler to emit correct scope-exit code when a `break` statement is encountered inside nested blocks. Also add `WREN_DUMP_COMPILED_CODE` debug flag and new test cases for closures capturing loop variables after break, return inside loops, and nested loop scoping.
10 lines
97 B
Plaintext
10 lines
97 B
Plaintext
var f
|
|
for (i in [1, 2, 3]) {
|
|
var j = 4
|
|
f = fn IO.print(i + j)
|
|
break
|
|
}
|
|
|
|
f.call
|
|
// expect: 5
|