From: Dale Weiler Date: Mon, 30 Sep 2013 02:08:09 +0000 (-0400) Subject: Simplify parse stage for unary - operator. X-Git-Tag: 0.3.5~59 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=7249c2ec18722c7ea9bb32e2ba9682f3d209b467;p=xonotic%2Fgmqcc.git Simplify parse stage for unary - operator. --- diff --git a/parser.c b/parser.c index b5f6fe4..15bb921 100644 --- a/parser.c +++ b/parser.c @@ -465,15 +465,15 @@ static bool parser_sy_apply_operator(parser_t *parser, shunt *sy) out = exprs[0]; break; case opid2('-','P'): - if (!(out = fold_op(parser->fold, op, exprs))) { - if (exprs[0]->vtype != TYPE_FLOAT && - exprs[0]->vtype != TYPE_VECTOR) { - compile_error(ctx, "invalid types used in unary expression: cannot negate type %s", - type_name[exprs[0]->vtype]); - return false; - } - out = (ast_expression*)ast_unary_new(ctx, (VINSTR_NEG_F-TYPE_FLOAT) + exprs[0]->vtype, exprs[0]); + if ((out = fold_op(parser->fold, op, exprs))) + break; + if (exprs[0]->vtype != TYPE_FLOAT && + exprs[0]->vtype != TYPE_VECTOR) { + compile_error(ctx, "invalid types used in unary expression: cannot negate type %s", + type_name[exprs[0]->vtype]); + return false; } + out = (ast_expression*)ast_unary_new(ctx, (VINSTR_NEG_F-TYPE_FLOAT) + exprs[0]->vtype, exprs[0]); break; case opid2('!','P'):