diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-05-20 12:09:07 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-06-10 20:47:53 -0700 |
| commit | 9ff514b6a35b7201f45f8bff31c61b4f8cfa7a7a (patch) | |
| tree | dda74acc00690d1b3d31fd6e43d7ec0aa4acc882 /src/value.zig | |
| parent | 7bf91fc79ac9e4eae575baf3a2ca9549bc3bf6c2 (diff) | |
| download | zig-9ff514b6a35b7201f45f8bff31c61b4f8cfa7a7a.tar.gz zig-9ff514b6a35b7201f45f8bff31c61b4f8cfa7a7a.zip | |
compiler: move error union types and error set types to InternPool
One change worth noting in this commit is that `module.global_error_set`
is no longer kept strictly up-to-date. The previous code reserved
integer error values when dealing with error set types, but this is no
longer needed because the integer values are not needed for semantic
analysis unless `@errorToInt` or `@intToError` are used and therefore
may be assigned lazily.
Diffstat (limited to 'src/value.zig')
| -rw-r--r-- | src/value.zig | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/value.zig b/src/value.zig index 3100496085..4408d10231 100644 --- a/src/value.zig +++ b/src/value.zig @@ -260,7 +260,7 @@ pub const Value = struct { const new_payload = try arena.create(Payload.Ty); new_payload.* = .{ .base = payload.base, - .data = try payload.data.copy(arena), + .data = payload.data, }; return Value{ .ip_index = .none, @@ -281,7 +281,7 @@ pub const Value = struct { .base = payload.base, .data = .{ .container_ptr = try payload.data.container_ptr.copy(arena), - .container_ty = try payload.data.container_ty.copy(arena), + .container_ty = payload.data.container_ty, }, }; return Value{ @@ -296,7 +296,7 @@ pub const Value = struct { .base = payload.base, .data = .{ .field_val = try payload.data.field_val.copy(arena), - .field_ty = try payload.data.field_ty.copy(arena), + .field_ty = payload.data.field_ty, }, }; return Value{ @@ -311,7 +311,7 @@ pub const Value = struct { .base = payload.base, .data = .{ .array_ptr = try payload.data.array_ptr.copy(arena), - .elem_ty = try payload.data.elem_ty.copy(arena), + .elem_ty = payload.data.elem_ty, .index = payload.data.index, }, }; @@ -327,7 +327,7 @@ pub const Value = struct { .base = payload.base, .data = .{ .container_ptr = try payload.data.container_ptr.copy(arena), - .container_ty = try payload.data.container_ty.copy(arena), + .container_ty = payload.data.container_ty, .field_index = payload.data.field_index, }, }; @@ -1870,7 +1870,7 @@ pub const Value = struct { .eu_payload => { const a_payload = a.castTag(.eu_payload).?.data; const b_payload = b.castTag(.eu_payload).?.data; - const payload_ty = ty.errorUnionPayload(); + const payload_ty = ty.errorUnionPayload(mod); return eqlAdvanced(a_payload, payload_ty, b_payload, payload_ty, mod, opt_sema); }, .eu_payload_ptr => { @@ -2163,14 +2163,14 @@ pub const Value = struct { .ErrorUnion => { if (val.tag() == .@"error") { std.hash.autoHash(hasher, false); // error - const sub_ty = ty.errorUnionSet(); + const sub_ty = ty.errorUnionSet(mod); val.hash(sub_ty, hasher, mod); return; } if (val.castTag(.eu_payload)) |payload| { std.hash.autoHash(hasher, true); // payload - const sub_ty = ty.errorUnionPayload(); + const sub_ty = ty.errorUnionPayload(mod); payload.data.hash(sub_ty, hasher, mod); return; } else unreachable; @@ -2272,7 +2272,7 @@ pub const Value = struct { payload.data.hashUncoerced(child_ty, hasher, mod); } else std.hash.autoHash(hasher, std.builtin.TypeId.Null), .ErrorSet, .ErrorUnion => if (val.getError()) |err| hasher.update(err) else { - const pl_ty = ty.errorUnionPayload(); + const pl_ty = ty.errorUnionPayload(mod); val.castTag(.eu_payload).?.data.hashUncoerced(pl_ty, hasher, mod); }, .Enum, .EnumLiteral, .Union => { |
