pike.git/
src/
pike_types.cmod
Branch:
Tag:
Non-build tags
All tags
No tags
2021-11-17
2021-11-17 14:09:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>
b81c0a2e08d35152bd0542e34a870c6c6db225a8 (
26
lines) (+
15
/-
11
)
[
Show
|
Annotate
]
Branch:
master
Compiler
[Typechecker]
: Improved handling of nullable types.
5324:
} }
-
if
(
(a->type
==
T_ZERO)
&&
(
bflags
& PT
_
FLAG_CMP_NULLABLE
)
)
{
-
b
=
a;
-
goto recur;
-
}
-
if ((
b
->type == T_ZERO)
&&
(
aflags
&
PT
_
FLAG_CMP_NULLABLE
))
{
-
a
=
b;
-
goto recur;
-
}
-
if
((a->type
==
T_INT)
&&
(bflags
& PT_FLAG_CMP_NULLABLE)) {
+
/*
NB: TWOT
(
T_INT,
T_ZERO)
and
TWOT
(
T_ZERO,
T
_
INT
)
have
+
*
been
handled
above.
+
*/
+
if ((
(a
->type == T_ZERO)
||
(
a->type
==
T
_
INT
))
&&
+
(bflags
&
PT_FLAG_CMP_NULLABLE))
{
+
/*
FIXME:
Only
valid
for
AND
and
MINUS.
*/
b = zero_type_string;
-
+
bflags &= ~PT_FLAG_CMP_NULLABLE;
goto recur; }
-
if ((b->type == T_INT) && (aflags & PT_FLAG_CMP_NULLABLE)) {
+
if ((
(
b->type == T_
ZERO) || (b->type == T_
INT)
)
&&
+
(aflags & PT_FLAG_CMP_NULLABLE)) {
+
/* FIXME: Only valid for AND and MINUS. */
+
if (op == PT_BINOP_AND) {
a = zero_type_string;
-
+
}
+
aflags &= ~PT_FLAG_CMP_NULLABLE;
goto recur; }