Browse Source

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

git-svn-id: trunk@24470 -
paul 12 years ago
parent
commit
fceb6c3cc5
1 changed files with 10 additions and 5 deletions
  1. 10 5
      compiler/ncgrtti.pas

+ 10 - 5
compiler/ncgrtti.pas

@@ -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;