mirror of
https://github.com/ziglang/zig.git
synced 2024-11-15 08:33:06 +00:00
fix crash when switching on enum with 1 field and no switch prongs
closes #712
This commit is contained in:
parent
517e8ea426
commit
5b7ae86af4
@ -4992,7 +4992,11 @@ static IrInstruction *ir_gen_switch_expr(IrBuilder *irb, Scope *scope, AstNode *
|
||||
|
||||
ir_set_cursor_at_end_and_append_block(irb, end_block);
|
||||
assert(incoming_blocks.length == incoming_values.length);
|
||||
return ir_build_phi(irb, scope, node, incoming_blocks.length, incoming_blocks.items, incoming_values.items);
|
||||
if (incoming_blocks.length == 0) {
|
||||
return ir_build_const_void(irb, scope, node);
|
||||
} else {
|
||||
return ir_build_phi(irb, scope, node, incoming_blocks.length, incoming_blocks.items, incoming_values.items);
|
||||
}
|
||||
}
|
||||
|
||||
static IrInstruction *ir_gen_comptime(IrBuilder *irb, Scope *parent_scope, AstNode *node, LVal lval) {
|
||||
|
@ -1,6 +1,15 @@
|
||||
const tests = @import("tests.zig");
|
||||
|
||||
pub fn addCases(cases: &tests.CompileErrorContext) {
|
||||
cases.add("switch on enum with 1 field with no prongs",
|
||||
\\const Foo = enum { M };
|
||||
\\
|
||||
\\export fn entry() {
|
||||
\\ var f = Foo.M;
|
||||
\\ switch (f) {}
|
||||
\\}
|
||||
, ".tmp_source.zig:5:5: error: enumeration value 'Foo.M' not handled in switch");
|
||||
|
||||
cases.add("shift by negative comptime integer",
|
||||
\\comptime {
|
||||
\\ var a = 1 >> -1;
|
||||
|
Loading…
Reference in New Issue
Block a user