rename unary expression to prefix op expression

This commit is contained in:
Andrew Kelley
2015-11-29 14:00:34 -07:00
parent a7555c58d9
commit 918e7641fc
5 changed files with 64 additions and 65 deletions

View File

@@ -317,7 +317,7 @@ static void find_declarations(CodeGen *g, AstNode *node) {
case NodeTypeAddExpr:
case NodeTypeMultExpr:
case NodeTypeCastExpr:
case NodeTypeUnaryExpr:
case NodeTypePrefixOpExpr:
case NodeTypePrimaryExpr:
case NodeTypeGroupedExpr:
zig_unreachable();
@@ -543,7 +543,7 @@ static void analyze_node(CodeGen *g, AstNode *node) {
case NodeTypeCastExpr:
zig_panic("TODO");
break;
case NodeTypeUnaryExpr:
case NodeTypePrefixOpExpr:
zig_panic("TODO");
break;
case NodeTypePrimaryExpr:
@@ -744,26 +744,26 @@ static LLVMValueRef gen_primary_expr(CodeGen *g, AstNode *node) {
zig_unreachable();
}
static LLVMValueRef gen_unary_expr(CodeGen *g, AstNode *node) {
assert(node->type == NodeTypeUnaryExpr);
assert(node->data.unary_expr.primary_expr);
static LLVMValueRef gen_prefix_op_expr(CodeGen *g, AstNode *node) {
assert(node->type == NodeTypePrefixOpExpr);
assert(node->data.prefix_op_expr.primary_expr);
LLVMValueRef expr = gen_expr(g, node->data.unary_expr.primary_expr);
LLVMValueRef expr = gen_expr(g, node->data.prefix_op_expr.primary_expr);
switch (node->data.unary_expr.unary_op) {
case UnaryOpNegation:
switch (node->data.prefix_op_expr.prefix_op) {
case PrefixOpNegation:
add_debug_source_node(g, node);
return LLVMBuildNeg(g->builder, expr, "");
case UnaryOpBoolNot:
case PrefixOpBoolNot:
{
LLVMValueRef zero = LLVMConstNull(LLVMTypeOf(expr));
add_debug_source_node(g, node);
return LLVMBuildICmp(g->builder, LLVMIntEQ, expr, zero, "");
}
case UnaryOpBinNot:
case PrefixOpBinNot:
add_debug_source_node(g, node);
return LLVMBuildNot(g->builder, expr, "");
case UnaryOpInvalid:
case PrefixOpInvalid:
zig_unreachable();
}
@@ -772,7 +772,7 @@ static LLVMValueRef gen_unary_expr(CodeGen *g, AstNode *node) {
static LLVMValueRef gen_cast_expr(CodeGen *g, AstNode *node) {
assert(node->type == NodeTypeCastExpr);
LLVMValueRef expr = gen_expr(g, node->data.cast_expr.unary_expr);
LLVMValueRef expr = gen_expr(g, node->data.cast_expr.prefix_op_expr);
if (!node->data.cast_expr.type)
return expr;
@@ -1026,8 +1026,8 @@ static LLVMValueRef gen_expr(CodeGen *g, AstNode *node) {
return gen_bool_or_expr(g, node);
case NodeTypeReturnExpr:
return gen_return_expr(g, node);
case NodeTypeUnaryExpr:
return gen_unary_expr(g, node);
case NodeTypePrefixOpExpr:
return gen_prefix_op_expr(g, node);
case NodeTypeRoot:
case NodeTypeRootExportDecl:
case NodeTypeFnProto: