diff options
Diffstat (limited to 'src/analyze.cpp')
| -rw-r--r-- | src/analyze.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp index d616148596..ae822dd731 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -956,10 +956,7 @@ bool calling_convention_allows_zig_types(CallingConvention cc) { ZigType *get_stack_trace_type(CodeGen *g) { if (g->stack_trace_type == nullptr) { - ZigValue *stack_trace_type_val = get_builtin_value(g, "StackTrace"); - assert(stack_trace_type_val->type->id == ZigTypeIdMetaType); - - g->stack_trace_type = stack_trace_type_val->data.x_type; + g->stack_trace_type = get_builtin_type(g, "StackTrace"); assertNoError(type_resolve(g, g->stack_trace_type, ResolveStatusZeroBitsKnown)); } return g->stack_trace_type; @@ -2717,10 +2714,10 @@ static Error resolve_struct_zero_bits(CodeGen *g, ZigType *struct_type) { src_assert(struct_type->data.structure.fields == nullptr, decl_node); struct_type->data.structure.fields = alloc_type_struct_fields(field_count); } else if (decl_node->type == NodeTypeContainerInitExpr) { - src_assert(struct_type->data.structure.is_inferred, decl_node); - src_assert(struct_type->data.structure.fields != nullptr, decl_node); - field_count = struct_type->data.structure.src_field_count; + + src_assert(struct_type->data.structure.is_inferred, decl_node); + src_assert(field_count == 0 || struct_type->data.structure.fields != nullptr, decl_node); } else zig_unreachable(); struct_type->data.structure.fields_by_name.init(field_count); @@ -7531,6 +7528,12 @@ ZigValue *get_builtin_value(CodeGen *codegen, const char *name) { return var_value; } +ZigType *get_builtin_type(CodeGen *codegen, const char *name) { + ZigValue *type_val = get_builtin_value(codegen, name); + assert(type_val->type->id == ZigTypeIdMetaType); + return type_val->data.x_type; +} + bool type_is_global_error_set(ZigType *err_set_type) { assert(err_set_type->id == ZigTypeIdErrorSet); assert(!err_set_type->data.error_set.incomplete); |
