[PATCH] D69991: Implement __attribute__((objc_direct)), __attribute__((objc_direct_members))

Pierre Habouzit via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Nov 14 11:20:34 PST 2019


MadCoder added inline comments.


================
Comment at: clang/include/clang/Basic/AttrDocs.td:3919
+in particular, this means that it cannot override a superclass method or satisfy
+a protocol requirement.
+
----------------
rjmccall wrote:
> Please add a new paragraph here:
> 
>   Because a direct method cannot be overridden, it is an error to perform
>   a ``super`` message send of one.
> 
> And you should test that.  (I noticed this because you had an `assert(!IsSuper);` in IRGen, which was both a good idea and also begging for a justification. :))
hah turns out I actually need to implement the Sema check for this :D


================
Comment at: clang/lib/CodeGen/CGObjCMac.cpp:4087
+
+    ReceiverCanBeNull = isWeakLinkedClass(OID);
+  }
----------------
rjmccall wrote:
> The assumption here is that a direct class method can never be invoked on a nullable value, like a `Class`.  I think that's true, but it's worth making that explicit in a comment.
Hmm actually I think that it's _not_ true. as in I'm not disallowing it today but I should be. I need to figure out how to do that, messaging a `Class` should be as disallowed as messaging `id`.

but right now it's not.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69991/new/

https://reviews.llvm.org/D69991





More information about the cfe-commits mailing list