From: Wolfgang Bumiller Date: Thu, 3 Jan 2013 11:56:26 +0000 (+0100) Subject: check for TYPE_NOEXPR in general when applying an operator X-Git-Tag: before-library~376^2 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=614fcb12f5989ba62894ee8a09b396d6fd0af37b;p=xonotic%2Fgmqcc.git check for TYPE_NOEXPR in general when applying an operator --- diff --git a/parser.c b/parser.c index 14b4c81..f49184d 100644 --- a/parser.c +++ b/parser.c @@ -549,6 +549,16 @@ static bool parser_sy_apply_operator(parser_t *parser, shunt *sy) exprs[i] = sy->out[vec_size(sy->out)+i].out; blocks[i] = sy->out[vec_size(sy->out)+i].block; asvalue[i] = (ast_value*)exprs[i]; + + if (exprs[i]->expression.vtype == TYPE_NOEXPR && + !(i != 0 && op->id == opid2('?',':'))) + { + if (ast_istype(exprs[i], ast_label)) + compile_error(ast_ctx(exprs[i]), "expected expression, got an unknown identifier"); + else + compile_error(ast_ctx(exprs[i]), "not an expression"); + (void)!compile_warning(ast_ctx(exprs[i]), WARN_DEBUG, "expression %u\n", (unsigned int)i); + } } if (blocks[0] && !vec_size(blocks[0]->exprs) && op->id != opid1(',')) {