Browse Source

* fixed variant warning with was sometimes said with sets

peter 27 years ago
parent
commit
37732325f3
2 changed files with 24 additions and 19 deletions
  1. 5 2
      compiler/pass_1.pas
  2. 19 17
      compiler/tcld.pas

+ 5 - 2
compiler/pass_1.pas

@@ -270,7 +270,7 @@ implementation
              firstadd,         {starstarn}
              firstprocinline,  {procinlinen}
              firstarrayconstruct, {arrayconstructn}
-             firstnothing,     {arrayconstructrangen}
+             firstarrayconstructrange, {arrayconstructrangen}
              firstnothing,     {nothingn}
              firstloadvmt      {loadvmtn}
              );
@@ -350,7 +350,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.96  1998-10-06 20:49:07  peter
+  Revision 1.97  1998-11-05 14:26:47  peter
+    * fixed variant warning with was sometimes said with sets
+
+  Revision 1.96  1998/10/06 20:49:07  peter
     * m68k compiler compiles again
 
   Revision 1.95  1998/09/24 15:13:44  peter

+ 19 - 17
compiler/tcld.pas

@@ -29,6 +29,7 @@ interface
     procedure firstload(var p : ptree);
     procedure firstassignment(var p : ptree);
     procedure firstfuncret(var p : ptree);
+    procedure firstarrayconstructrange(var p:ptree);
     procedure firstarrayconstruct(var p : ptree);
     procedure firsttype(var p : ptree);
 
@@ -319,6 +320,19 @@ implementation
       end;
 
 
+{*****************************************************************************
+                           FirstArrayConstructRange
+*****************************************************************************}
+
+    procedure firstarrayconstructrange(var p:ptree);
+      begin
+        firstpass(p^.left);
+        firstpass(p^.right);
+        calcregisters(p,0,0,0);
+        p^.resulttype:=p^.left^.resulttype;
+      end;
+
+
 {*****************************************************************************
                            FirstArrayConstruct
 *****************************************************************************}
@@ -357,10 +371,7 @@ implementation
                pd:=hp^.left^.resulttype
               else
                if (not varia) and (not is_equal(pd,hp^.left^.resulttype)) then
-                begin
-                  varia:=true;
-                  Comment(V_Warning,'Variant type found !!');
-                end;
+                varia:=true;
               inc(len);
               hp:=hp^.right;
             end;
@@ -373,18 +384,6 @@ implementation
       end;
 
 
-{*****************************************************************************
-                         FirstArrayConstructRange
-*****************************************************************************}
-
-    procedure firstarrayconstructrange(var p : ptree);
-      begin
-      { This is not allowed, it's only to support sets when parsing the [a..b] }
-        Internalerror(4236);
-        Codegenerror:=true;
-      end;
-
-
 {*****************************************************************************
                                  Type
 *****************************************************************************}
@@ -399,7 +398,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.6  1998-10-19 08:55:12  pierre
+  Revision 1.7  1998-11-05 14:26:48  peter
+    * fixed variant warning with was sometimes said with sets
+
+  Revision 1.6  1998/10/19 08:55:12  pierre
     * wrong stabs info corrected once again !!
     + variable vmt offset with vmt field only if required
       implemented now !!!