[Lldb-commits] [clang] [lldb] [Clang] Initial support for P2841 (Variable template and concept template parameters) (PR #150823)
Corentin Jabot via lldb-commits
lldb-commits at lists.llvm.org
Tue Jul 29 01:44:43 PDT 2025
================
@@ -1162,12 +1179,32 @@ static ExprResult formImmediatelyDeclaredConstraint(
// constraint of T. [...]
CXXScopeSpec SS;
SS.Adopt(NS);
- ExprResult ImmediatelyDeclaredConstraint = S.CheckConceptTemplateId(
- SS, /*TemplateKWLoc=*/SourceLocation(), NameInfo,
- /*FoundDecl=*/FoundDecl ? FoundDecl : NamedConcept, NamedConcept,
- &ConstraintArgs);
- if (ImmediatelyDeclaredConstraint.isInvalid() || !EllipsisLoc.isValid())
- return ImmediatelyDeclaredConstraint;
+ ExprResult ImmediatelyDeclaredConstraint;
+ if (auto *CD = dyn_cast<ConceptDecl>(NamedConcept)) {
+ ImmediatelyDeclaredConstraint = S.CheckConceptTemplateId(
+ SS, /*TemplateKWLoc=*/SourceLocation(), NameInfo,
+ /*FoundDecl=*/FoundDecl ? FoundDecl : NamedConcept, CD,
+ &ConstraintArgs);
+ if (ImmediatelyDeclaredConstraint.isInvalid() || !EllipsisLoc.isValid())
+ return ImmediatelyDeclaredConstraint;
+ }
+ // We have a template template parameter
+ else {
+ auto *CDT = dyn_cast<TemplateTemplateParmDecl>(NamedConcept);
+ ImmediatelyDeclaredConstraint = S.CheckVarOrConceptTemplateTemplateId(
+ SS, NameInfo, CDT, SourceLocation(), &ConstraintArgs);
+ if (ImmediatelyDeclaredConstraint.isInvalid())
+ return ImmediatelyDeclaredConstraint;
+ UnresolvedSet<1> R;
+ R.addDecl(CDT);
+ ImmediatelyDeclaredConstraint = UnresolvedLookupExpr::Create(
+ S.getASTContext(), nullptr, SS.getWithLocInContext(S.getASTContext()),
+ SourceLocation(), NameInfo, false, &ConstraintArgs, R.begin(), R.end(),
+ /*KnownDependent=*/false,
+ /*KnownInstantiationDependent=*/false);
----------------
cor3ntin wrote:
I added that in CheckVarOrConceptTemplateTemplateId (and moved the creation of the UnresolvedLookupExpr there)
https://github.com/llvm/llvm-project/pull/150823
More information about the lldb-commits
mailing list