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);
}
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:

View file

@ -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;

View file

@ -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;