clang 20.0.0git
Functions
SemaConcept.cpp File Reference
#include "clang/Sema/SemaConcept.h"
#include "TreeTransform.h"
#include "clang/AST/ASTLambda.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/ExprConcepts.h"
#include "clang/Basic/OperatorPrecedence.h"
#include "clang/Sema/EnterExpressionEvaluationContext.h"
#include "clang/Sema/Initialization.h"
#include "clang/Sema/Overload.h"
#include "clang/Sema/ScopeInfo.h"
#include "clang/Sema/Sema.h"
#include "clang/Sema/SemaInternal.h"
#include "clang/Sema/Template.h"
#include "clang/Sema/TemplateDeduction.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/PointerUnion.h"
#include "llvm/ADT/StringExtras.h"
#include <optional>

Go to the source code of this file.

Functions

template<typename ConstraintEvaluator >
static ExprResult calculateConstraintSatisfaction (Sema &S, const Expr *ConstraintExpr, ConstraintSatisfaction &Satisfaction, const ConstraintEvaluator &Evaluator)
 
template<typename ConstraintEvaluator >
static ExprResult calculateConstraintSatisfaction (Sema &S, const Expr *LHS, OverloadedOperatorKind Op, const Expr *RHS, ConstraintSatisfaction &Satisfaction, const ConstraintEvaluator &Evaluator)
 
template<typename ConstraintEvaluator >
static ExprResult calculateConstraintSatisfaction (Sema &S, const CXXFoldExpr *FE, ConstraintSatisfaction &Satisfaction, const ConstraintEvaluator &Evaluator)
 
static bool DiagRecursiveConstraintEval (Sema &S, llvm::FoldingSetNodeID &ID, const NamedDecl *Templ, const Expr *E, const MultiLevelTemplateArgumentList &MLTAL)
 
static ExprResult calculateConstraintSatisfaction (Sema &S, const NamedDecl *Template, SourceLocation TemplateNameLoc, const MultiLevelTemplateArgumentList &MLTAL, const Expr *ConstraintExpr, ConstraintSatisfaction &Satisfaction)
 
static bool CheckConstraintSatisfaction (Sema &S, const NamedDecl *Template, ArrayRef< const Expr * > ConstraintExprs, llvm::SmallVectorImpl< Expr * > &Converted, const MultiLevelTemplateArgumentList &TemplateArgsLists, SourceRange TemplateIDRange, ConstraintSatisfaction &Satisfaction)
 
static unsigned CalculateTemplateDepthForConstraints (Sema &S, const NamedDecl *ND, bool SkipForSpecialization=false)
 
static const ExprSubstituteConstraintExpressionWithoutSatisfaction (Sema &S, const Sema::TemplateCompareNewDeclInfo &DeclInfo, const Expr *ConstrExpr)
 
static void diagnoseUnsatisfiedRequirement (Sema &S, concepts::ExprRequirement *Req, bool First)
 
static void diagnoseUnsatisfiedRequirement (Sema &S, concepts::TypeRequirement *Req, bool First)
 
static void diagnoseWellFormedUnsatisfiedConstraintExpr (Sema &S, Expr *SubstExpr, bool First=true)
 
static void diagnoseUnsatisfiedRequirement (Sema &S, concepts::NestedRequirement *Req, bool First)
 
template<typename SubstitutionDiagnostic >
static void diagnoseUnsatisfiedConstraintExpr (Sema &S, const llvm::PointerUnion< Expr *, SubstitutionDiagnostic * > &Record, bool First=true)
 
static bool substituteParameterMappings (Sema &S, NormalizedConstraint &N, ConceptDecl *Concept, const MultiLevelTemplateArgumentList &MLTAL, const ASTTemplateArgumentListInfo *ArgsAsWritten)
 
static bool substituteParameterMappings (Sema &S, NormalizedConstraint &N, const ConceptSpecializationExpr *CSE)
 

Function Documentation

◆ calculateConstraintSatisfaction() [1/4]

template<typename ConstraintEvaluator >
static ExprResult calculateConstraintSatisfaction ( Sema S,
const CXXFoldExpr FE,
ConstraintSatisfaction Satisfaction,
const ConstraintEvaluator &  Evaluator 
)
static

◆ calculateConstraintSatisfaction() [2/4]

template<typename ConstraintEvaluator >
static ExprResult calculateConstraintSatisfaction ( Sema S,
const Expr ConstraintExpr,
ConstraintSatisfaction Satisfaction,
const ConstraintEvaluator &  Evaluator 
)
static

◆ calculateConstraintSatisfaction() [3/4]

template<typename ConstraintEvaluator >
static ExprResult calculateConstraintSatisfaction ( Sema S,
const Expr LHS,
OverloadedOperatorKind  Op,
const Expr RHS,
ConstraintSatisfaction Satisfaction,
const ConstraintEvaluator &  Evaluator 
)
static

◆ calculateConstraintSatisfaction() [4/4]

static ExprResult calculateConstraintSatisfaction ( Sema S,
const NamedDecl Template,
SourceLocation  TemplateNameLoc,
const MultiLevelTemplateArgumentList MLTAL,
const Expr ConstraintExpr,
ConstraintSatisfaction Satisfaction 
)
static

◆ CalculateTemplateDepthForConstraints()

static unsigned CalculateTemplateDepthForConstraints ( Sema S,
const NamedDecl ND,
bool  SkipForSpecialization = false 
)
static

◆ CheckConstraintSatisfaction()

static bool CheckConstraintSatisfaction ( Sema S,
const NamedDecl Template,
ArrayRef< const Expr * >  ConstraintExprs,
llvm::SmallVectorImpl< Expr * > &  Converted,
const MultiLevelTemplateArgumentList TemplateArgsLists,
SourceRange  TemplateIDRange,
ConstraintSatisfaction Satisfaction 
)
static

◆ diagnoseUnsatisfiedConstraintExpr()

template<typename SubstitutionDiagnostic >
static void diagnoseUnsatisfiedConstraintExpr ( Sema S,
const llvm::PointerUnion< Expr *, SubstitutionDiagnostic * > &  Record,
bool  First = true 
)
static

◆ diagnoseUnsatisfiedRequirement() [1/3]

static void diagnoseUnsatisfiedRequirement ( Sema S,
concepts::ExprRequirement Req,
bool  First 
)
static

◆ diagnoseUnsatisfiedRequirement() [2/3]

static void diagnoseUnsatisfiedRequirement ( Sema S,
concepts::NestedRequirement Req,
bool  First 
)
static

◆ diagnoseUnsatisfiedRequirement() [3/3]

static void diagnoseUnsatisfiedRequirement ( Sema S,
concepts::TypeRequirement Req,
bool  First 
)
static

◆ diagnoseWellFormedUnsatisfiedConstraintExpr()

static void diagnoseWellFormedUnsatisfiedConstraintExpr ( Sema S,
Expr SubstExpr,
bool  First = true 
)
static

◆ DiagRecursiveConstraintEval()

static bool DiagRecursiveConstraintEval ( Sema S,
llvm::FoldingSetNodeID &  ID,
const NamedDecl Templ,
const Expr E,
const MultiLevelTemplateArgumentList MLTAL 
)
static

◆ SubstituteConstraintExpressionWithoutSatisfaction()

static const Expr * SubstituteConstraintExpressionWithoutSatisfaction ( Sema S,
const Sema::TemplateCompareNewDeclInfo DeclInfo,
const Expr ConstrExpr 
)
static

◆ substituteParameterMappings() [1/2]

static bool substituteParameterMappings ( Sema S,
NormalizedConstraint N,
ConceptDecl Concept,
const MultiLevelTemplateArgumentList MLTAL,
const ASTTemplateArgumentListInfo ArgsAsWritten 
)
static

◆ substituteParameterMappings() [2/2]

static bool substituteParameterMappings ( Sema S,
NormalizedConstraint N,
const ConceptSpecializationExpr CSE 
)
static