* Fix tgeneric91, need to postpone some additional generic procedures

This commit is contained in:
Michaël Van Canneyt 2024-03-07 16:12:24 +01:00
parent b2bc020fd7
commit 22de07446d
3 changed files with 14 additions and 3 deletions

View File

@ -272,6 +272,7 @@ interface
procedure add_public_asmsym(const name:TSymStr;bind:TAsmsymbind;typ:Tasmsymtype);
procedure add_extern_asmsym(sym:TAsmSymbol);
procedure add_extern_asmsym(const name:TSymStr;bind:TAsmsymbind;typ:Tasmsymtype);
procedure remove_from_waitingforunits(amodule : tmodule);
property ImportLibraryList : TFPHashObjectList read FImportLibraryList;
function ToString: RTLString; override;
end;
@ -1359,6 +1360,13 @@ implementation
tasmsymbol.create(externasmsyms,name,bind,typ);
end;
procedure tmodule.remove_from_waitingforunits(amodule: tmodule);
begin
// It can be nil after when this is called after end_of_parsing was called.
if assigned(waitingforunit) then
waitingforunit.remove(amodule);
end;
function tmodule.ToString: RTLString;
begin
// Assigned self so we can detect nil.

View File

@ -2865,8 +2865,11 @@ uses
) and
{ may not be assigned in case it's a synthetic procdef that
still needs to be generated }
assigned(tprocdef(hp).genericdef) and
tprocdef(tprocdef(hp).genericdef).forwarddef then
(assigned(tprocdef(hp).genericdef) and
tprocdef(tprocdef(hp).genericdef).forwarddef)
{ when the implementation of the module was not yet parsed, it will not yet have a generictokenbuf }
or not assigned(tprocdef(tprocdef(hp).genericdef).generictokenbuf) then
begin
result:=false;
continue;

View File

@ -1733,7 +1733,7 @@ type
for i:=0 to module.waitingunits.count-1 do
begin
waitingmodule:=tmodule(module.waitingunits[i]);
waitingmodule.waitingforunit.remove(module);
waitingmodule.remove_from_waitingforunits(module);
end;
{$ifdef DEBUG_NODE_XML}