aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-11-10 22:23:56 -0500
committerJacob Young <jacobly0@users.noreply.github.com>2023-11-10 22:35:35 -0500
commitd93f1f3c72578bb343dac6431f9901d62ccf7a2e (patch)
tree400dd8935ec64d8f96746eb172429dc482b27f93 /src/Sema.zig
parentb5f89d681f5c9160ad866bec6ce7b552722f40ef (diff)
downloadzig-d93f1f3c72578bb343dac6431f9901d62ccf7a2e.tar.gz
zig-d93f1f3c72578bb343dac6431f9901d62ccf7a2e.zip
Sema: detect unneeded source locations earlier
This avoids a lot of work that just needs deferred cleanup anyway. Crucially, also avoids use of undefined in `failWithNeededComptime`.
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index b7510cea54..7823b3ae0f 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -2438,8 +2438,9 @@ fn errMsg(
src: LazySrcLoc,
comptime format: []const u8,
args: anytype,
-) error{OutOfMemory}!*Module.ErrorMsg {
+) error{ NeededSourceLocation, OutOfMemory }!*Module.ErrorMsg {
const mod = sema.mod;
+ if (src == .unneeded) return error.NeededSourceLocation;
const src_decl = mod.declPtr(block.src_decl);
return Module.ErrorMsg.create(sema.gpa, src.toSrcLoc(src_decl, mod), format, args);
}
@@ -2455,14 +2456,13 @@ pub fn fail(
return sema.failWithOwnedErrorMsg(block, err_msg);
}
-fn failWithOwnedErrorMsg(sema: *Sema, block: ?*Block, err_msg: *Module.ErrorMsg) CompileError {
+fn failWithOwnedErrorMsg(sema: *Sema, block: ?*Block, err_msg: *Module.ErrorMsg) error{ AnalysisFail, OutOfMemory } {
@setCold(true);
const gpa = sema.gpa;
const mod = sema.mod;
ref: {
errdefer err_msg.destroy(gpa);
- if (err_msg.src_loc.lazy == .unneeded) return error.NeededSourceLocation;
if (crash_report.is_enabled and mod.comp.debug_compile_errors) {
var wip_errors: std.zig.ErrorBundle.Wip = undefined;