erichkeane added a comment.

I'm down to 1 little thing in how we handle the attribute itself, and I think 
@aaron.ballman understands the parsing section better than I do...



================
Comment at: clang/lib/Parse/ParseDecl.cpp:386
   ArgsVector ArgExprs;
   if (Tok.is(tok::identifier)) {
     // If this attribute wants an 'identifier' argument, make it so.
----------------
So does this mean that our pack-parsing code is allowing identifiers?  I really 
expected this patch to enforce via the clang-attr-emitter that ONLY the 'expr' 
types were allowed.  So you'd have:

if (attributeAcceptsExprPack(AttrName)) {
... <where this ONLY accepts an expression pack>
} else if (Tok.is(tok::identifier)) {
...
}...


================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:4179
+                              MutableArrayRef<Expr *> AllArgs) {
+  assert(AllArgs.size());
+
----------------
Does this work with a partial specialization?  I'd like to see some tests that 
ensure we work in that case (both where the partial specialization sets the 
string literal correctly, and where it doesnt).


================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:4202
+  // If the first argument is value dependent we delay setting the arguments.
+  if (AllArgs.size() && AllArgs[0]->isValueDependent()) {
+    auto *Attr = AnnotateAttr::CreateWithDelayedArgs(
----------------
if AllArgs.size() == 0, this is an error case.  Annotate requires at least 1 
parameter.


================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:4203
+  if (AllArgs.size() && AllArgs[0]->isValueDependent()) {
+    auto *Attr = AnnotateAttr::CreateWithDelayedArgs(
+        S.getASTContext(), AllArgs.data(), AllArgs.size(), AL);
----------------
I would like @aaron.ballman to comment on this, but I think we probably want 
this case to be covered in the top of `HandleDeclAttr`, which would mean in the 
'not all values filled' case, we skip the 'handleAnnotateAttr'.  

WDYT Aaron?  The downside is that this function couldn't check a 'partially 
filled in' attribute, but it would make us that much closer to this flag being 
a very simple thing to opt into.


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

https://reviews.llvm.org/D114439

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

Reply via email to