| ... | ... | @@ -137,6 +137,9 @@ static AstNode *trans_create_node_fn_call_1(Context *c, AstNode *fn_ref_expr, As |
| 137 | 137 | |
| 138 | 138 | static AstNode *trans_create_node_field_access(Context *c, AstNode *container, Buf *field_name) { |
| 139 | 139 | AstNode *node = trans_create_node(c, NodeTypeFieldAccessExpr); |
| 140 | 	if (container->type == NodeTypeSymbol) { |
| 141 | 		assert(container->data.symbol_expr.symbol != nullptr); |
| 142 | 	} |
| 140 | 143 | node->data.field_access_expr.struct_expr = container; |
| 141 | 144 | node->data.field_access_expr.field_name = field_name; |
| 142 | 145 | return node; |
| ... | ... | @@ -2527,9 +2530,14 @@ static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl) { |
| 2527 | 2530 | |
| 2528 | 2531 | // in C each enum value is in the global namespace. so we put them there too. |
| 2529 | 2532 | // at this point we can rely on the enum emitting successfully |
| 2530 | | AstNode *field_access_node = trans_create_node_field_access(c, |
| 2531 | | trans_create_node_symbol(c, full_type_name), field_name); |
| 2532 | | add_global_var(c, enum_val_name, field_access_node); |
| 2533 | if (is_anonymous) { |
| 2534 | AstNode *lit_node = trans_create_node_unsigned(c, i); |
| 2535 | add_global_var(c, enum_val_name, lit_node); |
| 2536 | } else { |
| 2537 | AstNode *field_access_node = trans_create_node_field_access(c, |
| 2538 | trans_create_node_symbol(c, full_type_name), field_name); |
| 2539 | add_global_var(c, enum_val_name, field_access_node); |
| 2540 | } |
| 2533 | 2541 | } |
| 2534 | 2542 | |
| 2535 | 2543 | if (is_anonymous) { |