clang 22.0.0git
SemaConcept.cpp File Reference
#include "clang/Sema/SemaConcept.h"
#include "TreeTransform.h"
#include "clang/AST/ASTConcept.h"
#include "clang/AST/ASTLambda.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/ExprConcepts.h"
#include "clang/AST/RecursiveASTVisitor.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 "llvm/Support/SaveAndRestore.h"

Go to the source code of this file.

Functions

static bool DiagRecursiveConstraintEval (Sema &S, llvm::FoldingSetNodeID &ID, const NamedDecl *Templ, const Expr *E, const MultiLevelTemplateArgumentList *MLTAL=nullptr)
static unsigned CalculateTemplateDepthForConstraints (Sema &S, const NamedDecl *ND, bool SkipForSpecialization=false)
static bool CheckConstraintSatisfaction (Sema &S, const NamedDecl *Template, ArrayRef< AssociatedConstraint > AssociatedConstraints, const MultiLevelTemplateArgumentList &TemplateArgsLists, SourceRange TemplateIDRange, ConstraintSatisfaction &Satisfaction, Expr **ConvertedExpr, const ConceptReference *TopLevelConceptId=nullptr)
static const ExprResult SubstituteConceptsInConstrainExpression (Sema &S, const NamedDecl *D, const ConceptSpecializationExpr *CSE, UnsignedOrNone SubstIndex)
static const ExprSubstituteConstraintExpressionWithoutSatisfaction (Sema &S, const Sema::TemplateCompareNewDeclInfo &DeclInfo, const Expr *ConstrExpr)
static bool CheckFunctionConstraintsWithoutInstantiation (Sema &SemaRef, SourceLocation PointOfInstantiation, FunctionTemplateDecl *Template, ArrayRef< TemplateArgument > TemplateArgs, ConstraintSatisfaction &Satisfaction)
static void diagnoseUnsatisfiedRequirement (Sema &S, concepts::ExprRequirement *Req, bool First)
static void diagnoseUnsatisfiedRequirement (Sema &S, concepts::TypeRequirement *Req, bool First)
static void diagnoseUnsatisfiedConceptIdExpr (Sema &S, const ConceptReference *Concept, SourceLocation Loc, bool First)
static void diagnoseUnsatisfiedConstraintExpr (Sema &S, const UnsatisfiedConstraintRecord &Record, SourceLocation Loc, bool First, concepts::NestedRequirement *Req=nullptr)
static void DiagnoseUnsatisfiedConstraint (Sema &S, ArrayRef< UnsatisfiedConstraintRecord > Records, SourceLocation Loc, bool First=true, concepts::NestedRequirement *Req=nullptr)
static void diagnoseUnsatisfiedRequirement (Sema &S, concepts::NestedRequirement *Req, bool First)
static void diagnoseWellFormedUnsatisfiedConstraintExpr (Sema &S, const Expr *SubstExpr, bool First)

Function Documentation

◆ CalculateTemplateDepthForConstraints()

◆ CheckConstraintSatisfaction()

◆ CheckFunctionConstraintsWithoutInstantiation()

bool CheckFunctionConstraintsWithoutInstantiation ( Sema & SemaRef,
SourceLocation PointOfInstantiation,
FunctionTemplateDecl * Template,
ArrayRef< TemplateArgument > TemplateArgs,
ConstraintSatisfaction & Satisfaction )
static

◆ diagnoseUnsatisfiedConceptIdExpr()

void diagnoseUnsatisfiedConceptIdExpr ( Sema & S,
const ConceptReference * Concept,
SourceLocation Loc,
bool First )
static

◆ DiagnoseUnsatisfiedConstraint()

void DiagnoseUnsatisfiedConstraint ( Sema & S,
ArrayRef< UnsatisfiedConstraintRecord > Records,
SourceLocation Loc,
bool First = true,
concepts::NestedRequirement * Req = nullptr )
static

◆ diagnoseUnsatisfiedConstraintExpr()

◆ diagnoseUnsatisfiedRequirement() [1/3]

◆ diagnoseUnsatisfiedRequirement() [2/3]

◆ diagnoseUnsatisfiedRequirement() [3/3]

◆ diagnoseWellFormedUnsatisfiedConstraintExpr()

◆ DiagRecursiveConstraintEval()

◆ SubstituteConceptsInConstrainExpression()

◆ SubstituteConstraintExpressionWithoutSatisfaction()