* extend parse_proctype_directives to handle proc(var)defs as well as invokables

This commit is contained in:
Sven/Sarah Barth 2022-01-27 22:37:10 +01:00
parent bb637fa389
commit c92e290d67

View File

@ -68,7 +68,7 @@ interface
procedure parse_parameter_dec(pd:tabstractprocdef); procedure parse_parameter_dec(pd:tabstractprocdef);
procedure parse_proc_directives(pd:tabstractprocdef;var pdflags:tpdflags); procedure parse_proc_directives(pd:tabstractprocdef;var pdflags:tpdflags);
procedure parse_proctype_directives(pd:tdef); procedure parse_proctype_directives(pd_or_invkdef:tdef);
procedure parse_object_proc_directives(pd:tprocdef); procedure parse_object_proc_directives(pd:tprocdef);
procedure parse_record_proc_directives(pd:tprocdef); procedure parse_record_proc_directives(pd:tprocdef);
function parse_proc_head(astruct:tabstractrecorddef;potype:tproctypeoption;flags:tparse_proc_flags;genericdef:tdef;generictypelist:tfphashobjectlist;out pd:tprocdef):boolean; function parse_proc_head(astruct:tabstractrecorddef;potype:tproctypeoption;flags:tparse_proc_flags;genericdef:tdef;generictypelist:tfphashobjectlist;out pd:tprocdef):boolean;
@ -3431,16 +3431,19 @@ const
end; end;
procedure parse_proctype_directives(pd:tdef); procedure parse_proctype_directives(pd_or_invkdef:tdef);
var var
pdflags : tpdflags; pdflags : tpdflags;
pd : tabstractprocdef;
begin begin
if is_invokable(pd) then if is_invokable(pd_or_invkdef) then
pd:=get_invoke_procdef(tobjectdef(pd)) pd:=get_invoke_procdef(tobjectdef(pd_or_invkdef))
else if pd.typ<>procvardef then else if pd_or_invkdef.typ=procvardef then
pd:=tprocvardef(pd_or_invkdef)
else
internalerror(2022012501); internalerror(2022012501);
pdflags:=[pd_procvar]; pdflags:=[pd_procvar];
parse_proc_directives(tabstractprocdef(pd),pdflags); parse_proc_directives(pd,pdflags);
end; end;