diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2018-09-26 16:59:08 -0400 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2018-09-26 16:59:08 -0400 |
| commit | 1c26c2f4d5c9029fe39cc413f75e547636e42a14 (patch) | |
| tree | 9f04f713a5d925145a36f08d3236dbec82ebb117 /src/analyze.cpp | |
| parent | 589201b10492e2aba06df7860666cef7c6916acc (diff) | |
| download | zig-1c26c2f4d5c9029fe39cc413f75e547636e42a14.tar.gz zig-1c26c2f4d5c9029fe39cc413f75e547636e42a14.zip | |
fix crash when compile error evaluating return...
...type of inferred error set. closes #1591
Diffstat (limited to 'src/analyze.cpp')
| -rw-r--r-- | src/analyze.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp index bd1395c9c2..ae0d67b2ec 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -673,7 +673,7 @@ ZigType *get_error_union_type(CodeGen *g, ZigType *err_set_type, ZigType *payloa ZigType *entry = new_type_table_entry(ZigTypeIdErrorUnion); entry->is_copyable = true; assert(payload_type->di_type); - assertNoError(ensure_complete_type(g, payload_type)); + assert(type_is_complete(payload_type)); buf_resize(&entry->name, 0); buf_appendf(&entry->name, "%s!%s", buf_ptr(&err_set_type->name), buf_ptr(&payload_type->name)); @@ -1684,6 +1684,8 @@ static ZigType *analyze_fn_type(CodeGen *g, AstNode *proto_node, Scope *child_sc if (fn_proto->auto_err_set) { ZigType *inferred_err_set_type = get_auto_err_set_type(g, fn_entry); + if ((err = type_resolve(g, specified_return_type, ResolveStatusSizeKnown))) + return g->builtin_types.entry_invalid; fn_type_id.return_type = get_error_union_type(g, inferred_err_set_type, specified_return_type); } else { fn_type_id.return_type = specified_return_type; |
