aboutsummaryrefslogtreecommitdiff
path: root/tests/langerrors
diff options
context:
space:
mode:
Diffstat (limited to 'tests/langerrors')
-rw-r--r--tests/langerrors/defer_break.zc11
-rw-r--r--tests/langerrors/defer_continue.zc11
-rw-r--r--tests/langerrors/defer_later_name.zc9
-rw-r--r--tests/langerrors/defer_return.zc8
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;
+}