aboutsummaryrefslogtreecommitdiff
path: root/src/type.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-03-28 19:38:19 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-03-28 19:40:21 -0700
commit8f469c11275e60f5f1a8ae08fc7596ba366eda16 (patch)
tree0d6d8894eeb6f6ce42d7994d92c5df278ba436d9 /src/type.zig
parent0005b346375f1fbe7bc42c22d658e3218bbd599d (diff)
downloadzig-8f469c11275e60f5f1a8ae08fc7596ba366eda16.tar.gz
zig-8f469c11275e60f5f1a8ae08fc7596ba366eda16.zip
stage2: fix error sets
Diffstat (limited to 'src/type.zig')
-rw-r--r--src/type.zig15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/type.zig b/src/type.zig
index 817fe171cc..f6ffaefe0b 100644
--- a/src/type.zig
+++ b/src/type.zig
@@ -606,7 +606,7 @@ pub const Type = extern union {
.payload = try payload.payload.copy(allocator),
});
},
- .error_set => return self.copyPayloadShallow(allocator, Payload.Decl),
+ .error_set => return self.copyPayloadShallow(allocator, Payload.ErrorSet),
.error_set_single => return self.copyPayloadShallow(allocator, Payload.Name),
.empty_struct => return self.copyPayloadShallow(allocator, Payload.ContainerScope),
@@ -831,8 +831,8 @@ pub const Type = extern union {
continue;
},
.error_set => {
- const decl = ty.castTag(.error_set).?.data;
- return out_stream.writeAll(std.mem.spanZ(decl.name));
+ const error_set = ty.castTag(.error_set).?.data;
+ return out_stream.writeAll(std.mem.spanZ(error_set.owner_decl.name));
},
.error_set_single => {
const name = ty.castTag(.error_set_single).?.data;
@@ -3464,7 +3464,7 @@ pub const Type = extern union {
.int_unsigned,
=> Payload.Bits,
- .error_set => Payload.Decl,
+ .error_set => Payload.ErrorSet,
.array => Payload.Array,
.array_sentinel => Payload.ArraySentinel,
@@ -3548,6 +3548,13 @@ pub const Type = extern union {
},
};
+ pub const ErrorSet = struct {
+ pub const base_tag = Tag.error_set;
+
+ base: Payload = Payload{ .tag = base_tag },
+ data: *Module.ErrorSet,
+ };
+
pub const Pointer = struct {
pub const base_tag = Tag.pointer;