authorgravatar for jacoblevgw@gmail.comJacob G-W <jacoblevgw@gmail.com> 2021-06-08 22:05:03-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-06-21 17:03:02-07:00
log2092481265ce4f51529888690e648608dbae52c6
tree41973156378e758c2a27ff0e2c0293b04aa8ddfc
parent75f7a8913eb6c22a7d2d4514512adb6ef535bb47

stage2 astgen: fix bug in struct init where type not refed


1 files changed, 5 insertions(+), 0 deletions(-)

src/AstGen.zig+5
...@@ -1328,6 +1328,8 @@ fn structInitExpr(...@@ -1328,6 +1328,8 @@ fn structInitExpr(
1328 }1328 }
1329 switch (rl) {1329 switch (rl) {
1330 .discard => {1330 .discard => {
1331 if (struct_init.ast.type_expr != 0)
1332 _ = try typeExpr(gz, scope, struct_init.ast.type_expr);
1331 for (struct_init.ast.fields) |field_init| {1333 for (struct_init.ast.fields) |field_init| {
1332 _ = try expr(gz, scope, .discard, field_init);1334 _ = try expr(gz, scope, .discard, field_init);
1333 }1335 }
...@@ -1412,6 +1414,9 @@ fn structInitExprRlPtr(...@@ -1412,6 +1414,9 @@ fn structInitExprRlPtr(
1412 const field_ptr_list = try gpa.alloc(Zir.Inst.Index, struct_init.ast.fields.len);1414 const field_ptr_list = try gpa.alloc(Zir.Inst.Index, struct_init.ast.fields.len);
1413 defer gpa.free(field_ptr_list);1415 defer gpa.free(field_ptr_list);
14141416
1417 if (struct_init.ast.type_expr != 0)
1418 _ = try typeExpr(gz, scope, struct_init.ast.type_expr);
1419
1415 for (struct_init.ast.fields) |field_init, i| {1420 for (struct_init.ast.fields) |field_init, i| {
1416 const name_token = tree.firstToken(field_init) - 2;1421 const name_token = tree.firstToken(field_init) - 2;
1417 const str_index = try astgen.identAsString(name_token);1422 const str_index = try astgen.identAsString(name_token);