fcloutier added inline comments.

================
Comment at: clang/test/AST/ast-print-attr.c:31
+// CHECK: int fun_annotate() __attribute__((annotate("annotation")))
+int fun_annotate() __attribute__((annotate("annotation")));
----------------
aaron.ballman wrote:
> Can you add a second test that shows we properly print the comma? e.g., `int 
> fun_annotate2() __attribute__((annotate("annotation one", "annotation 
> two")));`
I switched this to use `ownership_holds` and `ownership_returns` because 
`annotate` has a `VariadicExprArgument` and it doesn't know how to print 
expressions (it just prints a pointer value). `ownership_holds` and 
`ownership_returns` are the same attribute, and they have the same 
bug-triggering configuration (a fixed argument followed by a possibly-empty 
list):

```c++
int *fun_returns() __attribute__((ownership_returns(fun_returns)));
void fun_holds(int *a) __attribute__((ownership_holds(fun_holds, 1)));
```

In the `ownership_returns` case, without my change, Clang prints 
`__attribute__((ownership_returns(foo, )));`.


================
Comment at: clang/utils/TableGen/ClangAttrEmitter.cpp:2252
+  // Helper to print the starting character of an attribute argument. If there
+  // hasn't been an argument yet, it prints an opening parenthese; otherwise it
+  // prints a comma.
----------------
aaron.ballman wrote:
> One downside to printing the opening paren is that this can't be used in a 
> generic way for generating any comma-separate list. That said, I think this 
> functionality is clean -- perhaps renaming the function from `Comma` to 
> `PrintAttributeArgListElement` or something would be an improvement?
I went with `DelimitAttributeArgument`.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D95695

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

Reply via email to