aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRyan Liptak <squeek502@hotmail.com>2023-09-22 15:55:19 -0700
committerAndrew Kelley <andrew@ziglang.org>2023-09-23 11:01:02 -0700
commit865b2e259bf78dbf1d4c1051b5fff68b90bca65f (patch)
treede416537f668fbcabd9195485b741094c4f33541 /src
parentce919ccf45951856a762ffdb8ef850301cd8c588 (diff)
downloadzig-865b2e259bf78dbf1d4c1051b5fff68b90bca65f.tar.gz
zig-865b2e259bf78dbf1d4c1051b5fff68b90bca65f.zip
Fix reportRetryableWin32ResourceError
Follow up to https://github.com/ziglang/zig/pull/17069. This TODO being left in was a complete oversight. Before, any 'retryable' error would hit: error: thread 2920 panic: access of union field 'success' while field 'failure_retryable' is active Now, it will be reported/handled properly: C:\Users\Ryan\Programming\Zig\zig\test\standalone\windows_resources\res\zig.rc:1:1: error: FileNotFound
Diffstat (limited to 'src')
-rw-r--r--src/Compilation.zig23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig
index 57504d97ab..416f173963 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -4056,9 +4056,26 @@ fn reportRetryableWin32ResourceError(
) error{OutOfMemory}!void {
win32_resource.status = .failure_retryable;
- // TODO: something
- _ = comp;
- _ = @errorName(err);
+ var bundle: ErrorBundle.Wip = undefined;
+ try bundle.init(comp.gpa);
+ errdefer bundle.deinit();
+ try bundle.addRootErrorMessage(.{
+ .msg = try bundle.printString("{s}", .{@errorName(err)}),
+ .src_loc = try bundle.addSourceLocation(.{
+ .src_path = try bundle.addString(win32_resource.src.src_path),
+ .line = 0,
+ .column = 0,
+ .span_start = 0,
+ .span_main = 0,
+ .span_end = 0,
+ }),
+ });
+ const finished_bundle = try bundle.toOwnedBundle("");
+ {
+ comp.mutex.lock();
+ defer comp.mutex.unlock();
+ try comp.failed_win32_resources.putNoClobber(comp.gpa, win32_resource, finished_bundle);
+ }
}
fn reportRetryableAstGenError(