diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-11-10 22:23:56 -0500 |
|---|---|---|
| committer | Jacob Young <jacobly0@users.noreply.github.com> | 2023-11-10 22:35:35 -0500 |
| commit | d93f1f3c72578bb343dac6431f9901d62ccf7a2e (patch) | |
| tree | 400dd8935ec64d8f96746eb172429dc482b27f93 /src/Sema.zig | |
| parent | b5f89d681f5c9160ad866bec6ce7b552722f40ef (diff) | |
| download | zig-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.zig | 6 |
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; |
