Fix comparisons with union

This commit is contained in:
gingerBill
2018-08-25 10:39:19 +01:00
parent ab71acc3a5
commit f050bfe872
+2 -2
View File
@@ -1531,7 +1531,7 @@ void check_comparison(CheckerContext *c, Operand *x, Operand *y, TokenKind op) {
switch (op) { switch (op) {
case Token_CmpEq: case Token_CmpEq:
case Token_NotEq: case Token_NotEq:
defined = is_type_comparable(x->type) || defined = (is_type_comparable(x->type) && is_type_comparable(y->type)) ||
(is_operand_nil(*x) && type_has_nil(y->type)) || (is_operand_nil(*x) && type_has_nil(y->type)) ||
(is_operand_nil(*y) && type_has_nil(x->type)); (is_operand_nil(*y) && type_has_nil(x->type));
break; break;
@@ -1539,7 +1539,7 @@ void check_comparison(CheckerContext *c, Operand *x, Operand *y, TokenKind op) {
case Token_Gt: case Token_Gt:
case Token_LtEq: case Token_LtEq:
case Token_GtEq: case Token_GtEq:
defined = is_type_ordered(x->type); defined = is_type_ordered(x->type) && is_type_ordered(y->type);
break; break;
} }