authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-05-16 13:37:30+01:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-05-16 13:40:52+01:00
log46d7e808dcef3c9f9200d6cc1ed4e3a787ba054d
treec89e8bde28f46f77d1b3863a841fc2535cb1788a
parent16481c8ef347f7fc5ffdc4636cf904b335a6dc09
signaturelock-open Commit is signed but in an unrecognized format.

build runner: don't incorrectly omit reference traces

It's incorrect to ever set `include_reference_trace` here, because the compiler has already given or not given reference traces depending on the `-freference-trace` option propagated to the compiler process by `std.Build.Step.Compile`. Perhaps in future we could make the compiler always return the reference trace when communicating over the compiler protocol; that'd be more versatile than the current behavior, because the build runner could, for instance, show a reference trace on-demand without having to even invoke the compiler. That seems really useful, since the reference trace is *often* unnecessary noise, but *sometimes* essential. However, we don't live in that world right now, so passing the option here doesn't make sense. Resolves: #23415

1 files changed, 2 insertions(+), 6 deletions(-)

lib/compiler/build_runner.zig+2-6
...@@ -750,7 +750,7 @@ fn runStepNames(...@@ -750,7 +750,7 @@ fn runStepNames(
750 if (run.prominent_compile_errors and total_compile_errors > 0) {750 if (run.prominent_compile_errors and total_compile_errors > 0) {
751 for (step_stack.keys()) |s| {751 for (step_stack.keys()) |s| {
752 if (s.result_error_bundle.errorMessageCount() > 0) {752 if (s.result_error_bundle.errorMessageCount() > 0) {
753 s.result_error_bundle.renderToStdErr(.{ .ttyconf = ttyconf, .include_reference_trace = (b.reference_trace orelse 0) > 0 });753 s.result_error_bundle.renderToStdErr(.{ .ttyconf = ttyconf });
754 }754 }
755 }755 }
756756
...@@ -1129,11 +1129,7 @@ fn workerMakeOneStep(...@@ -1129,11 +1129,7 @@ fn workerMakeOneStep(
1129 defer std.debug.unlockStdErr();1129 defer std.debug.unlockStdErr();
11301130
1131 const gpa = b.allocator;1131 const gpa = b.allocator;
1132 const options: std.zig.ErrorBundle.RenderOptions = .{1132 printErrorMessages(gpa, s, .{ .ttyconf = run.ttyconf }, run.stderr, run.prominent_compile_errors) catch {};
1133 .ttyconf = run.ttyconf,
1134 .include_reference_trace = (b.reference_trace orelse 0) > 0,
1135 };
1136 printErrorMessages(gpa, s, options, run.stderr, run.prominent_compile_errors) catch {};
1137 }1133 }
11381134
1139 handle_result: {1135 handle_result: {