authorgravatar for timonkruiper@gmail.comTimon Kruiper <timonkruiper@gmail.com> 2021-04-07 13:27:36+02:00
committergravatar for timonkruiper@gmail.comTimon Kruiper <timonkruiper@gmail.com> 2021-04-08 14:23:18+02:00
loga483e38df62f73dc0cdadee6faf3e083094210d4
tree3c8625290a8c74acc122f0a0a15e1764c15918fb
parentac14b52e85f857f7f70846d22ea18ea265acb91a

stage2: fix bug where invalid ZIR was generated

The following code caused an assertion to be hit: ``` pub fn main() void { var e: anyerror!c_int = error.Foo; const i = e catch 69; assert(69 - i == 0); } ```

1 files changed, 3 insertions(+), 2 deletions(-)

src/Module.zig+3-2
......@@ -2863,8 +2863,9 @@ fn astgenAndSemaFn(
28632863
28642864 _ = try AstGen.expr(&gen_scope, params_scope, .none, body_node);
28652865
2866 if (gen_scope.instructions.items.len == 0 or
2867 !astgen.instructions.items(.tag)[gen_scope.instructions.items.len - 1]
2866 const inst_tags = astgen.instructions.items(.tag);
2867 if (inst_tags.len == 0 or
2868 !inst_tags[inst_tags.len - 1]
28682869 .isNoReturn())
28692870 {
28702871 // astgen uses result location semantics to coerce return operands.