mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-01-19 23:00:59 +00:00
The problem was so subtle
This commit is contained in:
parent
3fa74da2b5
commit
960cb7034a
2 changed files with 6 additions and 3 deletions
3
fold.c
3
fold.c
|
@ -383,7 +383,7 @@ static GMQCC_INLINE ast_expression *fold_op_sub(fold_t *fold, ast_value *a, ast_
|
|||
|
||||
static GMQCC_INLINE ast_expression *fold_op_mul(fold_t *fold, ast_value *a, ast_value *b) {
|
||||
if (isfloat(a)) {
|
||||
if (isfloat(b)) {
|
||||
if (isvector(b)) {
|
||||
if (fold_can_2(a, b))
|
||||
return fold_constgen_vector(fold, vec3_mulvf(fold_immvalue_vector(b), fold_immvalue_float(a)));
|
||||
} else {
|
||||
|
@ -585,5 +585,6 @@ ast_expression *fold_op(fold_t *fold, const oper_info *info, ast_expression **op
|
|||
case opid2('=','='): return fold_op_cmp (fold, a, b, false);
|
||||
case opid2('~','P'): return fold_op_bnot (fold, a);
|
||||
}
|
||||
compile_error(fold_ctx(fold), "internal error: attempted to constant for unsupported operator");
|
||||
return NULL;
|
||||
}
|
||||
|
|
6
parser.c
6
parser.c
|
@ -506,9 +506,11 @@ static bool parser_sy_apply_operator(parser_t *parser, shunt *sy)
|
|||
if (exprs[0]->vtype != exprs[1]->vtype ||
|
||||
(exprs[0]->vtype != TYPE_VECTOR && exprs[0]->vtype != TYPE_FLOAT) )
|
||||
{
|
||||
compile_error(ctx, "invalid types used in expression: cannot add type %s and %s",
|
||||
compile_error(ctx, "invalid types used in expression: cannot add type %s and %s (%s %s)",
|
||||
type_name[exprs[0]->vtype],
|
||||
type_name[exprs[1]->vtype]);
|
||||
type_name[exprs[1]->vtype],
|
||||
asvalue[0]->name,
|
||||
asvalue[1]->name);
|
||||
return false;
|
||||
}
|
||||
if (!(out = fold_op(parser->fold, op, exprs))) {
|
||||
|
|
Loading…
Reference in a new issue