compiler: skip objc types in ProcVar rtti arguments and result type

git-svn-id: trunk@24470 -
This commit is contained in:
paul 2013-05-08 03:40:01 +00:00
parent cd8690c197
commit fceb6c3cc5

View File

@ -723,6 +723,14 @@ implementation
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_8bit(paraspec));
end;
procedure write_def_reference(def:tdef);
begin
if is_void(def) or is_objc_class_or_protocol(def) then
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_sym(nil))
else
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_sym(ref_rtti(def,fullrtti)));
end;
procedure write_para(parasym:tparavarsym);
begin
{ only store user visible parameters }
@ -745,7 +753,7 @@ implementation
{ write flags for current parameter }
write_param_flag(parasym);
{ write param type }
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_sym(ref_rtti(parasym.vardef,fullrtti)));
write_def_reference(parasym.vardef);
{ write name of current parameter }
write_string(parasym.realname);
end;
@ -826,10 +834,7 @@ implementation
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_8bit(ProcCallOptionToCallConv[def.proccalloption]));
maybe_write_align;
{ write result typeinfo }
if is_void(def.returndef) then
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_sym(nil))
else
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_sym(ref_rtti(def.returndef,fullrtti)));
write_def_reference(def.returndef);
{ write parameter count }
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_8bit(def.maxparacount));
maybe_write_align;