commit 94299d16d1443cd8b731e2eba9b4d1e3fb8048bd (tree)
parent e3404e3c78307092e849dc0609f77932b263e3fc
Author: Timon Kruiper <timonkruiper@gmail.com>
Date: Wed, 20 Nov 2019 19:34:20 +0100
Stage1: Add compile error for an empty switch on a integer
Diffstat:
2 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/src/range_set.cpp b/src/range_set.cpp
@@ -40,6 +40,9 @@ void rangeset_sort(RangeSet *rs) {
}
bool rangeset_spans(RangeSet *rs, BigInt *first, BigInt *last) {
+ if (rs->src_range_list.length == 0)
+ return false;
+
rangeset_sort(rs);
const Range *first_range = &rs->src_range_list.at(0).range;
diff --git a/test/compile_errors.zig b/test/compile_errors.zig
@@ -3,6 +3,16 @@ const builtin = @import("builtin");
pub fn addCases(cases: *tests.CompileErrorContext) void {
cases.add(
+ "empty switch on an integer",
+ \\export fn entry() void {
+ \\ var x: u32 = 0;
+ \\ switch(x) {}
+ \\}
+ ,
+ "tmp.zig:3:5: error: switch must handle all possibilities",
+ );
+
+ cases.add(
"regression test #2980: base type u32 is not type checked properly when assigning a value within a struct",
\\const Foo = struct {
\\ ptr: ?*usize,