* generate RTTI for *all* parameters of a method or procedure variable

git-svn-id: trunk@39885 -
This commit is contained in:
svenbarth 2018-10-07 12:25:33 +00:00
parent bb11ec6375
commit b9ec7e1e06

View File

@ -1338,9 +1338,6 @@ implementation
procedure procvardef_rtti(def:tprocvardef);
procedure write_para(parasym:tparavarsym);
begin
{ only store user visible parameters }
if not(vo_is_hidden_para in parasym.varoptions) then
begin
{ write flags for current parameter }
write_param_flag(tcb,parasym);
@ -1349,12 +1346,8 @@ implementation
{ write name of type of current parameter }
write_rtti_name(tcb,parasym.vardef);
end;
end;
procedure write_procedure_param(parasym:tparavarsym);
begin
{ only store user visible parameters }
if not(vo_is_hidden_para in parasym.varoptions) then
begin
{ every parameter is expected to start aligned }
tcb.begin_anonymous_record(
@ -1373,7 +1366,6 @@ implementation
tcb.emit_shortstring_const(parasym.realname);
tcb.end_anonymous_record;
end;
end;
var
methodkind : byte;
@ -1392,7 +1384,7 @@ implementation
{ write parameter info. The parameters must be written in reverse order
if this method uses right to left parameter pushing! }
tcb.emit_ord_const(def.maxparacount,u8inttype);
tcb.emit_ord_const(def.paras.count,u8inttype);
for i:=0 to def.paras.count-1 do
write_para(tparavarsym(def.paras[i]));
@ -1412,7 +1404,6 @@ implementation
{ enclosing record takes care of alignment }
{ write params typeinfo }
for i:=0 to def.paras.count-1 do
if not(vo_is_hidden_para in tparavarsym(def.paras[i]).varoptions) then
begin
if is_open_array(tparavarsym(def.paras[i]).vardef) or is_array_of_const(tparavarsym(def.paras[i]).vardef) then
write_rtti_reference(tcb,tarraydef(tparavarsym(def.paras[i]).vardef).elementdef,fullrtti)
@ -1436,7 +1427,7 @@ implementation
{ write result typeinfo }
write_rtti_reference(tcb,def.returndef,fullrtti);
{ write parameter count }
tcb.emit_ord_const(def.maxparacount,u8inttype);
tcb.emit_ord_const(def.paras.count,u8inttype);
for i:=0 to def.paras.count-1 do
write_procedure_param(tparavarsym(def.paras[i]));
tcb.end_anonymous_record;