diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-11-05 12:51:32 +0200 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-11-05 13:22:21 +0200 |
| commit | 5d28d171dffd5a03276e04ec7089593e967630df (patch) | |
| tree | bb2bc9117040ccc00c212ec42cff4a436311c935 /src/Sema.zig | |
| parent | ea48f06fc2965ff2e9516c23e58a50a9db5da84b (diff) | |
| download | zig-5d28d171dffd5a03276e04ec7089593e967630df.tar.gz zig-5d28d171dffd5a03276e04ec7089593e967630df.zip | |
Sema: adjust result type of anyerror field access
Closes #13448
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index e453d0d9e0..d9f514a6e7 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -22475,7 +22475,10 @@ fn fieldVal( } else (try sema.mod.getErrorValue(field_name)).key; return sema.addConstant( - try child_type.copy(arena), + if (!child_type.isAnyError()) + try child_type.copy(arena) + else + try Type.Tag.error_set_single.create(arena, name), try Value.Tag.@"error".create(arena, .{ .name = name }), ); }, @@ -22686,7 +22689,10 @@ fn fieldPtr( var anon_decl = try block.startAnonDecl(src); defer anon_decl.deinit(); return sema.analyzeDeclRef(try anon_decl.finish( - try child_type.copy(anon_decl.arena()), + if (!child_type.isAnyError()) + try child_type.copy(anon_decl.arena()) + else + try Type.Tag.error_set_single.create(anon_decl.arena(), name), try Value.Tag.@"error".create(anon_decl.arena(), .{ .name = name }), 0, // default alignment )); |
