inline AstNodeStatementExpression

This commit is contained in:
Josh Wolfe 2015-11-25 16:43:08 -07:00
parent 22421447fb
commit 311fd67083
3 changed files with 3 additions and 21 deletions

View file

@ -292,9 +292,6 @@ static void analyze_node(CodeGen *g, AstNode *node) {
analyze_node(g, child); analyze_node(g, child);
} }
break; break;
case NodeTypeStatementExpression:
analyze_node(g, node->data.statement_expression.expression);
break;
case NodeTypeStatementReturn: case NodeTypeStatementReturn:
analyze_node(g, node->data.statement_return.expression); analyze_node(g, node->data.statement_return.expression);
break; break;
@ -520,10 +517,9 @@ static void gen_block(CodeGen *g, AstNode *block_node) {
LLVMBuildRet(g->builder, value); LLVMBuildRet(g->builder, value);
break; break;
} }
case NodeTypeStatementExpression: case NodeTypeExpression:
{ {
AstNode *expr_node = statement_node->data.statement_expression.expression; gen_expr(g, statement_node);
gen_expr(g, expr_node);
break; break;
} }
case NodeTypeRoot: case NodeTypeRoot:
@ -533,7 +529,6 @@ static void gen_block(CodeGen *g, AstNode *block_node) {
case NodeTypeParamDecl: case NodeTypeParamDecl:
case NodeTypeType: case NodeTypeType:
case NodeTypeBlock: case NodeTypeBlock:
case NodeTypeExpression:
case NodeTypeFnCall: case NodeTypeFnCall:
case NodeTypeExternBlock: case NodeTypeExternBlock:
case NodeTypeDirective: case NodeTypeDirective:

View file

@ -41,8 +41,6 @@ const char *node_type_str(NodeType node_type) {
return "Type"; return "Type";
case NodeTypeBlock: case NodeTypeBlock:
return "Block"; return "Block";
case NodeTypeStatementExpression:
return "StatementExpression";
case NodeTypeStatementReturn: case NodeTypeStatementReturn:
return "StatementReturn"; return "StatementReturn";
case NodeTypeExpression: case NodeTypeExpression:
@ -132,10 +130,6 @@ void ast_print(AstNode *node, int indent) {
fprintf(stderr, "ReturnStatement\n"); fprintf(stderr, "ReturnStatement\n");
ast_print(node->data.statement_return.expression, indent + 2); ast_print(node->data.statement_return.expression, indent + 2);
break; break;
case NodeTypeStatementExpression:
fprintf(stderr, "ExpressionStatement\n");
ast_print(node->data.statement_expression.expression, indent + 2);
break;
case NodeTypeExternBlock: case NodeTypeExternBlock:
{ {
fprintf(stderr, "%s\n", node_type_str(node->type)); 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 == TokenIdKeywordUnreachable ||
token->id == TokenIdNumberLiteral) token->id == TokenIdNumberLiteral)
{ {
AstNode *node = ast_create_node(NodeTypeStatementExpression, token); AstNode *node = ast_parse_expression(pc, token_index, &token_index);
node->data.statement_expression.expression = ast_parse_expression(pc, token_index, &token_index);
Token *semicolon = &pc->tokens->at(token_index); Token *semicolon = &pc->tokens->at(token_index);
token_index += 1; token_index += 1;

View file

@ -27,7 +27,6 @@ enum NodeType {
NodeTypeFnCall, NodeTypeFnCall,
NodeTypeExternBlock, NodeTypeExternBlock,
NodeTypeDirective, NodeTypeDirective,
NodeTypeStatementExpression,
NodeTypeStatementReturn, NodeTypeStatementReturn,
}; };
@ -71,10 +70,6 @@ struct AstNodeBlock {
ZigList<AstNode *> statements; ZigList<AstNode *> statements;
}; };
struct AstNodeStatementExpression {
AstNode *expression;
};
struct AstNodeStatementReturn { struct AstNodeStatementReturn {
AstNode *expression; AstNode *expression;
}; };
@ -124,7 +119,6 @@ struct AstNode {
AstNodeType type; AstNodeType type;
AstNodeParamDecl param_decl; AstNodeParamDecl param_decl;
AstNodeBlock block; AstNodeBlock block;
AstNodeStatementExpression statement_expression;
AstNodeStatementReturn statement_return; AstNodeStatementReturn statement_return;
AstNodeExpression expression; AstNodeExpression expression;
AstNodeFnCall fn_call; AstNodeFnCall fn_call;