================
@@ -738,16 +738,47 @@ Parser::DeclGroupPtrTy Parser::ParseUsingDeclaration(
       return nullptr;
     }
 
-    if (!Tok.is(tok::identifier)) {
+    Decl *UED = nullptr;
+
+    if (Tok.is(tok::identifier)) {
----------------
cor3ntin wrote:

After more tests, I realize that the handling of `less` in 
`ParseBaseTypeSpecifier` is for error recovery, and we might want to do the 
same thing.
https://godbolt.org/z/9d3Pvxjxe

I agree that we should not factorize out decltype/pack indexing, but everything 
else is hopefully exactly the
same.

> I'd be wary to mark this as a type-only context, unless the Standard says so. 
> I believe it doesn't for using enum, but does for base specifier, because the 
> latter uses class-or-decltype grammar.

Sorry, I was not clear. We always expect a type here in the grammar (ie, `using 
enum expr` is never valid), and setting `IsTypename` only improves error 
recovery (a bit).

(type-only context in the specification refers specifically to places where 
`typename` can be ellided, and typename is never valid here)

https://github.com/llvm/llvm-project/pull/95399
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to