Procházet zdrojové kódy

* support dynamicarray<>nil

peter před 23 roky
rodič
revize
443f982775
2 změnil soubory, kde provedl 24 přidání a 2 odebrání
  1. 12 1
      compiler/htypechk.pas
  2. 12 1
      compiler/nadd.pas

+ 12 - 1
compiler/htypechk.pas

@@ -150,6 +150,8 @@ implementation
            (ld.deftype=variantdef) or
            (ld.deftype=variantdef) or
            (rd.deftype=variantdef) or
            (rd.deftype=variantdef) or
            ((rd.deftype=pointerdef) and
            ((rd.deftype=pointerdef) and
+            not(is_dynamic_array(ld) and
+                is_voidpointer(rd)) and
             not(is_pchar(rd) and
             not(is_pchar(rd) and
                 (is_chararray(ld) or
                 (is_chararray(ld) or
                  (ld.deftype=stringdef) or
                  (ld.deftype=stringdef) or
@@ -160,6 +162,8 @@ implementation
             (not is_integer(ld) or not (treetyp in [addn,subn]))
             (not is_integer(ld) or not (treetyp in [addn,subn]))
            ) or
            ) or
            ((ld.deftype=pointerdef) and
            ((ld.deftype=pointerdef) and
+            not(is_dynamic_array(rd) and
+                is_voidpointer(ld)) and
             not(is_pchar(ld) and
             not(is_pchar(ld) and
                 (is_chararray(rd) or
                 (is_chararray(rd) or
                  (rd.deftype=stringdef) or
                  (rd.deftype=stringdef) or
@@ -175,6 +179,8 @@ implementation
            ((ld.deftype=arraydef) and
            ((ld.deftype=arraydef) and
             not((cs_mmx in aktlocalswitches) and
             not((cs_mmx in aktlocalswitches) and
                 is_mmx_able_array(ld)) and
                 is_mmx_able_array(ld)) and
+            not(is_dynamic_array(ld) and
+                is_voidpointer(rd)) and
             not(is_chararray(ld) and
             not(is_chararray(ld) and
                 (is_char(rd) or
                 (is_char(rd) or
                  is_pchar(rd) or
                  is_pchar(rd) or
@@ -186,6 +192,8 @@ implementation
            ((rd.deftype=arraydef) and
            ((rd.deftype=arraydef) and
             not((cs_mmx in aktlocalswitches) and
             not((cs_mmx in aktlocalswitches) and
                 is_mmx_able_array(rd)) and
                 is_mmx_able_array(rd)) and
+            not(is_dynamic_array(rd) and
+                is_voidpointer(ld)) and
             not(is_chararray(rd) and
             not(is_chararray(rd) and
                 (is_char(ld) or
                 (is_char(ld) or
                  is_pchar(ld) or
                  is_pchar(ld) or
@@ -950,7 +958,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.48  2002-10-04 21:13:59  peter
+  Revision 1.49  2002-10-05 00:47:03  peter
+    * support dynamicarray<>nil
+
+  Revision 1.48  2002/10/04 21:13:59  peter
     * ignore vecn,subscriptn when checking for a procvar loadn
     * ignore vecn,subscriptn when checking for a procvar loadn
 
 
   Revision 1.47  2002/09/16 18:09:34  peter
   Revision 1.47  2002/09/16 18:09:34  peter

+ 12 - 1
compiler/nadd.pas

@@ -1043,6 +1043,14 @@ implementation
              CGMessage(type_e_mismatch);
              CGMessage(type_e_mismatch);
           end
           end
 
 
+       { support dynamicarray=nil,dynamicarray<>nil }
+         else if (is_dynamic_array(ld) and (rt=niln)) or
+                 (is_dynamic_array(rd) and (lt=niln)) then
+          begin
+            if not(nodetype in [equaln,unequaln]) then
+             CGMessage(type_e_mismatch);
+          end
+
 {$ifdef SUPPORT_MMX}
 {$ifdef SUPPORT_MMX}
        { mmx support, this must be before the zero based array
        { mmx support, this must be before the zero based array
          check }
          check }
@@ -1818,7 +1826,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.66  2002-10-04 21:19:28  jonas
+  Revision 1.67  2002-10-05 00:47:03  peter
+    * support dynamicarray<>nil
+
+  Revision 1.66  2002/10/04 21:19:28  jonas
     * fixed web bug 2139: checking for division by zero fixed
     * fixed web bug 2139: checking for division by zero fixed
 
 
   Revision 1.65  2002/09/07 15:25:02  peter
   Revision 1.65  2002/09/07 15:25:02  peter