jdoerfert marked 2 inline comments as done.
jdoerfert added a comment.

In D55483#1326029 <https://reviews.llvm.org/D55483#1326029>, @aaron.ballman 
wrote:

> This is missing all of the Sema and SemaCXX tests. Should have tests for 
> member functions, variadic functions, incorrect arguments, incorrect 
> subjects, etc.


I will write more tests and update this revision.



================
Comment at: include/clang/Basic/Attr.td:1204
+              VariadicUnsignedArgument<"PayloadIndices">];
+  let Subjects = SubjectList<[Function]>;
+  let Documentation = [Undocumented];
----------------
aaron.ballman wrote:
> Should this also apply to Objective-C methods?
> 
> Why should the user specify this attribute on the function as opposed to on 
> the parameter? e.g.,
> ```
> // Why this:
> __attribute__((callback (1, 2, 3)))
> void* broker0(void* (*callee)(void *), void *payload, int otherPayload) {
>   return callee(payload);
> }
> 
> // Instead of this:
> void* broker0(void* (*callee)(void *) __attribute__((callback (2, 3))), void 
> *payload, int otherPayload) {
>   return callee(payload);
> }
> 
> // Or this:
> void* broker0(void* (*callee)(void *) __attribute__((callback (payload, 
> otherPayload))), void *payload, int otherPayload) {
>   return callee(payload);
> }
> ```
> I ask because these "use an index" attributes are really hard for users to 
> use in practice. They have to account for 0-vs-1 based indexing, implicit 
> this parameters, etc and if we can avoid that, it may be worth the effort.
> Should this also apply to Objective-C methods?

I don't need it to and unless somebody does, I'd say no.


> I ask because these "use an index" attributes are really hard for users to 
> use in practice. They have to account for 0-vs-1 based indexing, implicit 
> this parameters, etc and if we can avoid that, it may be worth the effort.

I was thinking that the function notation makes it clear that there is *only 
one callback per function* allowed right now. I don't expect many manual users 
of this feature until we improve the middle-end support, so it is unclear to me 
if this requirement needs to be removed as well.

Other than that, some thoughts: 
- I do not feel strongly about this.
- The middle requirement seems not much better n the first, we would still need 
to deal with index numbers (callbacks without arguments are not really 
interesting for now). 
- The last encoding requires us to define a symbol for "unknown argument" 
(maybe _ or ?).


================
Comment at: include/clang/Basic/Attr.td:1205
+  let Subjects = SubjectList<[Function]>;
+  let Documentation = [Undocumented];
+}
----------------
aaron.ballman wrote:
> No new undocumented attributes, please.
Ok, I can write documentation similar to the commit message and the lang-ref 
documentation for the callback metadata.


Repository:
  rC Clang

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

https://reviews.llvm.org/D55483



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to