aboutsummaryrefslogtreecommitdiff
path: root/src/stage1
diff options
context:
space:
mode:
authorLemonBoy <thatlemon@gmail.com>2020-11-06 19:35:23 +0100
committerAndrew Kelley <andrew@ziglang.org>2020-11-13 14:28:40 -0700
commitc4fd3fc270c38610df1e10ada4d3c2e4ef263e52 (patch)
tree1ff8e3f6070559953f5decf0813f5c2a6431d914 /src/stage1
parentab4b34f75f5762b4bc87ccc49df73ebf0f633c5a (diff)
downloadzig-c4fd3fc270c38610df1e10ada4d3c2e4ef263e52.tar.gz
zig-c4fd3fc270c38610df1e10ada4d3c2e4ef263e52.zip
stage1: Resolve ErrorUnion children types
Since the code is accessing the abi_size field compute the full type size for both err_set_type and payload_type, not only for the latter.
Diffstat (limited to 'src/stage1')
-rw-r--r--src/stage1/analyze.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/stage1/analyze.cpp b/src/stage1/analyze.cpp
index 9e0c0d5df8..547d2d9ae2 100644
--- a/src/stage1/analyze.cpp
+++ b/src/stage1/analyze.cpp
@@ -745,8 +745,14 @@ ZigType *get_error_union_type(CodeGen *g, ZigType *err_set_type, ZigType *payloa
return existing_entry->value;
}
+ Error err;
+ if ((err = type_resolve(g, err_set_type, ResolveStatusSizeKnown)))
+ return g->builtin_types.entry_invalid;
+
+ if ((err = type_resolve(g, payload_type, ResolveStatusSizeKnown)))
+ return g->builtin_types.entry_invalid;
+
ZigType *entry = new_type_table_entry(ZigTypeIdErrorUnion);
- assert(type_is_resolved(payload_type, ResolveStatusSizeKnown));
buf_resize(&entry->name, 0);
buf_appendf(&entry->name, "%s!%s", buf_ptr(&err_set_type->name), buf_ptr(&payload_type->name));