[clang] [Clang][WIP] Normalize constraints before checking for satisfaction (PR #141776)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Jun 1 04:33:45 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions cpp,h -- clang/include/clang/AST/ASTConcept.h clang/include/clang/AST/TemplateBase.h clang/include/clang/Sema/Sema.h clang/include/clang/Sema/SemaConcept.h clang/include/clang/Sema/Template.h clang/lib/AST/ASTConcept.cpp clang/lib/AST/ASTContext.cpp clang/lib/Sema/SemaConcept.cpp clang/lib/Sema/SemaDeclCXX.cpp clang/lib/Sema/SemaExprCXX.cpp clang/lib/Sema/SemaTemplate.cpp clang/lib/Sema/SemaTemplateDeduction.cpp clang/lib/Sema/SemaTemplateInstantiate.cpp clang/lib/Sema/SemaTemplateVariadic.cpp clang/lib/Sema/TreeTransform.h clang/lib/Serialization/ASTWriterStmt.cpp clang/test/CXX/drs/cwg25xx.cpp clang/test/CXX/expr/expr.prim/expr.prim.id/p3.cpp clang/test/CXX/expr/expr.prim/expr.prim.req/compound-requirement.cpp clang/test/CXX/temp/temp.constr/temp.constr.atomic/constrant-satisfaction-conversions.cpp clang/test/CXX/temp/temp.constr/temp.constr.normal/p1.cpp clang/test/SemaCXX/cxx23-assume.cpp clang/test/SemaCXX/cxx2c-fold-exprs.cpp clang/test/SemaCXX/invalid-requirement-requires-expr.cpp clang/test/SemaCXX/overload-resolution-deferred-templates.cpp clang/test/SemaTemplate/concepts-recovery-expr.cpp clang/test/SemaTemplate/concepts.cpp clang/test/SemaTemplate/instantiate-abbreviated-template.cpp clang/test/SemaTemplate/instantiate-expanded-type-constraint.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/clang/lib/Sema/SemaConcept.cpp b/clang/lib/Sema/SemaConcept.cpp
index 279d999a5..2de0eceff 100644
--- a/clang/lib/Sema/SemaConcept.cpp
+++ b/clang/lib/Sema/SemaConcept.cpp
@@ -534,12 +534,12 @@ static bool calculateConstraintSatisfaction(
if (!NumExpansions)
return false;
- if(*NumExpansions == 0) {
+ if (*NumExpansions == 0) {
Satisfaction.IsSatisfied = Conjunction;
return true;
}
- //bool HasAnyFailed = false;
+ // bool HasAnyFailed = false;
for (unsigned I = 0; I < *NumExpansions; I++) {
Sema::ArgPackSubstIndexRAII SubstIndex(S, I);
Satisfaction.IsSatisfied = false;
@@ -550,7 +550,8 @@ static bool calculateConstraintSatisfaction(
if (!Success)
return false;
if (!Conjunction && Satisfaction.IsSatisfied) {
- Satisfaction.Details.erase(Satisfaction.Details.begin() + EffectiveDetailEndIndex,
+ Satisfaction.Details.erase(Satisfaction.Details.begin() +
+ EffectiveDetailEndIndex,
Satisfaction.Details.end());
break;
}
@@ -655,10 +656,11 @@ static bool calculateConstraintSatisfaction(
Satisfaction.IsSatisfied = false;
Ok = calculateConstraintSatisfaction(S, Constraint.getRHS(), Template,
- TemplateNameLoc, MLTAL, Satisfaction,
- PackSubstitutionIndex);
- if(Ok && Satisfaction.IsSatisfied && !Satisfaction.ContainsErrors)
- Satisfaction.Details.erase(Satisfaction.Details.begin() + EffectiveDetailEndIndex,
+ TemplateNameLoc, MLTAL, Satisfaction,
+ PackSubstitutionIndex);
+ if (Ok && Satisfaction.IsSatisfied && !Satisfaction.ContainsErrors)
+ Satisfaction.Details.erase(Satisfaction.Details.begin() +
+ EffectiveDetailEndIndex,
Satisfaction.Details.end());
return Ok;
}
@@ -1314,9 +1316,10 @@ static void diagnoseUnsatisfiedRequirement(Sema &S,
concepts::NestedRequirement *Req,
bool First) {
DiagnoseUnsatisfiedConstraint(S, Req->getConstraintSatisfaction().records(),
- Req->hasInvalidConstraint() ? SourceLocation() :
- Req->getConstraintExpr()->getExprLoc(), First,
- Req);
+ Req->hasInvalidConstraint()
+ ? SourceLocation()
+ : Req->getConstraintExpr()->getExprLoc(),
+ First, Req);
}
static void diagnoseWellFormedUnsatisfiedConstraintExpr(Sema &S,
``````````
</details>
https://github.com/llvm/llvm-project/pull/141776
More information about the cfe-commits
mailing list