-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Closed
Copy link
Labels
bugObserved behavior contradicts documented or intended behaviorObserved behavior contradicts documented or intended behavior
Milestone
Description
Zig Version
0.14.0-dev.2643+fb43e91b2
Steps to Reproduce and Observed Behavior
found by Narctis on matrix, the following:
pub fn main() !void {
return @errorCast(error.Foo);
}results in tripping an assertion:
$ zig build-exe -fno-emit-bin bar.zig
thread 30939 panic: reached unreachable code
Analyzing bar.zig
%2 = ret_type()
%3 = dbg_stmt(2, 12)
%4 = error_value("Foo")
> %5 = extended(error_cast(%2, %4))
%6 = dbg_stmt(2, 5)
%7 = restore_err_ret_index_fn_entry(%5)
%8 = ret_node(%5)
For full context, use the command
zig ast-check -t bar.zig
in /home/tau/tmp/zig/zig-out/lib/zig/std/start.zig
> %2052 = is_non_err(%2051)
in /home/tau/tmp/zig/zig-out/lib/zig/std/start.zig
> %2054 = block({%2049..%2053})
in /home/tau/tmp/zig/zig-out/lib/zig/std/start.zig
> %2016 = switch_block(%2011,
else => {%2034..%2138},
@void_type => {%2017..%2025},
@noreturn_type, @u8_type => {%2026..%2033})
in /home/tau/tmp/zig/zig-out/lib/zig/std/start.zig
> %1812 = call(.auto, %1810, [])
in /home/tau/tmp/zig/zig-out/lib/zig/std/start.zig
> %1633 = call(.auto, %1631, [
{%1634},
{%1635},
{%1636},
])
in /home/tau/tmp/zig/zig-out/lib/zig/std/start.zig
> %1630 = field_call(nodiscard .auto, %1628, "exit", [
{%1631..%1637},
])
/home/tau/tmp/zig/src/Type.zig:3122:22: 0x2d01de5 in errorSetNames (zig)
.signed => try pt.intValue(dest_ty, 0),
^
/home/tau/tmp/zig/src/Sema.zig:23186:53: 0x2a00654 in zirErrorCast (zig)
.val = if (addr == 0) .none else (try pt.ptrIntValue(ptr_ty.childType(zcu), addr)).toIntern(),
^
/home/tau/tmp/zig/src/Sema.zig:1367:65: 0x25c7d4e in analyzeBodyInner (zig)
.shl_with_overflow => try sema.zirOverflowArithmetic(block, extended, extended.opcode),
^
/home/tau/tmp/zig/src/Sema.zig:998:26: 0x291cc14 in analyzeFnBody (zig)
^
/home/tau/tmp/zig/src/Zcu/PerThread.zig:2704:23: 0x256a704 in analyzeFnBodyInner (zig)
else => |e| return e,
^
/home/tau/tmp/zig/src/Zcu/PerThread.zig:1643:40: 0x21f0142 in analyzeFuncBody (zig)
^
/home/tau/tmp/zig/src/Zcu/PerThread.zig:1563:66: 0x1eb5615 in ensureFuncBodyUpToDate (zig)
};
^
/home/tau/tmp/zig/src/Sema.zig:35793:38: 0x25dac60 in resolveInferredErrorSet (zig)
"struct '{}' depends on itself",
^
/home/tau/tmp/zig/src/Sema.zig:32546:69: 0x2a26c1f in analyzeIsNonErrComptimeOnly (zig)
const child_ty = ptr_ty.childType(zcu);
^
/home/tau/tmp/zig/src/Sema.zig:32575:56: 0x2db6db6 in analyzeIsNonErr (zig)
if (payload_ty.zigTypeTag(zcu) == .noreturn) {
^
/home/tau/tmp/zig/src/Sema.zig:19342:32: 0x2994fce in zirIsNonErr (zig)
fn zirIsNonNullPtr(
^
/home/tau/tmp/zig/src/Sema.zig:1180:66: 0x25c147c in analyzeBodyInner (zig)
.func_fancy => try sema.zirFuncFancy(block, inst),
^
/home/tau/tmp/zig/src/Sema.zig:6238:34: 0x2dd70c5 in resolveBlockBody (zig)
) CompileError!Air.Inst.Ref {
^
/home/tau/tmp/zig/src/Sema.zig:6215:33: 0x2a217ac in zirBlock (zig)
.src_base_inst = parent_block.src_base_inst,
^
/home/tau/tmp/zig/src/Sema.zig:1670:37: 0x25cac25 in analyzeBodyInner (zig)
^
/home/tau/tmp/zig/src/Sema.zig:6238:34: 0x2dd70c5 in resolveBlockBody (zig)
) CompileError!Air.Inst.Ref {
^
/home/tau/tmp/zig/src/Sema.zig:10906:45: 0x2dcee65 in resolveProngComptime (zig)
);
^
/home/tau/tmp/zig/src/Sema.zig:13396:36: 0x2dd91f4 in resolveSwitchComptime (zig)
special.has_tag_capture,
^
/home/tau/tmp/zig/src/Sema.zig:13224:34: 0x2dce496 in resolveSwitchComptimeLoop (zig)
multi_cases_len,
^
/home/tau/tmp/zig/src/Sema.zig:12431:49: 0x29a4d8e in zirSwitchBlock (zig)
special,
^
/home/tau/tmp/zig/src/Sema.zig:1203:69: 0x25c19da in analyzeBodyInner (zig)
.ret_err_value_code => try sema.zirRetErrValueCode(inst),
^
/home/tau/tmp/zig/src/Sema.zig:998:26: 0x291cc14 in analyzeFnBody (zig)
^
/home/tau/tmp/zig/src/Sema.zig:8211:27: 0x2a3de6b in analyzeCall (zig)
const param_name = zir_datas[@intFromEnum(inst)].str_tok.get(sema.code);
^
/home/tau/tmp/zig/src/Sema.zig:7207:43: 0x29883f9 in zirCall__anon_451992 (zig)
.num_args = args_len,
^
/home/tau/tmp/zig/src/Sema.zig:1136:62: 0x25c09d1 in analyzeBodyInner (zig)
.bit_not => try sema.zirBitNot(block, inst),
^
/home/tau/tmp/zig/src/Sema.zig:998:26: 0x291cc14 in analyzeFnBody (zig)
^
/home/tau/tmp/zig/src/Sema.zig:8211:27: 0x2a3de6b in analyzeCall (zig)
const param_name = zir_datas[@intFromEnum(inst)].str_tok.get(sema.code);
^
/home/tau/tmp/zig/src/Sema.zig:7207:43: 0x29883f9 in zirCall__anon_451992 (zig)
.num_args = args_len,
^
/home/tau/tmp/zig/src/Sema.zig:1136:62: 0x25c09d1 in analyzeBodyInner (zig)
.bit_not => try sema.zirBitNot(block, inst),
^
/home/tau/tmp/zig/src/Sema.zig:1016:30: 0x221e74e in analyzeInlineBody (zig)
/// return `error.ComptimeBreak`. If `block.isComptime()`, this function will never return `null`.
^
/home/tau/tmp/zig/src/Sema.zig:1049:39: 0x1ec6001 in resolveInlineBody (zig)
/// body at comptime to a single result value.
^
/home/tau/tmp/zig/src/Sema.zig:7514:65: 0x2e4f596 in analyzeArg (zig)
^
/home/tau/tmp/zig/src/Sema.zig:7750:41: 0x2a36b24 in analyzeCall (zig)
break :ty param_ty;
^
/home/tau/tmp/zig/src/Sema.zig:7207:43: 0x29894d8 in zirCall__anon_451994 (zig)
.num_args = args_len,
^
/home/tau/tmp/zig/src/Sema.zig:1137:62: 0x25c0a0c in analyzeBodyInner (zig)
.bit_or => try sema.zirBitwise(block, inst, .bit_or),
^
/home/tau/tmp/zig/src/Sema.zig:998:26: 0x291cc14 in analyzeFnBody (zig)
^
/home/tau/tmp/zig/src/Zcu/PerThread.zig:2704:23: 0x256a704 in analyzeFnBodyInner (zig)
else => |e| return e,
^
/home/tau/tmp/zig/src/Zcu/PerThread.zig:1643:40: 0x21f0142 in analyzeFuncBody (zig)
^
/home/tau/tmp/zig/src/Zcu/PerThread.zig:1563:66: 0x1eb5615 in ensureFuncBodyUpToDate (zig)
};
^
/home/tau/tmp/zig/src/Compilation.zig:3737:38: 0x1c97861 in processOneJob (zig)
^
/home/tau/tmp/zig/src/Compilation.zig:3674:30: 0x1b2ad5d in performAllTheWorkInner (zig)
// https://github.com/llvm/llvm-project/issues/43698#issuecomment-2542660611
^
/home/tau/tmp/zig/src/Compilation.zig:3533:36: 0x1a08def in performAllTheWork (zig)
referenced_by = ref.referencer;
^
/home/tau/tmp/zig/src/Compilation.zig:2261:31: 0x1a01cc8 in update (zig)
comp.root_name,
^
/home/tau/tmp/zig/src/main.zig:4474:20: 0x1a3931d in updateModule (zig)
// ASLR is probably a good default for better debugging experience/programming
^
/home/tau/tmp/zig/src/main.zig:3664:21: 0x1a6f7f5 in buildOutputType (zig)
var server = try addr.listen(.{
^
/home/tau/tmp/zig/src/main.zig:264:31: 0x19407a6 in mainArgs (zig)
}
^
/home/tau/tmp/zig/src/main.zig:205:20: 0x193d86a in main (zig)
return mainArgs(gpa_tracy.allocator(), arena, args);
^
/home/tau/tmp/zig/lib/std/start.zig:656:37: 0x193d0f2 in posixCallMainAndExit (zig)
const result = root.main() catch |err| {
^
/home/tau/tmp/zig/lib/std/start.zig:271:5: 0x193ccdd in _start (zig)
asm volatile (switch (native_arch) {
^
Expected Behavior
Likely compile error as there's no known error set.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugObserved behavior contradicts documented or intended behaviorObserved behavior contradicts documented or intended behavior