| ... | ... | @@ -2750,12 +2750,19 @@ static AstNode *ast_parse_container_decl_auto(ParseContext *pc) { |
| 2750 | 2750 | } |
| 2751 | 2751 | |
| 2752 | 2752 | // ContainerDeclType |
| 2753 | | // <- (KEYWORD_struct / KEYWORD_enum) (LPAREN Expr RPAREN)? |
| 2753 | // <- KEYWORD_struct |
| 2754 | // / KEYWORD_enum (LPAREN Expr RPAREN)? |
| 2754 | 2755 | // / KEYWORD_union (LPAREN (KEYWORD_enum (LPAREN Expr RPAREN)? / Expr) RPAREN)? |
| 2755 | 2756 | static AstNode *ast_parse_container_decl_type(ParseContext *pc) { |
| 2756 | 2757 | Token *first = eat_token_if(pc, TokenIdKeywordStruct); |
| 2757 | | if (first == nullptr) |
| 2758 | | first = eat_token_if(pc, TokenIdKeywordEnum); |
| 2758 | if (first != nullptr) { |
| 2759 | AstNode *res = ast_create_node(pc, NodeTypeContainerDecl, first); |
| 2760 | res->data.container_decl.init_arg_expr = nullptr; |
| 2761 | res->data.container_decl.kind = ContainerKindStruct; |
| 2762 | return res; |
| 2763 | } |
| 2764 | |
| 2765 | first = eat_token_if(pc, TokenIdKeywordEnum); |
| 2759 | 2766 | if (first != nullptr) { |
| 2760 | 2767 | AstNode *init_arg_expr = nullptr; |
| 2761 | 2768 | if (eat_token_if(pc, TokenIdLParen) != nullptr) { |
| ... | ... | @@ -2764,9 +2771,7 @@ static AstNode *ast_parse_container_decl_type(ParseContext *pc) { |
| 2764 | 2771 | } |
| 2765 | 2772 | AstNode *res = ast_create_node(pc, NodeTypeContainerDecl, first); |
| 2766 | 2773 | res->data.container_decl.init_arg_expr = init_arg_expr; |
| 2767 | | res->data.container_decl.kind = first->id == TokenIdKeywordStruct |
| 2768 | | ? ContainerKindStruct |
| 2769 | | : ContainerKindEnum; |
| 2774 | res->data.container_decl.kind = ContainerKindEnum; |
| 2770 | 2775 | return res; |
| 2771 | 2776 | } |
| 2772 | 2777 | |