Bladeren bron

* keep track of the current generic def in the specialization state

Sven/Sarah Barth 7 maanden geleden
bovenliggende
commit
8f81b213dc
2 gewijzigde bestanden met toevoegingen van 6 en 4 verwijderingen
  1. 5 4
      compiler/pgentype.pas
  2. 1 0
      compiler/pgenutil.pas

+ 5 - 4
compiler/pgentype.pas

@@ -36,10 +36,11 @@ const
 type
 type
   pspecializationstate = ^tspecializationstate;
   pspecializationstate = ^tspecializationstate;
   tspecializationstate = record
   tspecializationstate = record
-    oldsymtablestack    : tsymtablestack;
-    oldextendeddefs     : tfphashobjectlist;
-    oldgenericdummysyms : tfphashobjectlist;
-    oldspecializestate  : pspecializationstate;
+    oldsymtablestack      : tsymtablestack;
+    oldextendeddefs       : tfphashobjectlist;
+    oldgenericdummysyms   : tfphashobjectlist;
+    oldspecializestate    : pspecializationstate;
+    oldcurrent_genericdef : tdef;
   end;
   end;
 
 
   tspecializationcontext=class
   tspecializationcontext=class

+ 1 - 0
compiler/pgenutil.pas

@@ -2740,6 +2740,7 @@ uses
       state.oldsymtablestack:=symtablestack;
       state.oldsymtablestack:=symtablestack;
       state.oldextendeddefs:=current_module.extendeddefs;
       state.oldextendeddefs:=current_module.extendeddefs;
       state.oldgenericdummysyms:=current_module.genericdummysyms;
       state.oldgenericdummysyms:=current_module.genericdummysyms;
+      state.oldcurrent_genericdef:=current_genericdef;
       state.oldspecializestate:=pspecializationstate(current_module.specializestate);
       state.oldspecializestate:=pspecializationstate(current_module.specializestate);
       current_module.specializestate:=@state;
       current_module.specializestate:=@state;
       current_module.extendeddefs:=TFPHashObjectList.create(true);
       current_module.extendeddefs:=TFPHashObjectList.create(true);