* open array checks also for s32bitdef, because u32bit also has a

high range of -1
This commit is contained in:
peter 1999-07-27 23:39:15 +00:00
parent 0e0711e7a1
commit bdd61f119c

View File

@ -345,13 +345,15 @@ implementation
dt : tbasetype;
begin
case def^.deftype of
orddef : begin
dt:=porddef(def)^.typ;
is_signed:=(dt in [s8bit,s16bit,s32bit,s64bitint]);
end;
enumdef : is_signed:=false;
else
is_signed:=false;
orddef :
begin
dt:=porddef(def)^.typ;
is_signed:=(dt in [s8bit,s16bit,s32bit,s64bitint]);
end;
enumdef :
is_signed:=false;
else
is_signed:=false;
end;
end;
@ -360,8 +362,8 @@ implementation
function is_open_string(p : pdef) : boolean;
begin
is_open_string:=(p^.deftype=stringdef) and
(pstringdef(p)^.string_typ=st_shortstring) and
(pstringdef(p)^.len=0);
(pstringdef(p)^.string_typ=st_shortstring) and
(pstringdef(p)^.len=0);
end;
@ -369,14 +371,17 @@ implementation
function is_zero_based_array(p : pdef) : boolean;
begin
is_zero_based_array:=(p^.deftype=arraydef) and
(parraydef(p)^.lowrange=0) and
not(is_special_array(p));
(parraydef(p)^.lowrange=0) and
not(is_special_array(p));
end;
{ true, if p points to an open array def }
function is_open_array(p : pdef) : boolean;
begin
{ check for s32bitdef is needed, because for u32bit the high
range is also -1 ! (PFV) }
is_open_array:=(p^.deftype=arraydef) and
(parraydef(p)^.rangedef=pdef(s32bitdef)) and
(parraydef(p)^.lowrange=0) and
(parraydef(p)^.highrange=-1) and
not(parraydef(p)^.IsConstructor) and
@ -952,7 +957,11 @@ implementation
end.
{
$Log$
Revision 1.75 1999-07-06 21:48:29 florian
Revision 1.76 1999-07-27 23:39:15 peter
* open array checks also for s32bitdef, because u32bit also has a
high range of -1
Revision 1.75 1999/07/06 21:48:29 florian
* a lot bug fixes:
- po_external isn't any longer necessary for procedure compatibility
- m_tp_procvar is in -Sd now available