diff options
| author | antlilja <liljaanton2001@gmail.com> | 2020-06-24 19:12:42 +0200 |
|---|---|---|
| committer | antlilja <liljaanton2001@gmail.com> | 2020-07-01 16:09:36 +0200 |
| commit | dcc406deff0fb4ee3c2cd1f4ff8614e972a8ea7a (patch) | |
| tree | ce198a2b6005c96a74a65de3b7af7126efc7be23 /test/compile_errors.zig | |
| parent | e60be3082499ff19078699675044b993f6921ad0 (diff) | |
| download | zig-dcc406deff0fb4ee3c2cd1f4ff8614e972a8ea7a.tar.gz zig-dcc406deff0fb4ee3c2cd1f4ff8614e972a8ea7a.zip | |
Add new error message for unreachable else prongs
* Adds error message for types: enum, int and bool
* Adds compile error tests
Diffstat (limited to 'test/compile_errors.zig')
| -rw-r--r-- | test/compile_errors.zig | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/test/compile_errors.zig b/test/compile_errors.zig index 3f898cc337..29ff994cd3 100644 --- a/test/compile_errors.zig +++ b/test/compile_errors.zig @@ -468,6 +468,102 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { "tmp.zig:12:5: error: switch on non-exhaustive enum must include `else` or `_` prong", }); + cases.add("switch expression - unreachable else prong (bool)", + \\fn foo(x: bool) void { + \\ switch (x) { + \\ true => {}, + \\ false => {}, + \\ else => {}, + \\ } + \\} + \\export fn entry() usize { return @sizeOf(@TypeOf(foo)); } + , &[_][]const u8{ + "tmp.zig:5:9: error: unreachable else prong, all cases already handled", + }); + + cases.add("switch expression - unreachable else prong (u1)", + \\fn foo(x: u1) void { + \\ switch (x) { + \\ 0 => {}, + \\ 1 => {}, + \\ else => {}, + \\ } + \\} + \\export fn entry() usize { return @sizeOf(@TypeOf(foo)); } + , &[_][]const u8{ + "tmp.zig:5:9: error: unreachable else prong, all cases already handled", + }); + + cases.add("switch expression - unreachable else prong (u2)", + \\fn foo(x: u2) void { + \\ switch (x) { + \\ 0 => {}, + \\ 1 => {}, + \\ 2 => {}, + \\ 3 => {}, + \\ else => {}, + \\ } + \\} + \\export fn entry() usize { return @sizeOf(@TypeOf(foo)); } + , &[_][]const u8{ + "tmp.zig:7:9: error: unreachable else prong, all cases already handled", + }); + + cases.add("switch expression - unreachable else prong (range u8)", + \\fn foo(x: u8) void { + \\ switch (x) { + \\ 0 => {}, + \\ 1 => {}, + \\ 2 => {}, + \\ 3 => {}, + \\ 4...255 => {}, + \\ else => {}, + \\ } + \\} + \\export fn entry() usize { return @sizeOf(@TypeOf(foo)); } + , &[_][]const u8{ + "tmp.zig:8:9: error: unreachable else prong, all cases already handled", + }); + + cases.add("switch expression - unreachable else prong (range i8)", + \\fn foo(x: i8) void { + \\ switch (x) { + \\ -128...0 => {}, + \\ 1 => {}, + \\ 2 => {}, + \\ 3 => {}, + \\ 4...127 => {}, + \\ else => {}, + \\ } + \\} + \\export fn entry() usize { return @sizeOf(@TypeOf(foo)); } + , &[_][]const u8{ + "tmp.zig:8:9: error: unreachable else prong, all cases already handled", + }); + + cases.add("switch expression - unreachable else prong (enum)", + \\const TestEnum = enum{ T1, T2 }; + \\ + \\fn err(x: u8) TestEnum { + \\ switch (x) { + \\ 0 => return TestEnum.T1, + \\ else => return TestEnum.T2, + \\ } + \\} + \\ + \\fn foo(x: u8) void { + \\ switch (err(x)) { + \\ TestEnum.T1 => {}, + \\ TestEnum.T2 => {}, + \\ else => {}, + \\ } + \\} + \\ + \\export fn entry() usize { return @sizeOf(@TypeOf(foo)); } + , &[_][]const u8{ + "tmp.zig:14:9: error: unreachable else prong, all cases already handled", + }); + cases.addTest("@export with empty name string", \\pub export fn entry() void { } \\comptime { |
