[PATCH] D41228: [ObjC] Enable __strong pointers in structs under ARC

John McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sat Feb 24 09:38:47 PST 2018


rjmccall accepted this revision.
rjmccall added a comment.
This revision is now accepted and ready to land.

Thanks!  This looks ready; thank you for your patience in working this out.



================
Comment at: include/clang/AST/Type.h:1108
+    PCK_ARCStrong,  // objc strong pointer.
+    PCK_Struct   // non-trivial C struct.
+  };
----------------
ahatanak wrote:
> rjmccall wrote:
> > These should all be /// documentation comments, and they mostly shouldn't talk about fields since this is a query on QualType, not FieldDecl.  I would suggest something like:
> > 
> > for Trivial - The type does not fall into any of the following categories.  Note that this case is zero-valued so that values of this enum can be used as a boolean condition for non-triviality.
> > 
> > for VolatileTrivial - The type would be trivial except that it is volatile-qualified.  Types that fall into one of the other non-trivial cases may additionally be volatile-qualified.
> > 
> > for ARCStrong - The type is an Objective-C retainable pointer type that is qualified with the ARC __strong qualifier.
> > 
> > for Struct - The type is a struct containing a field whose type is not PCK_Trivial.  Note that a C++ struct type does not necessarily match this; C++ copying semantics are too complex to express here, in part because they depend on the exact constructor or assignment operator that is chosen by overload resolution to do the copy.
> Thanks, I copied your comments verbatim except the comment on PCK_Struct: types that are PCK_Struct have a field that is neither PCK_Trivial nor PCK_VolatileTrivial. We can use the original comment once we start distinguishing PCK_Trivial structs that have volatile fields from those that don't. 
Yes, of course, that makes sense.


https://reviews.llvm.org/D41228





More information about the cfe-commits mailing list