mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-02-07 15:01:10 +00:00
allow comparing explicitly against nil
This commit is contained in:
parent
663723f00a
commit
6cf25c0ec6
1 changed files with 6 additions and 2 deletions
|
@ -897,7 +897,11 @@ static bool parser_sy_apply_operator(parser_t *parser, shunt *sy)
|
||||||
out = fold::binary(ctx, generated_op, exprs[0], exprs[1]);
|
out = fold::binary(ctx, generated_op, exprs[0], exprs[1]);
|
||||||
break;
|
break;
|
||||||
case opid2('!', '='):
|
case opid2('!', '='):
|
||||||
if (exprs[0]->m_vtype != exprs[1]->m_vtype) {
|
#define NotComparable \
|
||||||
|
exprs[0]->m_vtype != TYPE_NIL && \
|
||||||
|
exprs[1]->m_vtype != TYPE_NIL && \
|
||||||
|
exprs[0]->m_vtype != exprs[1]->m_vtype
|
||||||
|
if (NotComparable) {
|
||||||
compile_error(ctx, "invalid types used in expression: cannot perform comparison between types %s and %s",
|
compile_error(ctx, "invalid types used in expression: cannot perform comparison between types %s and %s",
|
||||||
type_name[exprs[0]->m_vtype],
|
type_name[exprs[0]->m_vtype],
|
||||||
type_name[exprs[1]->m_vtype]);
|
type_name[exprs[1]->m_vtype]);
|
||||||
|
@ -907,7 +911,7 @@ static bool parser_sy_apply_operator(parser_t *parser, shunt *sy)
|
||||||
out = fold::binary(ctx, type_ne_instr[exprs[0]->m_vtype], exprs[0], exprs[1]);
|
out = fold::binary(ctx, type_ne_instr[exprs[0]->m_vtype], exprs[0], exprs[1]);
|
||||||
break;
|
break;
|
||||||
case opid2('=', '='):
|
case opid2('=', '='):
|
||||||
if (exprs[0]->m_vtype != exprs[1]->m_vtype) {
|
if (NotComparable) {
|
||||||
compile_error(ctx, "invalid types used in expression: cannot perform comparison between types %s and %s",
|
compile_error(ctx, "invalid types used in expression: cannot perform comparison between types %s and %s",
|
||||||
type_name[exprs[0]->m_vtype],
|
type_name[exprs[0]->m_vtype],
|
||||||
type_name[exprs[1]->m_vtype]);
|
type_name[exprs[1]->m_vtype]);
|
||||||
|
|
Loading…
Reference in a new issue