rsmith added a comment.

Should I assume our "misplaced ellipsis" diagnostic requires that we 
disambiguate the ill-formed ellipsis-after-declarator-id as a declaration in 
some cases? If so, do we have tests for that somewhere?



================
Comment at: include/clang/Parse/Parser.h:2138
+  TPResult TryParseDeclarator(bool mayBeAbstract, bool mayHaveIdentifier = 
true,
+                              bool mayHaveTrailingStrayEllipsis = true);
   TPResult
----------------
Given that this flag is enabling parsing of things that are *not* valid 
declarators, I think the default should be the other way around. If some 
calling code believes it's safe to parse a trailing ellipsis as part of a 
declarator, it should be explicitly opting into that.


================
Comment at: lib/Parse/ParseTentative.cpp:944
+        (mayHaveTrailingStrayEllipsis ||
+         !(NextToken().is(tok::r_paren) || NextToken().is(tok::comma))))
       ConsumeToken();
----------------
hubert.reinterpretcast wrote:
> The check for what qualifies as "trailing" is not the strongest, but I find 
> it to be the most straightforward change that should do the job. One 
> alternative is to track whether an ellipsis was consumed within the current 
> loop iteration.
Use `!NextToken().isOneOf(tok::r_paren, tok::comma)` here.


https://reviews.llvm.org/D33339



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

Reply via email to