From 8cbad8daece2f8e58fe323f64fe7caeae326e51b Mon Sep 17 00:00:00 2001 From: Younan Zhang Date: Mon, 9 Jun 2025 13:11:26 +0800 Subject: [PATCH] Fix the access checking after normalization --- clang/lib/Sema/SemaConcept.cpp | 4 ++++ clang/lib/Sema/SemaTemplate.cpp | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/clang/lib/Sema/SemaConcept.cpp b/clang/lib/Sema/SemaConcept.cpp index 1218720708fc6..87323b0f6e1a7 100644 --- a/clang/lib/Sema/SemaConcept.cpp +++ b/clang/lib/Sema/SemaConcept.cpp @@ -563,6 +563,10 @@ static bool calculateConstraintSatisfaction( ConstraintSatisfaction &Satisfaction, UnsignedOrNone PackSubstitutionIndex) { + Sema::ContextRAII CurContext( + S, Constraint.getConceptId()->getNamedConcept()->getDeclContext(), + /*NewThisContext=*/false); + llvm::SmallVector SubstitutedOuterMost; std::optional SubstitutedArgs = SubstitutionInTemplateArguments(S, Constraint, Template, MLTAL, diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index fd32d34cb8cce..1ad5b7652c621 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -4756,9 +4756,6 @@ ExprResult Sema::CheckConceptTemplateId( EnterExpressionEvaluationContext EECtx{ *this, ExpressionEvaluationContext::Unevaluated, CSD}; - ContextRAII CurContext(*this, CSD->getDeclContext(), - /*NewThisContext=*/false); - Error = CheckConstraintSatisfaction( NamedConcept, AssociatedConstraint(NamedConcept->getConstraintExpr()), MLTAL,