aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp17
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);