clang 20.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/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.
|
static |
Definition at line 252 of file SemaConcept.cpp.
References clang::ASTContext::BoolTy, clang::Sema::BuildEmptyCXXFoldExpr(), calculateConstraintSatisfaction(), clang::Sema::Context, clang::BinaryOperator::Create(), clang::ConstraintSatisfaction::Details, clang::ExprError(), clang::ActionResult< PtrTy, Compress >::get(), clang::CXXFoldExpr::getBeginLoc(), clang::CXXFoldExpr::getInit(), clang::CXXFoldExpr::getOperator(), clang::CXXFoldExpr::getPattern(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::CXXFoldExpr::isLeftFold(), clang::CXXFoldExpr::isRightFold(), clang::ConstraintSatisfaction::IsSatisfied, clang::ActionResult< PtrTy, Compress >::isUnset(), clang::OK_Ordinary, and clang::VK_PRValue.
|
static |
Definition at line 324 of file SemaConcept.cpp.
References clang::C, calculateConstraintSatisfaction(), clang::Sema::ConstantEvaluated, clang::ConstraintSatisfaction::ContainsErrors, clang::Expr::containsErrors(), clang::Sema::Context, clang::CPlusPlus26, clang::ConstraintSatisfaction::Details, clang::Expr::EvalStatus::Diag, clang::SemaBase::Diag(), clang::PartialDiagnostic::EmitToString(), clang::Expr::EvaluateAsConstantExpr(), clang::ExprEmpty(), clang::ExprError(), clang::ActionResult< PtrTy, Compress >::get(), clang::Stmt::getBeginLoc(), clang::Sema::getDiagnostics(), clang::APValue::getInt(), clang::Sema::getLangOpts(), clang::Stmt::getSourceRange(), clang::Expr::IgnoreParenImpCasts(), clang::APValue::isInt(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::ConstraintSatisfaction::IsSatisfied, clang::ActionResult< PtrTy, Compress >::isUsable(), memcpy(), clang::SemaBase::PDiag(), and clang::Expr::EvalResult::Val.
Referenced by calculateConstraintSatisfaction(), clang::Sema::CheckConstraintSatisfaction(), and CheckConstraintSatisfaction().
|
static |
Definition at line 187 of file SemaConcept.cpp.
References clang::ASTContext::BoolTy, calculateConstraintSatisfaction(), clang::Sema::Context, clang::BinaryOperator::Create(), clang::ConstraintSatisfaction::Details, clang::ExprEmpty(), clang::ExprError(), clang::ActionResult< PtrTy, Compress >::get(), clang::Stmt::getBeginLoc(), clang::BinaryOperator::getOverloadedOpcode(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::ConstraintSatisfaction::IsSatisfied, clang::ActionResult< PtrTy, Compress >::isUsable(), clang::OK_Ordinary, and clang::VK_PRValue.
|
static |
Definition at line 432 of file SemaConcept.cpp.
References calculateConstraintSatisfaction(), clang::Sema::CheckConstraintExpression(), clang::Sema::CheckParameterPacksForExpansion(), clang::Sema::collectUnexpandedParameterPacks(), clang::ConstraintSatisfaction::ContainsErrors, clang::Sema::Context, clang::ImplicitCastExpr::Create(), clang::ConstraintSatisfaction::Details, clang::SemaBase::Diag(), DiagRecursiveConstraintEval(), clang::ExprEmpty(), clang::ExprError(), clang::ActionResult< PtrTy, Compress >::get(), clang::AtomicExpr::getBeginLoc(), clang::Sema::getDiagnostics(), clang::CXXFoldExpr::getEllipsisLoc(), clang::Sema::getLangOpts(), clang::CXXFoldExpr::getNumExpansions(), clang::CXXFoldExpr::getPattern(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::Sema::SFINAETrap::hasErrorOccurred(), ID, clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::Sema::InstantiatingTemplate::isInvalid(), clang::Expr::isPRValue(), clang::ConstraintSatisfaction::IsSatisfied, memcpy(), clang::Sema::ReuseLambdaContextDecl, clang::Sema::SubstConstraintExpr(), clang::sema::TemplateDeductionInfo::takeSFINAEDiagnostic(), and clang::VK_PRValue.
|
static |
Definition at line 912 of file SemaConcept.cpp.
References clang::Decl::getLexicalDeclContext(), clang::MultiLevelTemplateArgumentList::getNumLevels(), and clang::Sema::getTemplateInstantiationArgs().
Referenced by clang::Sema::FriendConstraintsDependOnEnclosingTemplate(), and clang::Sema::IsAtLeastAsConstrained().
|
static |
Definition at line 568 of file SemaConcept.cpp.
References calculateConstraintSatisfaction(), clang::ActionResult< PtrTy, Compress >::get(), clang::SourceRange::getBegin(), clang::MultiLevelTemplateArgumentList::getNumSubstitutedLevels(), clang::MultiLevelTemplateArgumentList::getOutermost(), clang::MultiLevelTemplateArgumentList::isAnyArgInstantiationDependent(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::Sema::InstantiatingTemplate::isInvalid(), and clang::ConstraintSatisfaction::IsSatisfied.
|
static |
Definition at line 1378 of file SemaConcept.cpp.
References Diag(), clang::SemaBase::Diag(), diagnoseWellFormedUnsatisfiedConstraintExpr(), and clang::First.
Referenced by clang::Sema::DiagnoseUnsatisfiedConstraint().
|
static |
Definition at line 1157 of file SemaConcept.cpp.
References clang::Sema::Context, clang::SemaBase::Diag(), clang::Sema::DiagnoseUnsatisfiedConstraint(), clang::First, clang::ConceptSpecializationExpr::getBeginLoc(), clang::Stmt::getBeginLoc(), clang::concepts::ExprRequirement::getExpr(), clang::concepts::ExprRequirement::getExprSubstitutionDiagnostic(), clang::ConceptSpecializationExpr::getNamedConcept(), clang::concepts::ExprRequirement::getNoexceptLoc(), clang::ASTContext::getReferenceQualifiedType(), clang::concepts::ExprRequirement::getReturnTypeRequirement(), clang::concepts::ExprRequirement::getReturnTypeRequirementSubstitutedConstraintExpr(), clang::ConceptSpecializationExpr::getSatisfaction(), clang::concepts::ExprRequirement::getSatisfactionStatus(), clang::concepts::ExprRequirement::ReturnTypeRequirement::getSubstitutionDiagnostic(), clang::ConceptSpecializationExpr::getTemplateArgsAsWritten(), int, clang::concepts::Requirement::isSatisfied(), clang::ASTTemplateArgumentListInfo::NumTemplateArgs, clang::concepts::ExprRequirement::SS_ConstraintsNotSatisfied, clang::concepts::ExprRequirement::SS_Dependent, clang::concepts::ExprRequirement::SS_ExprSubstitutionFailure, clang::concepts::ExprRequirement::SS_NoexceptNotMet, clang::concepts::ExprRequirement::SS_Satisfied, and clang::concepts::ExprRequirement::SS_TypeRequirementSubstitutionFailure.
Referenced by diagnoseWellFormedUnsatisfiedConstraintExpr().
|
static |
|
static |
Definition at line 1222 of file SemaConcept.cpp.
References clang::SemaBase::Diag(), clang::First, clang::concepts::TypeRequirement::getSatisfactionStatus(), clang::concepts::TypeRequirement::getSubstitutionDiagnostic(), int, clang::concepts::Requirement::isSatisfied(), clang::concepts::TypeRequirement::SS_Dependent, and clang::concepts::TypeRequirement::SS_SubstitutionFailure.
|
static |
Definition at line 1268 of file SemaConcept.cpp.
References clang::Sema::Context, clang::Expr::EvalStatus::Diag, clang::SemaBase::Diag(), clang::Sema::DiagnoseUnsatisfiedConstraint(), diagnoseUnsatisfiedRequirement(), diagnoseWellFormedUnsatisfiedConstraintExpr(), E, clang::First, clang::SourceRange::getBegin(), clang::Stmt::getBeginLoc(), clang::APValue::getInt(), clang::BinaryOperator::getOpcodeStr(), clang::Stmt::getSourceRange(), clang::Expr::IgnoreParenImpCasts(), int, clang::Expr::SE_NoSideEffects, clang::T, toString(), and clang::Expr::EvalResult::Val.
Referenced by diagnoseUnsatisfiedConstraintExpr(), diagnoseUnsatisfiedRequirement(), and diagnoseWellFormedUnsatisfiedConstraintExpr().
|
static |
Definition at line 409 of file SemaConcept.cpp.
References clang::Sema::Context, clang::SemaBase::Diag(), E, clang::Expr::getExprLoc(), clang::Stmt::getSourceRange(), clang::Stmt::Profile(), clang::Sema::SatisfactionStackContains(), and clang::TemplateArg.
Referenced by calculateConstraintSatisfaction().
|
static |
Definition at line 951 of file SemaConcept.cpp.
References clang::ActionResult< PtrTy, Compress >::get(), clang::Decl::getAsFunction(), clang::Sema::TemplateCompareNewDeclInfo::getDecl(), clang::Sema::TemplateCompareNewDeclInfo::getDeclContext(), clang::Decl::getFriendObjectKind(), clang::Sema::TemplateCompareNewDeclInfo::getLexicalDeclContext(), clang::Sema::TemplateCompareNewDeclInfo::getLocation(), clang::MultiLevelTemplateArgumentList::getNumSubstitutedLevels(), clang::Sema::getTemplateInstantiationArgs(), clang::Sema::SFINAETrap::hasErrorOccurred(), clang::Decl::isFunctionOrFunctionTemplate(), clang::Sema::InstantiatingTemplate::isInvalid(), clang::ActionResult< PtrTy, Compress >::isUsable(), clang::FunctionDecl::parameters(), and clang::Sema::SubstConstraintExprWithoutSatisfaction().
Referenced by clang::Sema::AreConstraintExpressionsEqual().
|
static |
Definition at line 1445 of file SemaConcept.cpp.
References clang::TemplateArgumentListInfo::arguments(), clang::ASTTemplateArgumentListInfo::arguments(), clang::Atomic, clang::TemplateParameterList::begin(), clang::C, clang::FoldExpandedConstraint::Constraint, clang::Sema::Context, clang::NormalizedConstraint::getAtomicConstraint(), clang::NormalizedConstraint::getFoldExpandedConstraint(), clang::Sema::getIdentityTemplateArgumentLoc(), clang::ASTTemplateArgumentListInfo::getLAngleLoc(), clang::NormalizedConstraint::getLHS(), clang::ASTTemplateArgumentListInfo::getRAngleLoc(), clang::NormalizedConstraint::getRHS(), clang::NormalizedConstraint::isCompound(), clang::NormalizedConstraint::isFoldExpanded(), clang::Sema::MarkUsedTemplateParameters(), clang::ASTTemplateArgumentListInfo::NumTemplateArgs, clang::TemplateParameterList::size(), clang::TemplateArgumentListInfo::size(), substituteParameterMappings(), and clang::Sema::SubstTemplateArguments().
Referenced by substituteParameterMappings().
|
static |
Definition at line 1518 of file SemaConcept.cpp.
References clang::Decl::getLexicalDeclContext(), clang::ConceptSpecializationExpr::getNamedConcept(), clang::ConceptSpecializationExpr::getTemplateArgsAsWritten(), clang::ConceptSpecializationExpr::getTemplateArguments(), clang::Sema::getTemplateInstantiationArgs(), and substituteParameterMappings().