aaron.ballman added inline comments.

================
Comment at: clang/lib/Parse/ParseTentative.cpp:773
+  while (Tok.isOneOf(tok::l_square, tok::kw___attribute, tok::kw___declspec,
+                     tok::kw_alignas)) {
+    if (Tok.is(tok::l_square)) {
----------------
rsmith wrote:
> aaron.ballman wrote:
> > Do we need to also skip other keyword attributes as well as `alignas`? For 
> > instance, `tok::kw__Noreturn` or `tok::kw__Alignas`
> `_Alignas` and `_Noreturn` are their own kinds of //decl-specifier//s, not 
> attributes. In particular, they're not syntactically valid in any of the 
> places that call this (after a `*` or a tag keyword). It looks like we're 
> missing support for them, but we should recognize them in 
> `isCXXDeclarationSpecifier`, not here -- but I think that's unrelated to this 
> patch.
Okay, that's a good point. Thanks!


================
Comment at: clang/lib/Parse/ParseTentative.cpp:789
+      ConsumeParen();
+      if (!SkipUntil(tok::r_paren))
+        return false;
----------------
rsmith wrote:
> aaron.ballman wrote:
> > If we're skipping `__attribute__(())`, this looks to miss the second 
> > closing right paren. Also, this logic won't work if we need to skip 
> > `_Noreturn`, which has no parens.
> > 
> > This branch is missing test coverage.
> Because `SkipUntil` handles nested parens, this does the right thing for 
> `__attribute__((...))`. Agreed on test coverage :)
I'll update the docs for `SkipUntil()`, because they don't suggest that this 
magic takes place. :-)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D74643



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

Reply via email to