diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2018-02-08 21:54:44 -0500 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2018-02-08 21:54:44 -0500 |
| commit | 54c06bf7158ce52c5de8d09f109215c467a3bf6a (patch) | |
| tree | 1087306b7a45c59ad1072877f34f65efd6dc2a1c /test/compile_errors.zig | |
| parent | 8fc6e31567057ca39466a34b63917f6f22f2c288 (diff) | |
| download | zig-54c06bf7158ce52c5de8d09f109215c467a3bf6a.tar.gz zig-54c06bf7158ce52c5de8d09f109215c467a3bf6a.zip | |
error sets: runtime safety for int-to-err and err set cast
Diffstat (limited to 'test/compile_errors.zig')
| -rw-r--r-- | test/compile_errors.zig | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/test/compile_errors.zig b/test/compile_errors.zig index f497f938ed..0378d9366d 100644 --- a/test/compile_errors.zig +++ b/test/compile_errors.zig @@ -1,6 +1,38 @@ const tests = @import("tests.zig"); pub fn addCases(cases: &tests.CompileErrorContext) void { + cases.add("implicit cast of error set not a subset", + \\const Set1 = error{A, B}; + \\const Set2 = error{A, C}; + \\export fn entry() void { + \\ foo(Set1.B); + \\} + \\fn foo(set1: Set1) void { + \\ var x: Set2 = set1; + \\} + , + ".tmp_source.zig:7:19: error: expected 'Set2', found 'Set1'", + ".tmp_source.zig:1:23: note: 'error.B' not a member of destination error set"); + + cases.add("int to err global invalid number", + \\const Set1 = error{A, B}; + \\comptime { + \\ var x: usize = 3; + \\ var y = error(x); + \\} + , + ".tmp_source.zig:4:18: error: integer value 3 represents no error"); + + cases.add("int to err non global invalid number", + \\const Set1 = error{A, B}; + \\const Set2 = error{A, C}; + \\comptime { + \\ var x = usize(Set1.B); + \\ var y = Set2(x); + \\} + , + ".tmp_source.zig:5:17: error: integer value 2 represents no error in 'Set2'"); + cases.add("@memberCount of error", \\comptime { \\ _ = @memberCount(error); |
