Bladeren bron

* allow procvars to not be registered right away

Sven/Sarah Barth 4 jaren geleden
bovenliggende
commit
3aebcccdf2
5 gewijzigde bestanden met toevoegingen van 11 en 11 verwijderingen
  1. 3 3
      compiler/i8086/symcpu.pas
  2. 1 1
      compiler/pdecsub.pas
  3. 1 1
      compiler/pdecvar.pas
  4. 1 1
      compiler/ptype.pas
  5. 5 5
      compiler/symdef.pas

+ 3 - 3
compiler/i8086/symcpu.pas

@@ -109,7 +109,7 @@ type
   { tcpuprocvardef }
 
   tcpuprocvardef = class(ti86procvardef)
-    constructor create(level:byte);override;
+    constructor create(level:byte;doregister:boolean);override;
     function getcopyas(newtyp:tdeftyp;copytyp:tproccopytyp;const paraprefix:string):tstoreddef;override;
     function address_type:tdef;override;
     function ofs_address_type:tdef;override;
@@ -440,9 +440,9 @@ implementation
                              tcpuprocvardef
 ****************************************************************************}
 
-  constructor tcpuprocvardef.create(level: byte);
+  constructor tcpuprocvardef.create(level: byte;doregister:boolean);
     begin
-      inherited create(level);
+      inherited create(level,doregister);
       if current_settings.x86memorymodel in x86_far_code_models then
         procoptions:=procoptions+[po_far];
     end;

+ 1 - 1
compiler/pdecsub.pas

@@ -336,7 +336,7 @@ implementation
           if parseprocvar<>pv_none then
            begin
              { inline procvar definitions are always nested procvars }
-             pv:=cprocvardef.create(normal_function_level+1);
+             pv:=cprocvardef.create(normal_function_level+1,true);
              if token=_LKLAMMER then
                parse_parameter_dec(pv);
              if parseprocvar=pv_func then

+ 1 - 1
compiler/pdecvar.pas

@@ -647,7 +647,7 @@ implementation
                             procsym :
                               begin
                                  { Create a temporary procvardef to handle parameters }
-                                 storedprocdef:=cprocvardef.create(normal_function_level);
+                                 storedprocdef:=cprocvardef.create(normal_function_level,true);
                                  include(storedprocdef.procoptions,po_methodpointer);
                                  { Return type must be boolean }
                                  storedprocdef.returndef:=pasbool1type;

+ 1 - 1
compiler/ptype.pas

@@ -1580,7 +1580,7 @@ implementation
 
             is_func:=(token=_FUNCTION);
             consume(token);
-            pd:=cprocvardef.create(normal_function_level);
+            pd:=cprocvardef.create(normal_function_level,true);
 
             { usage of specialized type inside its generic template }
             if assigned(genericdef) then

+ 5 - 5
compiler/symdef.pas

@@ -729,7 +729,7 @@ interface
        end;
 
        tprocvardef = class(tabstractprocdef)
-          constructor create(level:byte);virtual;
+          constructor create(level:byte;doregister:boolean);virtual;
           { returns a procvardef that represents the address of a proc(var)def }
           class function getreusableprocaddr(def: tabstractprocdef; copytyp: tcacheableproccopytyp): tprocvardef; virtual;
           { same as above, but in case the def must never be freed after the
@@ -5787,7 +5787,7 @@ implementation
           end
         else
           begin
-            result:=cprocvardef.create(nestinglevel);
+            result:=cprocvardef.create(nestinglevel,true);
           end;
         tabstractprocdef(result).returndef:=returndef;
         tabstractprocdef(result).returndefderef:=returndefderef;
@@ -7243,9 +7243,9 @@ implementation
                                  TPROCVARDEF
 ***************************************************************************}
 
-    constructor tprocvardef.create(level:byte);
+    constructor tprocvardef.create(level:byte;doregister:boolean);
       begin
-         inherited create(procvardef,level,true);
+         inherited create(procvardef,level,doregister);
       end;
 
 
@@ -7307,7 +7307,7 @@ implementation
         i : tcallercallee;
         j : longint;
       begin
-        result:=cprocvardef.create(parast.symtablelevel);
+        result:=cprocvardef.create(parast.symtablelevel,true);
         tprocvardef(result).returndef:=returndef;
         tprocvardef(result).returndefderef:=returndefderef;
         tprocvardef(result).parast:=parast.getcopy;