From c4fd3fc270c38610df1e10ada4d3c2e4ef263e52 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Fri, 6 Nov 2020 19:35:23 +0100 Subject: 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. --- src/stage1/analyze.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/stage1/analyze.cpp') 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)); -- cgit v1.2.3