فهرست منبع

* Fixed mark_write for @ operator
(can happen when compiling @procvar:=nil (Delphi mode construction))

daniel 22 سال پیش
والد
کامیت
25af993b76
2فایلهای تغییر یافته به همراه20 افزوده شده و 5 حذف شده
  1. 12 1
      compiler/nmem.pas
  2. 8 4
      compiler/node.pas

+ 12 - 1
compiler/nmem.pas

@@ -62,6 +62,7 @@ interface
           constructor create(l : tnode);virtual;
           constructor ppuload(t:tnodetype;ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
+          procedure mark_write;override;
           procedure derefimpl;override;
           function getcopy : tnode;override;
           function pass_1 : tnode;override;
@@ -298,6 +299,12 @@ implementation
         ppufile.putderef(getprocvardef);
       end;
 
+    procedure Taddrnode.mark_write;
+    
+    begin
+      {@procvar:=nil is legal in Delphi mode.}
+      left.mark_write;
+    end;
 
     procedure taddrnode.derefimpl;
       begin
@@ -1043,7 +1050,11 @@ begin
 end.
 {
   $Log$
-  Revision 1.42  2003-01-03 12:15:56  daniel
+  Revision 1.43  2003-01-04 15:54:03  daniel
+    * Fixed mark_write for @ operator
+      (can happen when compiling @procvar:=nil (Delphi mode construction))
+
+  Revision 1.42  2003/01/03 12:15:56  daniel
     * Removed ifdefs around notifications
       ifdefs around for loop optimizations remain
 

+ 8 - 4
compiler/node.pas

@@ -337,7 +337,7 @@ interface
 {$endif}
           { For a t1:=t2 tree, mark the part of the tree t1 that gets
             written to (normally the loadnode) as write access. }
-          procedure mark_write;virtual;
+          procedure mark_write;virtual;abstract;
           procedure det_temp;virtual;abstract;
 
           procedure pass_2;virtual;abstract;
@@ -695,9 +695,9 @@ implementation
          getcopy:=p;
       end;
 
-    procedure tnode.mark_write;
+{    procedure tnode.mark_write;
       begin
-      end;
+      end;}
 
     procedure tnode.insertintolist(l : tnodelist);
 
@@ -976,7 +976,11 @@ implementation
 end.
 {
   $Log$
-  Revision 1.48  2003-01-03 21:03:02  peter
+  Revision 1.49  2003-01-04 15:54:03  daniel
+    * Fixed mark_write for @ operator
+      (can happen when compiling @procvar:=nil (Delphi mode construction))
+
+  Revision 1.48  2003/01/03 21:03:02  peter
     * made mark_write dummy instead of abstract
 
   Revision 1.47  2003/01/03 12:15:56  daniel