diff options
Diffstat (limited to 'tests/langerrors')
| -rw-r--r-- | tests/langerrors/cfunc_name.zc | 2 | ||||
| -rw-r--r-- | tests/langerrors/const_index.zc | 2 | ||||
| -rw-r--r-- | tests/langerrors/extern_bigret.zc | 4 | ||||
| -rw-r--r-- | tests/langerrors/extern_struct.zc | 3 | ||||
| -rw-r--r-- | tests/langerrors/extern_type.zc | 3 | ||||
| -rw-r--r-- | tests/langerrors/fixed_nolen.zc | 2 | ||||
| -rw-r--r-- | tests/langerrors/fixed_push.zc | 2 | ||||
| -rw-r--r-- | tests/langerrors/fixed_to_dyn.zc | 4 | ||||
| -rw-r--r-- | tests/langerrors/gen_undeclared.zc | 3 | ||||
| -rw-r--r-- | tests/langerrors/o3_addr.zc | 2 | ||||
| -rw-r--r-- | tests/langerrors/o3_asm.zc | 2 | ||||
| -rw-r--r-- | tests/langerrors/o3_let.zc | 2 | ||||
| -rw-r--r-- | tests/langerrors/o3_param.zc | 3 | ||||
| -rw-r--r-- | tests/langerrors/parseword_noread.zc | 5 | ||||
| -rw-r--r-- | tests/langerrors/pk_addr.zc | 6 | ||||
| -rw-r--r-- | tests/langerrors/tagenum_args.zc | 3 | ||||
| -rw-r--r-- | tests/langerrors/tagenum_bind.zc | 10 | ||||
| -rw-r--r-- | tests/langerrors/tagenum_value.zc | 3 |
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; } |
