Browse Source

Extended RTTI: generate RTTI for Objective-C fields like for generic pointers

Resolves #41034
Jonas Maebe 7 months ago
parent
commit
f3b2836947
1 changed files with 4 additions and 1 deletions
  1. 4 1
      compiler/ncgrtti.pas

+ 4 - 1
compiler/ncgrtti.pas

@@ -867,7 +867,10 @@ implementation
             { FieldOffset }
             tcb.emit_tai(Tai_const.Create_sizeint(fldsym.fieldoffset),sizeuinttype);
             { FieldType: PPTypeInfo }
-            tcb.emit_tai(Tai_const.Create_sym(RTTIWriter.get_rtti_label(fldsym.vardef,fullrtti,true)),voidpointertype);
+            if is_objc_class_or_protocol(fldsym.vardef) then
+              tcb.emit_tai(Tai_const.Create_sym(RTTIWriter.get_rtti_label(voidpointertype,fullrtti,true)),voidpointertype)
+            else
+              tcb.emit_tai(Tai_const.Create_sym(RTTIWriter.get_rtti_label(fldsym.vardef,fullrtti,true)),voidpointertype);
             { FieldVisibility }
             tcb.emit_ord_const(visibility_to_rtti_flags(fldsym.visibility),u8inttype);
             { Name }