[PATCH] D36790: [ObjC] Messages to 'self' in class methods that return 'instancetype' should use the pointer to the class as the result type of the message

John McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Dec 14 22:14:00 PST 2017

rjmccall added inline comments.

Comment at: lib/Sema/SemaExprObjC.cpp:1357
+        (ReceiverType->isObjCClassOrClassKindOfType() ||
+         ReceiverType->isObjCQualifiedClassType()) &&
+        Receiver->isObjCSelfExpr() && getLangOpts().ObjCAutoRefCount) {
What's the purpose of these two checks?  I believe one of these is required in order to have decided that we're making a class message anyway, and regardless I don't understand why they would affect your logic.

I don't think you should vary the logic here based on whether you're in ARC.  Just assume that the user isn't doing silly stuff like reassigning self to random values.  No, it's not strictly sound, but it's sound enough.



More information about the cfe-commits mailing list