aboutsummaryrefslogtreecommitdiff
path: root/tests/langerrors
diff options
context:
space:
mode:
Diffstat (limited to 'tests/langerrors')
-rw-r--r--tests/langerrors/cfunc_name.zc2
-rw-r--r--tests/langerrors/const_index.zc2
-rw-r--r--tests/langerrors/extern_bigret.zc4
-rw-r--r--tests/langerrors/extern_struct.zc3
-rw-r--r--tests/langerrors/extern_type.zc3
-rw-r--r--tests/langerrors/fixed_nolen.zc2
-rw-r--r--tests/langerrors/fixed_push.zc2
-rw-r--r--tests/langerrors/fixed_to_dyn.zc4
-rw-r--r--tests/langerrors/gen_undeclared.zc3
-rw-r--r--tests/langerrors/o3_addr.zc2
-rw-r--r--tests/langerrors/o3_asm.zc2
-rw-r--r--tests/langerrors/o3_let.zc2
-rw-r--r--tests/langerrors/o3_param.zc3
-rw-r--r--tests/langerrors/parseword_noread.zc5
-rw-r--r--tests/langerrors/pk_addr.zc6
-rw-r--r--tests/langerrors/tagenum_args.zc3
-rw-r--r--tests/langerrors/tagenum_bind.zc10
-rw-r--r--tests/langerrors/tagenum_value.zc3
18 files changed, 61 insertions, 0 deletions
diff --git a/tests/langerrors/cfunc_name.zc b/tests/langerrors/cfunc_name.zc
new file mode 100644
index 0000000..0b0b0d4
--- /dev/null
+++ b/tests/langerrors/cfunc_name.zc
@@ -0,0 +1,2 @@
+// expect: isn't a function
+fn main() { let p = cfunc(nothere); return 0; }
diff --git a/tests/langerrors/const_index.zc b/tests/langerrors/const_index.zc
new file mode 100644
index 0000000..03e927b
--- /dev/null
+++ b/tests/langerrors/const_index.zc
@@ -0,0 +1,2 @@
+// expect: the index is out of range for this array
+fn main() { [4]int a; a[4] = 1; return 0; }
diff --git a/tests/langerrors/extern_bigret.zc b/tests/langerrors/extern_bigret.zc
new file mode 100644
index 0000000..37de467
--- /dev/null
+++ b/tests/langerrors/extern_bigret.zc
@@ -0,0 +1,4 @@
+// expect: a native call can return at most 7 words
+struct Big { int a; int b; int c; int d; int e; int f; int g; int h; }
+extern struct Big mkbig(long a);
+int main() { return 0; }
diff --git a/tests/langerrors/extern_struct.zc b/tests/langerrors/extern_struct.zc
new file mode 100644
index 0000000..52d9ecc
--- /dev/null
+++ b/tests/langerrors/extern_struct.zc
@@ -0,0 +1,3 @@
+// expect: isn't a zc struct
+extern int stat2(struct stat s);
+fn main() { return 0; }
diff --git a/tests/langerrors/extern_type.zc b/tests/langerrors/extern_type.zc
new file mode 100644
index 0000000..c0655ba
--- /dev/null
+++ b/tests/langerrors/extern_type.zc
@@ -0,0 +1,3 @@
+// expect: isn't a c type extern knows
+extern widget frob(int);
+fn main() { return 0; }
diff --git a/tests/langerrors/fixed_nolen.zc b/tests/langerrors/fixed_nolen.zc
new file mode 100644
index 0000000..b79c31e
--- /dev/null
+++ b/tests/langerrors/fixed_nolen.zc
@@ -0,0 +1,2 @@
+// expect: a fixed array needs its length
+fn main() { fixed []int f = new(fixed []int); free(d*f); return 0; }
diff --git a/tests/langerrors/fixed_push.zc b/tests/langerrors/fixed_push.zc
new file mode 100644
index 0000000..a19bcb4
--- /dev/null
+++ b/tests/langerrors/fixed_push.zc
@@ -0,0 +1,2 @@
+// expect: a fixed array can't grow or shrink
+fn main() { fixed []int f = new(fixed []int, 3); push(f, 1); free(d*f); return 0; }
diff --git a/tests/langerrors/fixed_to_dyn.zc b/tests/langerrors/fixed_to_dyn.zc
new file mode 100644
index 0000000..483f62f
--- /dev/null
+++ b/tests/langerrors/fixed_to_dyn.zc
@@ -0,0 +1,4 @@
+// expect: type error: argument: expected []int, got fixed []int
+typecheck on;
+int take([]int.m g) { return len(g); }
+fn main() { fixed []int f = new(fixed []int, 3); take(f); free(d*f); return 0; }
diff --git a/tests/langerrors/gen_undeclared.zc b/tests/langerrors/gen_undeclared.zc
new file mode 100644
index 0000000..ef85a7b
--- /dev/null
+++ b/tests/langerrors/gen_undeclared.zc
@@ -0,0 +1,3 @@
+// expect: T: isn't a type
+T first(int* l) { return l[0]; }
+fn main() { return 0; }
diff --git a/tests/langerrors/o3_addr.zc b/tests/langerrors/o3_addr.zc
new file mode 100644
index 0000000..9ff029f
--- /dev/null
+++ b/tests/langerrors/o3_addr.zc
@@ -0,0 +1,2 @@
+// expect: an o3 variable has no address
+fn main() { o3 int z = 2; int* q = &z; return *q; }
diff --git a/tests/langerrors/o3_asm.zc b/tests/langerrors/o3_asm.zc
new file mode 100644
index 0000000..c8afb44
--- /dev/null
+++ b/tests/langerrors/o3_asm.zc
@@ -0,0 +1,2 @@
+// expect: asm can't reach an o3 variable
+fn main() { o3 int zz = 2; asm { zz @ _ } return 0; }
diff --git a/tests/langerrors/o3_let.zc b/tests/langerrors/o3_let.zc
new file mode 100644
index 0000000..d2aff9a
--- /dev/null
+++ b/tests/langerrors/o3_let.zc
@@ -0,0 +1,2 @@
+// expect: o3 variables need a type
+fn main() { o3 { let x = 1; x++; } return 0; }
diff --git a/tests/langerrors/o3_param.zc b/tests/langerrors/o3_param.zc
new file mode 100644
index 0000000..5694720
--- /dev/null
+++ b/tests/langerrors/o3_param.zc
@@ -0,0 +1,3 @@
+// expect: o3 parameters need a type
+o3 int f(x) { return x; }
+fn main() { return f(1); }
diff --git a/tests/langerrors/parseword_noread.zc b/tests/langerrors/parseword_noread.zc
new file mode 100644
index 0000000..e7c5b1a
--- /dev/null
+++ b/tests/langerrors/parseword_noread.zc
@@ -0,0 +1,5 @@
+// expect: a parse word has to read its own name
+// a parse word that never calls next() would be called on the same token forever
+immediate fn pw() { return 0; }
+pw
+fn main() { return 0; }
diff --git a/tests/langerrors/pk_addr.zc b/tests/langerrors/pk_addr.zc
new file mode 100644
index 0000000..17ada12
--- /dev/null
+++ b/tests/langerrors/pk_addr.zc
@@ -0,0 +1,6 @@
+// expect: has no address
+fn main() {
+ u8 buf[8];
+ u8* p = &buf[2];
+ return 0;
+}
diff --git a/tests/langerrors/tagenum_args.zc b/tests/langerrors/tagenum_args.zc
new file mode 100644
index 0000000..4d1850f
--- /dev/null
+++ b/tests/langerrors/tagenum_args.zc
@@ -0,0 +1,3 @@
+// expect: wrong number of arguments
+enum shape { circle { int r; }, dot };
+fn main() { shape* s = shape.circle(1, 2); free(d*s); return 0; }
diff --git a/tests/langerrors/tagenum_bind.zc b/tests/langerrors/tagenum_bind.zc
new file mode 100644
index 0000000..9fcb9bf
--- /dev/null
+++ b/tests/langerrors/tagenum_bind.zc
@@ -0,0 +1,10 @@
+// expect: a case binds every field of its member
+enum shape { circle { int r; }, dot };
+fn f(shape* s) {
+ switch (s) {
+ case circle(a, b): return 1;
+ case dot: return 2;
+ }
+ return 0;
+}
+fn main() { return 0; }
diff --git a/tests/langerrors/tagenum_value.zc b/tests/langerrors/tagenum_value.zc
new file mode 100644
index 0000000..dbd807e
--- /dev/null
+++ b/tests/langerrors/tagenum_value.zc
@@ -0,0 +1,3 @@
+// expect: a tagged enum's members take no explicit values
+enum shape { circle { int r; }, dot = 5 };
+fn main() { return 0; }