diff options
| author | 2026-10-14 10:47:30 +0000 | |
|---|---|---|
| committer | 2026-10-14 10:47:30 +0000 | |
| commit | 4a22cf28742bf33577678de494aa09ab60a3c820 (patch) | |
| tree | d9133c7ab431fd3f41ef7713a869d23be4539244 /tests/langerrors | |
| parent | Merge four small fixes: std hovers, capture terminator, bare static calls, vo... (diff) | |
| parent | zc: add the defer statement (diff) | |
Merge the defer statement; todo: tick it, add its follow-ups
Diffstat (limited to 'tests/langerrors')
| -rw-r--r-- | tests/langerrors/defer_break.zc | 11 | ||||
| -rw-r--r-- | tests/langerrors/defer_continue.zc | 11 | ||||
| -rw-r--r-- | tests/langerrors/defer_later_name.zc | 9 | ||||
| -rw-r--r-- | tests/langerrors/defer_return.zc | 8 |
4 files changed, 39 insertions, 0 deletions
diff --git a/tests/langerrors/defer_break.zc b/tests/langerrors/defer_break.zc new file mode 100644 index 0000000..193f3f0 --- /dev/null +++ b/tests/langerrors/defer_break.zc @@ -0,0 +1,11 @@ +namespace; +include rt; + +// expect: break can't leave a deferred statement +fn main() { + while (1) { + defer { break; } + rt.put_n(1); + } + return 0; +} diff --git a/tests/langerrors/defer_continue.zc b/tests/langerrors/defer_continue.zc new file mode 100644 index 0000000..079b02b --- /dev/null +++ b/tests/langerrors/defer_continue.zc @@ -0,0 +1,11 @@ +namespace; +include rt; + +// expect: continue can't leave a deferred statement +fn main() { + for (let i = 0; i < 2; i++) { + defer { continue; } + rt.put_n(i); + } + return 0; +} diff --git a/tests/langerrors/defer_later_name.zc b/tests/langerrors/defer_later_name.zc new file mode 100644 index 0000000..17f175d --- /dev/null +++ b/tests/langerrors/defer_later_name.zc @@ -0,0 +1,9 @@ +namespace; +include rt; + +// expect: y is used but never defined +fn main() { + defer rt.put_n(y); + int y = 3; + return 0; +} diff --git a/tests/langerrors/defer_return.zc b/tests/langerrors/defer_return.zc new file mode 100644 index 0000000..bceefe0 --- /dev/null +++ b/tests/langerrors/defer_return.zc @@ -0,0 +1,8 @@ +namespace; +include rt; + +// expect: return can't be used in a deferred statement +fn main() { + defer { rt.put_n(1); return 1; } + return 0; +} |
