clang
19.0.0git
|
#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/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/SemaDiagnostic.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.
Typedefs | |
using | NormalForm = llvm::SmallVector< llvm::SmallVector< AtomicConstraint *, 2 >, 4 > |
Functions | |
template<typename AtomicEvaluator > | |
static ExprResult | calculateConstraintSatisfaction (Sema &S, const Expr *ConstraintExpr, ConstraintSatisfaction &Satisfaction, AtomicEvaluator &&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 Expr * | SubstituteConstraintExpressionWithoutSatisfaction (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 Expr *E, 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) |
static NormalForm | makeCNF (const NormalizedConstraint &Normalized) |
static NormalForm | makeDNF (const NormalizedConstraint &Normalized) |
template<typename AtomicSubsumptionEvaluator > | |
static bool | subsumes (const NormalForm &PDNF, const NormalForm &QCNF, AtomicSubsumptionEvaluator E) |
template<typename AtomicSubsumptionEvaluator > | |
static bool | subsumes (Sema &S, NamedDecl *DP, ArrayRef< const Expr * > P, NamedDecl *DQ, ArrayRef< const Expr * > Q, bool &Subsumes, AtomicSubsumptionEvaluator E) |
using NormalForm = llvm::SmallVector<llvm::SmallVector<AtomicConstraint *, 2>, 4> |
Definition at line 1397 of file SemaConcept.cpp.
|
static |
Definition at line 182 of file SemaConcept.cpp.
Referenced by clang::Sema::CheckConstraintSatisfaction().
|
static |
Definition at line 335 of file SemaConcept.cpp.
|
static |
Definition at line 748 of file SemaConcept.cpp.
Referenced by clang::Sema::FriendConstraintsDependOnEnclosingTemplate(), and clang::Sema::IsAtLeastAsConstrained().
|
static |
Definition at line 427 of file SemaConcept.cpp.
Referenced by clang::Sema::CheckConstraintSatisfaction(), clang::Sema::CheckFunctionConstraints(), clang::Sema::CheckInstantiatedFunctionTemplateConstraints(), and clang::Sema::EnsureTemplateArgumentListConstraints().
|
static |
Definition at line 1180 of file SemaConcept.cpp.
Referenced by clang::Sema::DiagnoseUnsatisfiedConstraint().
|
static |
Definition at line 960 of file SemaConcept.cpp.
|
static |
Definition at line 1055 of file SemaConcept.cpp.
|
static |
Definition at line 1025 of file SemaConcept.cpp.
|
static |
Definition at line 1070 of file SemaConcept.cpp.
|
static |
Definition at line 312 of file SemaConcept.cpp.
|
static |
Definition at line 1400 of file SemaConcept.cpp.
References clang::NormalizedConstraint::CCK_Conjunction, clang::NormalizedConstraint::getAtomicConstraint(), clang::NormalizedConstraint::getCompoundKind(), clang::NormalizedConstraint::getLHS(), clang::NormalizedConstraint::getRHS(), and clang::NormalizedConstraint::isAtomic().
|
static |
Definition at line 1429 of file SemaConcept.cpp.
References clang::NormalizedConstraint::CCK_Disjunction, clang::NormalizedConstraint::getAtomicConstraint(), clang::NormalizedConstraint::getCompoundKind(), clang::NormalizedConstraint::getLHS(), clang::NormalizedConstraint::getRHS(), and clang::NormalizedConstraint::isAtomic().
|
static |
Definition at line 787 of file SemaConcept.cpp.
Referenced by clang::Sema::AreConstraintExpressionsEqual().
|
static |
Definition at line 1242 of file SemaConcept.cpp.
|
static |
Definition at line 1306 of file SemaConcept.cpp.
|
static |
Definition at line 1460 of file SemaConcept.cpp.
Referenced by clang::Sema::IsAtLeastAsConstrained().