From: Wolfgang (Blub) Bumiller Date: Mon, 13 Aug 2012 13:09:27 +0000 (+0200) Subject: Check types on + and - operations X-Git-Tag: 0.1-rc1~334 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=9f151e82dfd7573d28f5c1f505d5ec8a42b1fa49;p=xonotic%2Fgmqcc.git Check types on + and - operations --- diff --git a/parser.c b/parser.c index 973ab4b..4a46b56 100644 --- a/parser.c +++ b/parser.c @@ -410,6 +410,12 @@ static bool parser_sy_pop(parser_t *parser, shunt *sy) type_name[exprs[1]->expression.vtype]); return false; } + if (exprs[0]->expression.vteyp != TYPE_VECTOR && exprs[0]->expression.vtype != TYPE_FLOAT) { + parseerror(parser, "type error: %s - %s not defined", + type_name[exprs[0]->expression.vtype], + type_name[exprs[1]->expression.vtype]); + return false; + } switch (exprs[0]->expression.vtype) { case TYPE_FLOAT: out = (ast_expression*)ast_binary_new(ctx, INSTR_ADD_F, exprs[0], exprs[1]); @@ -431,6 +437,12 @@ static bool parser_sy_pop(parser_t *parser, shunt *sy) type_name[exprs[0]->expression.vtype]); return false; } + if (exprs[0]->expression.vteyp != TYPE_VECTOR && exprs[0]->expression.vtype != TYPE_FLOAT) { + parseerror(parser, "type error: %s - %s not defined", + type_name[exprs[0]->expression.vtype], + type_name[exprs[1]->expression.vtype]); + return false; + } switch (exprs[0]->expression.vtype) { case TYPE_FLOAT: out = (ast_expression*)ast_binary_new(ctx, INSTR_SUB_F, exprs[0], exprs[1]);