================ @@ -738,16 +738,47 @@ Parser::DeclGroupPtrTy Parser::ParseUsingDeclaration( return nullptr; } - if (!Tok.is(tok::identifier)) { + Decl *UED = nullptr; + + if (Tok.is(tok::identifier)) { ---------------- Endilll wrote:
1) You're correct that `ParseOptionalCXXScopeSpecifier` is going to provide us a `TemplateIdAnnotation` every time there is an identifier followed by a "less than" sign. 2) On top of what I do here, `ParseBaseTypeSpecifier` handles `computed-type-specifier` (which is `decltype` and pack indexing) and dependent types. If you take a look at which tokens that function expects, they are `tok::kw_decltype`, `tok::annot_decltype`, `tok::annot_pack_indexing_type`, `tok::annot_template_id`, and `tok::identifier`. If we remove tokens that are coming from `computed-type-specifier`, we'll be left with just `tok::annot_template_id` and `tok::identifier`, which are exactly the tokens I expect. > Line 723, ParseOptionalCXXScopeSpecifier, there are options to make it a type > only context for error recovery 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. 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