[PATCH] D114439: [Annotation] Allow parameter pack expansions in annotate attribute

Erich Keane via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Dec 1 08:50:33 PST 2021

erichkeane added a comment.

Aaron is way more familiar with this code than I am, but I've got some suggestions for more tests in the parsing, we need to make sure that we handle pack expansion completely here.

Comment at: clang/lib/Parse/ParseDecl.cpp:447
+          }
+          ArgExpr = Actions.ActOnPackExpansion(ArgExpr.get(), ConsumeToken());
+        }
Do you have a test for something that isn't a pack followed by an ellipsis?  What is the behavior there?   I'm also concerned that there doesn't seem to be anything here that handles complex-pack expansions (like folds), can you test that as well?

Also, why is this 'if' not up on line 429 (that is, outside of this 'else'?).  I believe ParseAssignmentExpression is going to muck-up the tokens, so I'm not particularly sure what is going to happen here?

Comment at: clang/test/Parser/cxx0x-attributes.cpp:261
-template<typename...Ts> void variadic() {
+template <int... Is> void variadic() {
   void bar [[noreturn...]] (); // expected-error {{attribute 'noreturn' cannot be used as an attribute pack}}
What is the point of this change?

  rG LLVM Github Monorepo



More information about the cfe-commits mailing list