X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=parser.c;h=cb02e742b5a117acc87bf7dc5d5e084fbb7cb477;hp=c0ca8b59f4ce6588c2600197a6511ecbc994ae2e;hb=7d14fdf530e49cb04b13572a790178c4c4bf75dc;hpb=9bda8f61f403620c4e39e3b7e175ba3d1d09d8c9 diff --git a/parser.c b/parser.c index c0ca8b5..cb02e74 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(',')) {