authorgravatar for timonkruiper@gmail.comTimon Kruiper <timonkruiper@gmail.com> 2019-11-20 19:34:20+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-11-22 04:00:47+00:00
log94299d16d1443cd8b731e2eba9b4d1e3fb8048bd
tree72e9c47ff8bf53a7abdbe239f41616b880ccc153
parente3404e3c78307092e849dc0609f77932b263e3fc

Stage1: Add compile error for an empty switch on a integer


2 files changed, 13 insertions(+), 0 deletions(-)

src/range_set.cpp+3
...@@ -40,6 +40,9 @@ void rangeset_sort(RangeSet *rs) {...@@ -40,6 +40,9 @@ void rangeset_sort(RangeSet *rs) {
40}40}
4141
42bool rangeset_spans(RangeSet *rs, BigInt *first, BigInt *last) {42bool rangeset_spans(RangeSet *rs, BigInt *first, BigInt *last) {
43 if (rs->src_range_list.length == 0)
44 return false;
45
43 rangeset_sort(rs);46 rangeset_sort(rs);
4447
45 const Range *first_range = &rs->src_range_list.at(0).range;48 const Range *first_range = &rs->src_range_list.at(0).range;
test/compile_errors.zig+10
...@@ -2,6 +2,16 @@ const tests = @import("tests.zig");...@@ -2,6 +2,16 @@ const tests = @import("tests.zig");
2const builtin = @import("builtin");2const builtin = @import("builtin");
33
4pub fn addCases(cases: *tests.CompileErrorContext) void {4pub fn addCases(cases: *tests.CompileErrorContext) void {
5 cases.add(
6 "empty switch on an integer",
7 \\export fn entry() void {
8 \\ var x: u32 = 0;
9 \\ switch(x) {}
10 \\}
11 ,
12 "tmp.zig:3:5: error: switch must handle all possibilities",
13 );
14
5 cases.add(15 cases.add(
6 "regression test #2980: base type u32 is not type checked properly when assigning a value within a struct",16 "regression test #2980: base type u32 is not type checked properly when assigning a value within a struct",
7 \\const Foo = struct {17 \\const Foo = struct {