Zig Version
0.10.0-dev.4418+99c3578f6
Steps to Reproduce
test"continue nested inline for loop in named block expr" {
vara: u8=0;
loop: inlinefor ([_]u8{ 1, 2 }) |x| {
a=b: {
inlinefor ([_]u8{1}) |y| {
if (x==y) {
continue :loop;
}
}
break :bx;
};
tryexpect(x==2);
}
tryexpect(a==2);
}Basically a more complicated version of #13038
Expected Behavior
Test should pass.
Actual Behavior
Semantic Analysis [2905] foo... thread 169164 panic: reached unreachable code/home/topolarity/repos/zig/lib/std/debug.zig:281:14: 0x556633ec88d6 in std.debug.assert (zig2) if (!ok) unreachable; // assertion failure ^/home/topolarity/repos/zig/src/Sema.zig:5065:11: 0x556634810441 in Sema.analyzeBlockBody (zig2) /// use to return from the body. ^/home/topolarity/repos/zig/src/Sema.zig:5031:41: 0x556634a2fc55 in Sema.resolveBlockBody (zig2) var child_block: Block = .{ ^/home/topolarity/repos/zig/src/Sema.zig:5013:33: 0x55663480f4c7 in Sema.zirBlock (zig2) // Reserve space for a Block instruction so that generated Break instructions can ^/home/topolarity/repos/zig/src/Sema.zig:1270:69: 0x5566345cf7eb in Sema.analyzeBodyInner (zig2) orig_captures = 0; ^/home/topolarity/repos/zig/src/Sema.zig:646:45: 0x5566345bd5bc in Sema.analyzeBodyBreak (zig2) }); ^/home/topolarity/repos/zig/src/Sema.zig:1407:62: 0x5566345d0a8b in Sema.analyzeBodyInner (zig2) } ^/home/topolarity/repos/zig/src/Sema.zig:646:45: 0x5566345bd5bc in Sema.analyzeBodyBreak (zig2) }); ^/home/topolarity/repos/zig/src/Sema.zig:1323:65: 0x5566345cfbda in Sema.analyzeBodyInner (zig2) break always_noreturn; ^/home/topolarity/repos/zig/src/Sema.zig:646:45: 0x5566345bd5bc in Sema.analyzeBodyBreak (zig2) }); ^/home/topolarity/repos/zig/src/Sema.zig:1323:65: 0x5566345cfbda in Sema.analyzeBodyInner (zig2) break always_noreturn; ^/home/topolarity/repos/zig/src/Sema.zig:629:30: 0x5566345b643a in Sema.analyzeBody (zig2) // we find the corresponding block to this break. ^/home/topolarity/repos/zig/src/Module.zig:5607:21: 0x5566343b72ed in Module.analyzeFnBody (zig2) ^/home/topolarity/repos/zig/src/Module.zig:4300:40: 0x556634397aba in Module.ensureFuncBodyAnalyzed (zig2) var air = mod.analyzeFnBody(func, sema_arena) catch |err| switch (err) { ^/home/topolarity/repos/zig/src/Compilation.zig:3047:42: 0x55663408393c in Compilation.processOneJob (zig2) module.ensureFuncBodyAnalyzed(func) catch |err| switch (err) { ^/home/topolarity/repos/zig/src/Compilation.zig:2985:30: 0x55663407168f in Compilation.performAllTheWork (zig2) try processOneJob(comp, work_item); ^/home/topolarity/repos/zig/src/Compilation.zig:2325:31: 0x556634069d3d in Compilation.update (zig2) try comp.performAllTheWork(main_progress_node); ^/home/topolarity/repos/zig/src/main.zig:3318:20: 0x556633ff52bf in main.updateModule (zig2) try comp.update(); ^/home/topolarity/repos/zig/src/main.zig:3003:17: 0x556633f3f105 in main.buildOutputType (zig2) updateModule(gpa, comp, hook) catch |err| switch (err) { ^/home/topolarity/repos/zig/src/main.zig:236:31: 0x556633ed800e in main.mainArgs (zig2) return buildOutputType(gpa, arena, args, .zig_test); ^/home/topolarity/repos/zig/src/stage1.zig:56:24: 0x556633ed7755 in main (zig2) stage2.mainArgs(gpa, arena, args) catch unreachable;
Zig Version
0.10.0-dev.4418+99c3578f6
Steps to Reproduce
Basically a more complicated version of #13038
Expected Behavior
Test should pass.
Actual Behavior