aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-08-27 13:59:18 -0400
committerAndrew Kelley <andrew@ziglang.org>2019-08-27 13:59:18 -0400
commit428a2fdedd1d2d9ce6c7a3b28a379e4484468b9c (patch)
treeba01c1cdb18bed90ee9ffe3ac350a2307e1aa6cc /src/analyze.cpp
parente1b258f39fcb4fff97a4fcf6ee9db10bb71646cc (diff)
downloadzig-428a2fdedd1d2d9ce6c7a3b28a379e4484468b9c.tar.gz
zig-428a2fdedd1d2d9ce6c7a3b28a379e4484468b9c.zip
better handle struct depends on itself via optional field
closes #1995
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp
index e0223dd9f7..893c8121a5 100644
--- a/src/analyze.cpp
+++ b/src/analyze.cpp
@@ -1977,6 +1977,10 @@ static Error resolve_union_alignment(CodeGen *g, ZigType *union_type) {
field->align = field->type_entry->abi_align;
} else {
if ((err = type_val_resolve_abi_align(g, field->type_val, &field->align))) {
+ if (g->trace_err != nullptr) {
+ g->trace_err = add_error_note(g, g->trace_err, field->decl_node,
+ buf_create_from_str("while checking this field"));
+ }
union_type->data.unionation.resolve_status = ResolveStatusInvalid;
return err;
}
@@ -2497,6 +2501,10 @@ static Error resolve_struct_alignment(CodeGen *g, ZigType *struct_type) {
field->align = 1;
} else {
if ((err = type_val_resolve_abi_align(g, field->type_val, &field->align))) {
+ if (g->trace_err != nullptr) {
+ g->trace_err = add_error_note(g, g->trace_err, field->decl_node,
+ buf_create_from_str("while checking this field"));
+ }
struct_type->data.structure.resolve_status = ResolveStatusInvalid;
return err;
}