pike.git/
src/
pike_types.cmod
Branch:
Tag:
Non-build tags
All tags
No tags
2020-09-28
2020-09-28 11:25:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>
5bafbdc0be768372f4e04b36faeb617a227a9972 (
37
lines) (+
22
/-
15
)
[
Show
|
Annotate
]
Branch:
master
Compiler
[Typechecker]
: Fixed some infinite recursion.
4096:
free_type(tmp); return NULL; }
-
if (
a->type == T_AND) {
-
ret = low_intersect_types(
tmp
, tmp2, NULL, aflags, bflags, remap_flags
)
;
-
} else
{
-
ret
= or_pike_types(tmp,
tmp2
, 0)
;
+
if (
!
tmp) {
+
return
tmp2;
}
-
+
type_stack_mark();
+
push_finished_type(tmp);
+
push_finished_type(tmp2);
+
push_reverse_type(a->type);
free_type(tmp); free_type(tmp2);
-
return
ret
;
+
return
pop_unfinished_type()
;
} switch(b->type) { case T_OR:
4748:
free_type(tmp); return NULL; }
-
if (
a->type == T_AND) {
-
ret = low_intersect_types(
tmp
, tmp2, NULL, aflags, bflags, remap_flags
)
;
-
} else
{
-
ret
= or_pike_types(tmp,
tmp2
, 0)
;
+
if (
!
tmp) {
+
return
tmp2;
}
-
+
type_stack_mark();
+
push_finished_type(tmp);
+
push_finished_type(tmp2);
+
push_reverse_type(a->type);
free_type(tmp); free_type(tmp2);
-
return
ret
;
+
return
pop_unfinished_type()
;
} switch(b->type) { case T_OR:
4768:
free_type(tmp); return NULL; }
-
if (
b->type == T_AND) {
-
ret = low_intersect_types(
tmp
, tmp2, NULL, aflags, bflags, remap_flags
)
;
-
} else
{
-
ret
= or_pike_types(tmp,
tmp2
, 0)
;
+
if (
!
tmp) {
+
return
tmp2;
}
-
+
type_stack_mark();
+
push_finished_type(tmp);
+
push_finished_type(tmp2);
+
push_reverse_type(b->type);
free_type(tmp); free_type(tmp2);
-
return
ret
;
+
return
pop_unfinished_type()
;
} /* NB: Complex types from this point onwards are containers,