authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-08-27 16:18:51-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-08-28 12:28:25-07:00
logc6024691cfc3fa329cf1b7ac9fcb0855b7211aa0
tree25980812659ce052d3384bc97256fd552591c918
parentff61c428793ff382c8d521638b416ca288e53de5

Sema: implement reference trace with called from here notes

Closes #15124

2 files changed, 2 insertions(+), 9 deletions(-)

src/Module.zig-6
......@@ -1566,12 +1566,6 @@ pub const ErrorMsg = struct {
15661566 gpa.free(err_msg.reference_trace);
15671567 err_msg.* = undefined;
15681568 }
1569
1570 pub fn clearTrace(err_msg: *ErrorMsg, gpa: Allocator) void {
1571 if (err_msg.reference_trace.len == 0) return;
1572 gpa.free(err_msg.reference_trace);
1573 err_msg.reference_trace = &.{};
1574 }
15751569};
15761570
15771571/// Canonical reference to a position within a source file.
src/Sema.zig+2-3
......@@ -2409,8 +2409,8 @@ fn failWithOwnedErrorMsg(sema: *Sema, err_msg: *Module.ErrorMsg) CompileError {
24092409 break :blk default_reference_trace_len;
24102410 };
24112411
2412 var referenced_by = if (sema.func_index != .none)
2413 mod.funcOwnerDeclIndex(sema.func_index)
2412 var referenced_by = if (sema.owner_func_index != .none)
2413 mod.funcOwnerDeclIndex(sema.owner_func_index)
24142414 else
24152415 sema.owner_decl_index;
24162416 var reference_stack = std.ArrayList(Module.ErrorMsg.Trace).init(gpa);
......@@ -7430,7 +7430,6 @@ fn analyzeCall(
74307430 const err_msg = sema.err orelse return err;
74317431 if (mem.eql(u8, err_msg.msg, recursive_msg)) return err;
74327432 try sema.errNote(block, call_src, err_msg, "called from here", .{});
7433 err_msg.clearTrace(gpa);
74347433 return err;
74357434 },
74367435 else => |e| return e,