commit c7dc451a2a06a0ade0bb44a48cb6e5cde6e237df (tree)
parent 786e238a7f1034a09bc0471b3796051abb874e14
Author: Andrew Kelley <andrew@ziglang.org>
Date: Thu, 5 Aug 2021 23:20:53 -0700
stage2: more debuggable panics
For now these errors are handled via `@panic` rather than `unreachable`.
These are relatively likely bugs to occur at this early stage of
development, and handling them as panics lets us ship release builds
of the compiler without worrying about undefined behavior.
Furthermore, in stage1, `@panic` is implemented to include an error
return trace, while `unreachable` is not. In this case, the error return
traces are extremely helpful in debugging the compiler.
Diffstat:
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Module.zig b/src/Module.zig
@@ -3792,8 +3792,8 @@ pub fn analyzeFnBody(mod: *Module, decl: *Decl, func: *Fn) SemaError!Air {
log.debug("set {s} to in_progress", .{decl.name});
_ = sema.analyzeBody(&inner_block, fn_info.body) catch |err| switch (err) {
- error.NeededSourceLocation => unreachable,
- error.GenericPoison => unreachable,
+ error.NeededSourceLocation => @panic("zig compiler bug: NeededSourceLocation"),
+ error.GenericPoison => @panic("zig compiler bug: GenericPoison"),
else => |e| return e,
};