peter 26 years ago
parent
commit
45bf051885
6 changed files with 93 additions and 21 deletions
  1. 15 5
      compiler/htypechk.pas
  2. 10 1
      compiler/pdecl.pas
  3. 17 4
      compiler/pexpr.pas
  4. 9 5
      compiler/scandir.inc
  5. 22 1
      compiler/tcadd.pas
  6. 20 5
      compiler/tcmem.pas

+ 15 - 5
compiler/htypechk.pas

@@ -124,11 +124,15 @@ implementation
                          (not is_boolean(def_to))) then
                          (not is_boolean(def_to))) then
                        b:=0;
                        b:=0;
                    end;
                    end;
-{                 enumdef :
+                 enumdef :
                    begin
                    begin
-                     doconv:=tc_int_2_int;
-                     b:=1;
-                   end;}
+                     { needed for char(enum) }
+                     if explicit then
+                      begin
+                        doconv:=tc_int_2_int;
+                        b:=1;
+                      end;
+                   end;
                end;
                end;
              end;
              end;
 
 
@@ -662,9 +666,15 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.30  1999-06-28 16:02:30  peter
+  Revision 1.31  1999-07-16 10:04:32  peter
+    * merged
+
+  Revision 1.30  1999/06/28 16:02:30  peter
     * merged
     * merged
 
 
+  Revision 1.27.2.4  1999/07/16 09:52:18  peter
+    * allow char(enum)
+
   Revision 1.27.2.3  1999/06/28 15:51:27  peter
   Revision 1.27.2.3  1999/06/28 15:51:27  peter
     * tp7 fix
     * tp7 fix
 
 

+ 10 - 1
compiler/pdecl.pas

@@ -2124,7 +2124,10 @@ unit pdecl;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.132  1999-07-11 21:24:31  michael
+  Revision 1.133  1999-07-16 10:04:34  peter
+    * merged
+
+  Revision 1.132  1999/07/11 21:24:31  michael
   + Fixed integer message table
   + Fixed integer message table
 
 
   Revision 1.131  1999/07/06 21:48:23  florian
   Revision 1.131  1999/07/06 21:48:23  florian
@@ -2146,6 +2149,12 @@ end.
     * use of is_ordinal checked: often a qword/int64 isn't allowed (case/for ...)
     * use of is_ordinal checked: often a qword/int64 isn't allowed (case/for ...)
     * small qword problems fixed
     * small qword problems fixed
 
 
+  Revision 1.127.2.4  1999/07/11 21:48:01  michael
+  + merged dispatch fix
+
+  Revision 1.127.2.3  1999/07/07 07:53:22  michael
+  + Merged patches from florian
+
   Revision 1.127.2.2  1999/07/05 20:03:27  peter
   Revision 1.127.2.2  1999/07/05 20:03:27  peter
     * removed warning/notes
     * removed warning/notes
 
 

+ 17 - 4
compiler/pexpr.pas

@@ -60,7 +60,9 @@ unit pexpr;
 {$endif}
 {$endif}
        ;
        ;
 
 
-    const allow_type : boolean = true;
+    const
+      allow_type : boolean = true;
+      got_addrn  : boolean = false;
 
 
     function parse_paras(_colon,in_prop_paras : boolean) : ptree;
     function parse_paras(_colon,in_prop_paras : boolean) : ptree;
 
 
@@ -116,9 +118,9 @@ unit pexpr;
 
 
       begin
       begin
          if (m_tp_procvar in aktmodeswitches) and
          if (m_tp_procvar in aktmodeswitches) and
-{            (not afterassignment) and }
+            (not got_addrn) and
             (not in_args) and
             (not in_args) and
-            (p^.treetype in [loadn]) then
+            (p^.treetype=loadn) then
             begin
             begin
                { support if procvar then for tp7 and many other expression like this }
                { support if procvar then for tp7 and many other expression like this }
                Store_valid:=Must_be_valid;
                Store_valid:=Must_be_valid;
@@ -1741,7 +1743,9 @@ unit pexpr;
                end;
                end;
  KLAMMERAFFE : begin
  KLAMMERAFFE : begin
                  consume(KLAMMERAFFE);
                  consume(KLAMMERAFFE);
+                 got_addrn:=true;
                  p1:=factor(true);
                  p1:=factor(true);
+                 got_addrn:=false;
                  p1:=gensinglenode(addrn,p1);
                  p1:=gensinglenode(addrn,p1);
                end;
                end;
     LKLAMMER : begin
     LKLAMMER : begin
@@ -2042,7 +2046,10 @@ unit pexpr;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.120  1999-07-06 22:38:11  florian
+  Revision 1.121  1999-07-16 10:04:35  peter
+    * merged
+
+  Revision 1.120  1999/07/06 22:38:11  florian
     * another fix for TP/Delphi styled procedure variables
     * another fix for TP/Delphi styled procedure variables
 
 
   Revision 1.119  1999/07/05 20:13:16  peter
   Revision 1.119  1999/07/05 20:13:16  peter
@@ -2061,6 +2068,12 @@ end.
   Revision 1.116  1999/06/26 00:24:53  pierre
   Revision 1.116  1999/06/26 00:24:53  pierre
    * mereg from fixes-0_99_12 branch
    * mereg from fixes-0_99_12 branch
 
 
+  Revision 1.112.2.8  1999/07/16 09:54:57  peter
+    * @procvar support in tp7 mode works again
+
+  Revision 1.112.2.7  1999/07/07 07:53:10  michael
+  + Merged patches from florian
+
   Revision 1.112.2.6  1999/07/01 21:31:59  peter
   Revision 1.112.2.6  1999/07/01 21:31:59  peter
     * procvar fixes again
     * procvar fixes again
 
 

+ 9 - 5
compiler/scandir.inc

@@ -918,11 +918,9 @@ const
            current_scanner^.readchar;
            current_scanner^.readchar;
            current_scanner^.skipspace;
            current_scanner^.skipspace;
            l:=current_scanner^.readval;
            l:=current_scanner^.readval;
-           if l>1024 then
-            maxheapsize:=l;
+           { Ignore this value, because the limit is set by the OS
+             info and shouldn't be changed by the user (PFV) }
          end;
          end;
-        if heapsize>maxheapsize then
-          message(scan_w_illegal_switch);
       end;
       end;
 
 
 
 
@@ -1087,10 +1085,16 @@ const
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.54  1999-07-03 00:29:58  peter
+  Revision 1.55  1999-07-16 10:04:36  peter
+    * merged
+
+  Revision 1.54  1999/07/03 00:29:58  peter
     * new link writing to the ppu, one .ppu is needed for all link types,
     * new link writing to the ppu, one .ppu is needed for all link types,
       static (.o) is now always created also when smartlinking is used
       static (.o) is now always created also when smartlinking is used
 
 
+  Revision 1.53.2.1  1999/07/16 09:53:06  peter
+    * ignore maxheapsize
+
   Revision 1.53  1999/06/02 22:44:18  pierre
   Revision 1.53  1999/06/02 22:44:18  pierre
    * previous wrong log corrected
    * previous wrong log corrected
 
 

+ 22 - 1
compiler/tcadd.pas

@@ -926,6 +926,21 @@ implementation
            end
            end
          else
          else
 
 
+         { support procvar=nil,procvar<>nil }
+           if ((ld^.deftype=procvardef) and (rt=niln)) or
+              ((rd^.deftype=procvardef) and (lt=niln)) then
+            begin
+              calcregisters(p,1,0,0);
+              p^.location.loc:=LOC_REGISTER;
+              case p^.treetype of
+                 equaln,unequaln : ;
+              else
+                CGMessage(type_e_mismatch);
+              end;
+              convdone:=true;
+            end
+         else
+
            if (rd^.deftype=pointerdef) or
            if (rd^.deftype=pointerdef) or
              is_zero_based_array(rd) then
              is_zero_based_array(rd) then
             begin
             begin
@@ -1102,9 +1117,15 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.36  1999-06-17 15:32:48  pierre
+  Revision 1.37  1999-07-16 10:04:37  peter
+    * merged
+
+  Revision 1.36  1999/06/17 15:32:48  pierre
    * merged from 0-99-12 branch
    * merged from 0-99-12 branch
 
 
+  Revision 1.34.2.3  1999/07/16 09:54:58  peter
+    * @procvar support in tp7 mode works again
+
   Revision 1.34.2.2  1999/06/17 15:25:07  pierre
   Revision 1.34.2.2  1999/06/17 15:25:07  pierre
    * for arrays of char operators can not be overloaded
    * for arrays of char operators can not be overloaded
 
 

+ 20 - 5
compiler/tcmem.pas

@@ -179,9 +179,18 @@ implementation
               { proc/procvar 2 procvar ? }
               { proc/procvar 2 procvar ? }
               if p^.left^.treetype=calln then
               if p^.left^.treetype=calln then
                 begin
                 begin
-                     { it could also be a procvar, not only pprocsym ! }
-                     if p^.left^.symtableprocentry^.typ=varsym then
-                        hp:=genloadnode(pvarsym(p^.left^.symtableentry),p^.left^.symtableproc)
+                     { is it a procvar, this is needed for @procvar in tp mode ! }
+                     if assigned(p^.left^.right) then
+                       begin
+                         { just return the load of the procvar, remove the
+                           addrn and calln nodes }
+                         hp:=p^.left^.right;
+                         putnode(p^.left);
+                         putnode(p);
+                         firstpass(hp);
+                         p:=hp;
+                         exit;
+                       end
                      else
                      else
                         begin
                         begin
                           { generate a methodcallnode or proccallnode }
                           { generate a methodcallnode or proccallnode }
@@ -268,7 +277,7 @@ implementation
          if is_constnode(p^.left) then
          if is_constnode(p^.left) then
           begin
           begin
             aktfilepos:=p^.left^.fileinfo;
             aktfilepos:=p^.left^.fileinfo;
-	    CGMessage(type_e_no_addr_of_constant);
+            CGMessage(type_e_no_addr_of_constant);
           end
           end
          else
          else
            begin
            begin
@@ -582,12 +591,18 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.20  1999-07-05 20:25:41  peter
+  Revision 1.21  1999-07-16 10:04:39  peter
+    * merged
+
+  Revision 1.20  1999/07/05 20:25:41  peter
     * merged
     * merged
 
 
   Revision 1.19  1999/07/05 16:24:17  peter
   Revision 1.19  1999/07/05 16:24:17  peter
     * merged
     * merged
 
 
+  Revision 1.18.2.4  1999/07/16 09:54:59  peter
+    * @procvar support in tp7 mode works again
+
   Revision 1.18.2.3  1999/07/05 20:06:47  peter
   Revision 1.18.2.3  1999/07/05 20:06:47  peter
     * give error instead of warning for ln(0) and sqrt(0)
     * give error instead of warning for ln(0) and sqrt(0)