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