Sema: implement reference trace with called from here notes

Closes #15124
This commit is contained in:
Jacob Young 2023-08-27 16:18:51 -04:00 committed by Andrew Kelley
parent ff61c42879
commit c6024691cf
2 changed files with 2 additions and 9 deletions

View File

@ -1566,12 +1566,6 @@ pub const ErrorMsg = struct {
gpa.free(err_msg.reference_trace);
err_msg.* = undefined;
}
pub fn clearTrace(err_msg: *ErrorMsg, gpa: Allocator) void {
if (err_msg.reference_trace.len == 0) return;
gpa.free(err_msg.reference_trace);
err_msg.reference_trace = &.{};
}
};
/// Canonical reference to a position within a source file.

View File

@ -2409,8 +2409,8 @@ fn failWithOwnedErrorMsg(sema: *Sema, err_msg: *Module.ErrorMsg) CompileError {
break :blk default_reference_trace_len;
};
var referenced_by = if (sema.func_index != .none)
mod.funcOwnerDeclIndex(sema.func_index)
var referenced_by = if (sema.owner_func_index != .none)
mod.funcOwnerDeclIndex(sema.owner_func_index)
else
sema.owner_decl_index;
var reference_stack = std.ArrayList(Module.ErrorMsg.Trace).init(gpa);
@ -7430,7 +7430,6 @@ fn analyzeCall(
const err_msg = sema.err orelse return err;
if (mem.eql(u8, err_msg.msg, recursive_msg)) return err;
try sema.errNote(block, call_src, err_msg, "called from here", .{});
err_msg.clearTrace(gpa);
return err;
},
else => |e| return e,