From: Dale Weiler Date: Sat, 15 Jun 2013 09:53:12 +0000 (+0000) Subject: This is easier X-Git-Tag: v0.3.0~125 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=0c5850941790653e5fbb8cb4f8050446137806f9;p=xonotic%2Fgmqcc.git This is easier --- diff --git a/parser.c b/parser.c index c92e51c..b53dba5 100644 --- a/parser.c +++ b/parser.c @@ -1041,22 +1041,12 @@ static bool parser_sy_apply_operator(parser_t *parser, shunt *sy) * whole process ends up becoming: * (LHS | RHS) & (-1 - (LHS & RHS)) */ - #define TRY_TYPE(I) \ - if (exprs[(I)]->vtype != TYPE_FLOAT) { \ - ast_type_to_string(exprs[(I)], ty1, sizeof(ty1)); \ - compile_error ( \ - ast_ctx(exprs[(I)]), \ - "invalid type `%s` for bit-xor in %s", \ - ty1, \ - ((I) == 0) \ - ? "left-hand-side of expression" \ - : "right-hand-side of expression" \ - ); \ - return false; \ - } - TRY_TYPE(0) - TRY_TYPE(1) - #undef TRY_TYPE + if (NotSameType(TYPE_FLOAT)) { + compile_error(ctx, "invalid types used in expression: cannot perform bit operations between types %s and %s", + type_name[exprs[0]->vtype], + type_name[exprs[1]->vtype]); + return false; + } if(CanConstFold(exprs[0], exprs[1])) { out = (ast_expression*)parser_const_float(parser, (float)((qcint)(ConstF(0)) ^ ((qcint)(ConstF(1)))));