diff --git a/compiler/types.pas b/compiler/types.pas index a08bf5175e..80b6db85e4 100644 --- a/compiler/types.pas +++ b/compiler/types.pas @@ -874,14 +874,23 @@ implementation end; end else - if (def1^.deftype=arraydef) and (def2^.deftype=arraydef) and - (is_open_array(def1) or is_open_array(def2) or - is_array_of_const(def1) or is_array_of_const(def2)) then + if (def1^.deftype=arraydef) and (def2^.deftype=arraydef) then begin - if parraydef(def1)^.IsArrayOfConst or parraydef(def2)^.IsArrayOfConst then - b:=true + if is_open_array(def1) or is_open_array(def2) or + is_array_of_const(def1) or is_array_of_const(def2) then + begin + if parraydef(def1)^.IsArrayOfConst or parraydef(def2)^.IsArrayOfConst then + b:=true + else + b:=is_equal(parraydef(def1)^.definition,parraydef(def2)^.definition); + end else - b:=is_equal(parraydef(def1)^.definition,parraydef(def2)^.definition); + begin + b:=(parraydef(def1)^.lowrange=parraydef(def2)^.lowrange) and + (parraydef(def1)^.highrange=parraydef(def2)^.highrange) and + is_equal(parraydef(def1)^.definition,parraydef(def2)^.definition) and + is_equal(parraydef(def1)^.rangedef,parraydef(def2)^.rangedef); + end; end else if (def1^.deftype=classrefdef) and (def2^.deftype=classrefdef) then @@ -957,7 +966,10 @@ implementation end. { $Log$ - Revision 1.76 1999-07-27 23:39:15 peter + Revision 1.77 1999-07-29 11:41:51 peter + * array is_equal extended + + 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