Commit 311fd67083

Josh Wolfe <thejoshwolfe@gmail.com>
2015-11-26 00:43:08
inline AstNodeStatementExpression
1 parent 2242144
Changed files (3)
src/codegen.cpp
@@ -292,9 +292,6 @@ static void analyze_node(CodeGen *g, AstNode *node) {
                 analyze_node(g, child);
             }
             break;
-        case NodeTypeStatementExpression:
-            analyze_node(g, node->data.statement_expression.expression);
-            break;
         case NodeTypeStatementReturn:
             analyze_node(g, node->data.statement_return.expression);
             break;
@@ -520,10 +517,9 @@ static void gen_block(CodeGen *g, AstNode *block_node) {
                     LLVMBuildRet(g->builder, value);
                     break;
                 }
-            case NodeTypeStatementExpression:
+            case NodeTypeExpression:
                 {
-                    AstNode *expr_node = statement_node->data.statement_expression.expression;
-                    gen_expr(g, expr_node);
+                    gen_expr(g, statement_node);
                     break;
                 }
             case NodeTypeRoot:
@@ -533,7 +529,6 @@ static void gen_block(CodeGen *g, AstNode *block_node) {
             case NodeTypeParamDecl:
             case NodeTypeType:
             case NodeTypeBlock:
-            case NodeTypeExpression:
             case NodeTypeFnCall:
             case NodeTypeExternBlock:
             case NodeTypeDirective:
src/parser.cpp
@@ -41,8 +41,6 @@ const char *node_type_str(NodeType node_type) {
             return "Type";
         case NodeTypeBlock:
             return "Block";
-        case NodeTypeStatementExpression:
-            return "StatementExpression";
         case NodeTypeStatementReturn:
             return "StatementReturn";
         case NodeTypeExpression:
@@ -132,10 +130,6 @@ void ast_print(AstNode *node, int indent) {
             fprintf(stderr, "ReturnStatement\n");
             ast_print(node->data.statement_return.expression, indent + 2);
             break;
-        case NodeTypeStatementExpression:
-            fprintf(stderr, "ExpressionStatement\n");
-            ast_print(node->data.statement_expression.expression, indent + 2);
-            break;
         case NodeTypeExternBlock:
             {
                 fprintf(stderr, "%s\n", node_type_str(node->type));
@@ -466,8 +460,7 @@ static AstNode *ast_parse_statement(ParseContext *pc, int token_index, int *new_
                token->id == TokenIdKeywordUnreachable ||
                token->id == TokenIdNumberLiteral)
     {
-        AstNode *node = ast_create_node(NodeTypeStatementExpression, token);
-        node->data.statement_expression.expression = ast_parse_expression(pc, token_index, &token_index);
+        AstNode *node = ast_parse_expression(pc, token_index, &token_index);
 
         Token *semicolon = &pc->tokens->at(token_index);
         token_index += 1;
src/parser.hpp
@@ -27,7 +27,6 @@ enum NodeType {
     NodeTypeFnCall,
     NodeTypeExternBlock,
     NodeTypeDirective,
-    NodeTypeStatementExpression,
     NodeTypeStatementReturn,
 };
 
@@ -71,10 +70,6 @@ struct AstNodeBlock {
     ZigList<AstNode *> statements;
 };
 
-struct AstNodeStatementExpression {
-    AstNode *expression;
-};
-
 struct AstNodeStatementReturn {
     AstNode *expression;
 };
@@ -124,7 +119,6 @@ struct AstNode {
         AstNodeType type;
         AstNodeParamDecl param_decl;
         AstNodeBlock block;
-        AstNodeStatementExpression statement_expression;
         AstNodeStatementReturn statement_return;
         AstNodeExpression expression;
         AstNodeFnCall fn_call;