Forráskód Böngészése

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

Resolves #41034
Jonas Maebe 7 hónapja
szülő
commit
f3b2836947
1 módosított fájl, 4 hozzáadás és 1 törlés
  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 }