Commit 10617593f8
2020-11-06 19:35:23
1 parent
10b1001Changed files (3)
src
stage1
test
stage1
behavior
bugs
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));
test/stage1/behavior/bugs/7003.zig
@@ -0,0 +1,8 @@
+test "@Type should resolve its children types" {
+ const sparse = enum(u2) { a, b, c };
+ const dense = enum(u2) { a, b, c, d };
+
+ comptime var sparse_info = @typeInfo(anyerror!sparse);
+ sparse_info.ErrorUnion.payload = dense;
+ const B = @Type(sparse_info);
+}
test/stage1/behavior.zig
@@ -58,6 +58,7 @@ comptime {
_ = @import("behavior/bugs/6850.zig");
_ = @import("behavior/bugs/7027.zig");
_ = @import("behavior/bugs/7047.zig");
+ _ = @import("behavior/bugs/7003.zig");
_ = @import("behavior/bugs/394.zig");
_ = @import("behavior/bugs/421.zig");
_ = @import("behavior/bugs/529.zig");