-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Labels
bugObserved behavior contradicts documented or intended behaviorObserved behavior contradicts documented or intended behaviorfrontendTokenization, parsing, AstGen, Sema, and Liveness.Tokenization, parsing, AstGen, Sema, and Liveness.
Milestone
Description
Zig Version
0.12.0-dev.705+af40bce08
Steps to Reproduce and Observed Behavior
const std = @import("std");
test {
std.testing.expect((try baz()) == 1234);
}
inline fn baz() !i32 {
return @errorCast(foo());
}
fn foo() anyerror!i32 {
return 1234;
}$ stage4/bin/zig test test3.zig
thread 1049973 panic: reached unreachable code
Analyzing test3.zig: test3.zig:baz
%34 = dbg_block_begin()
%35 = dbg_stmt(2, 5)
%36 = ret_type() node_offset:8:5 to :8:29
%37 = dbg_stmt(2, 12)
%38 = decl_val("foo") token_offset:8:23 to :8:26
%39 = dbg_stmt(2, 26)
%40 = call(.auto, %38, []) node_offset:8:23 to :8:28
> %41 = extended(error_cast(%36, %40)) node_offset:8:12 to :8:29
%42 = as_node(%36, %41) node_offset:8:12 to :8:29
%43 = dbg_stmt(2, 5)
%44 = ret_node(%42) node_offset:8:5 to :8:29
%45 = dbg_block_end()
%46 = restore_err_ret_index(%33, %4294967211)
%47 = break(%33, @InternPool.Index.void_value)
For full context, use the command
zig ast-check -t test3.zig
in test3.zig: test3.zig:baz
> %33 = block({%34..%47}) node_offset:7:22 to :7:22
in test3.zig: test3.zig:test_0
> %17 = call(.auto, %15, []) node_offset:4:29 to :4:34
in test3.zig: test3.zig:test_0
> %13 = field_call(nodiscard .auto, %10, "expect", [
{%14..%24},
]) node_offset:4:5 to :4:44
in test3.zig: test3.zig:test_0
> %5 = block({%6..%27}) node_offset:3:6 to :3:6
/home/andy/Downloads/zig/src/type.zig:2878:21: 0x691d4fc in errorSetNames (zig)
else => unreachable,
^
/home/andy/Downloads/zig/src/Sema.zig:21781:63: 0x6c9ba49 in zirErrorCast (zig)
if (!dest_ty.isAnyError(mod) and dest_ty.errorSetNames(mod).len == 0) break :disjoint true;
^
/home/andy/Downloads/zig/src/Sema.zig:1255:65: 0x68d024f in analyzeBodyInner (zig)
.error_cast => try sema.zirErrorCast( block, extended),
^
/home/andy/Downloads/zig/src/Sema.zig:5887:34: 0x72841bb in resolveBlockBody (zig)
if (sema.analyzeBodyInner(child_block, body)) |_| {
^
/home/andy/Downloads/zig/src/Sema.zig:5870:33: 0x6ccc160 in zirBlock (zig)
return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges);
^
/home/andy/Downloads/zig/src/Sema.zig:1578:49: 0x68d7947 in analyzeBodyInner (zig)
break :blk try sema.zirBlock(block, inst, tags[inst] == .block_comptime);
^
/home/andy/Downloads/zig/src/Sema.zig:917:30: 0x6b9ff78 in analyzeBody (zig)
_ = sema.analyzeBodyInner(block, body) catch |err| switch (err) {
^
/home/andy/Downloads/zig/src/Sema.zig:7505:33: 0x71d05bf in analyzeCall (zig)
sema.analyzeBody(&child_block, fn_info.body) catch |err| switch (err) {
^
/home/andy/Downloads/zig/src/Sema.zig:6725:43: 0x6c02814 in zirCall__anon_154030 (zig)
const call_inst = try sema.analyzeCall(block, func, func_ty, callee_src, call_src, modifier, ensure_result_used, args_info, call_dbg_node, .call);
^
/home/andy/Downloads/zig/src/Sema.zig:1029:62: 0x68c6ba0 in analyzeBodyInner (zig)
.call => try sema.zirCall(block, inst, .direct),
^
/home/andy/Downloads/zig/src/Sema.zig:934:45: 0x666a681 in analyzeBodyBreak (zig)
const break_inst = sema.analyzeBodyInner(block, body) catch |err| switch (err) {
^
/home/andy/Downloads/zig/src/Sema.zig:883:50: 0x71c71b3 in resolveBody (zig)
const break_data = (try sema.analyzeBodyBreak(block, body)) orelse
^
/home/andy/Downloads/zig/src/Sema.zig:7014:59: 0x76231c5 in analyzeArg (zig)
const uncoerced_arg = try sema.resolveBody(block, arg_body, zir_call.call_inst);
^
/home/andy/Downloads/zig/src/Sema.zig:7569:49: 0x71d165b in analyzeCall (zig)
arg_out.* = try args_info.analyzeArg(sema, block, arg_idx, param_ty, func_ty_info, func);
^
/home/andy/Downloads/zig/src/Sema.zig:6725:43: 0x6c03a68 in zirCall__anon_154031 (zig)
const call_inst = try sema.analyzeCall(block, func, func_ty, callee_src, call_src, modifier, ensure_result_used, args_info, call_dbg_node, .call);
^
/home/andy/Downloads/zig/src/Sema.zig:1030:62: 0x68c6c5c in analyzeBodyInner (zig)
.field_call => try sema.zirCall(block, inst, .field),
^
/home/andy/Downloads/zig/src/Sema.zig:5887:34: 0x72841bb in resolveBlockBody (zig)
if (sema.analyzeBodyInner(child_block, body)) |_| {
^
/home/andy/Downloads/zig/src/Sema.zig:5870:33: 0x6ccc160 in zirBlock (zig)
return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges);
^
/home/andy/Downloads/zig/src/Sema.zig:1578:49: 0x68d7947 in analyzeBodyInner (zig)
break :blk try sema.zirBlock(block, inst, tags[inst] == .block_comptime);
^
/home/andy/Downloads/zig/src/Sema.zig:917:30: 0x6b9ff78 in analyzeBody (zig)
_ = sema.analyzeBodyInner(block, body) catch |err| switch (err) {
^
/home/andy/Downloads/zig/src/Module.zig:4847:21: 0x68a4826 in analyzeFnBody (zig)
sema.analyzeBody(&inner_block, fn_info.body) catch |err| switch (err) {
^
/home/andy/Downloads/zig/src/Module.zig:3442:40: 0x664a7fd in ensureFuncBodyAnalyzed (zig)
var air = mod.analyzeFnBody(func_index, sema_arena) catch |err| switch (err) {
^
/home/andy/Downloads/zig/src/Compilation.zig:3458:42: 0x66488cd in processOneJob (zig)
module.ensureFuncBodyAnalyzed(func) catch |err| switch (err) {
^
/home/andy/Downloads/zig/src/Compilation.zig:3395:30: 0x647bf5b in performAllTheWork (zig)
try processOneJob(comp, work_item, main_progress_node);
^
/home/andy/Downloads/zig/src/Compilation.zig:2194:31: 0x64774ec in update (zig)
try comp.performAllTheWork(main_progress_node);
^
/home/andy/Downloads/zig/src/main.zig:4194:24: 0x64a6530 in updateModule (zig)
try comp.update(main_progress_node);
^
/home/andy/Downloads/zig/src/main.zig:3597:17: 0x64c96c1 in buildOutputType (zig)
updateModule(comp) catch |err| switch (err) {
^
/home/andy/Downloads/zig/src/main.zig:275:31: 0x631dba7 in mainArgs (zig)
return buildOutputType(gpa, arena, args, .zig_test);
^
/home/andy/Downloads/zig/src/main.zig:213:20: 0x631ac05 in main (zig)
return mainArgs(gpa, arena, args);
^
/home/andy/Downloads/zig/lib/std/start.zig:486:37: 0x631a61e in main (zig)
std.os.argv = @as([*][*:0]u8, @ptrCast(c_argv))[0..@as(usize, @intCast(c_argc))];
^
???:?:?: 0x7f8f2920dacd in ??? (libc.so.6)
Unwind information for `libc.so.6:0x7f8f2920dacd` was not available, trace may be incomplete
Aborted (core dumped)
Expected Behavior
Test passed.
Metadata
Metadata
Assignees
Labels
bugObserved behavior contradicts documented or intended behaviorObserved behavior contradicts documented or intended behaviorfrontendTokenization, parsing, AstGen, Sema, and Liveness.Tokenization, parsing, AstGen, Sema, and Liveness.