clang: lib/Sema/SemaTypeTraits.cpp File Reference (original) (raw)
Go to the source code of this file.
| Typedefs | |
|---|---|
| using | ExtractedTypeTraitInfo |
| Enumerations | |
|---|---|
| enum class | TypeTraitReturnType { Bool, SizeT } |
◆ ExtractedTypeTraitInfo
Initial value:
std::optional<std::pair<TypeTrait, llvm::SmallVector<QualType, 1>>>
Definition at line 1947 of file SemaTypeTraits.cpp.
◆ TypeTraitReturnType
| enum class TypeTraitReturnType | strong |
|---|
◆ CheckConvertibilityForTypeTraits()
Definition at line 1129 of file SemaTypeTraits.cpp.
References clang::InitializationKind::CreateCopy(), clang::ExprError(), clang::TypeLoc::getBeginLoc(), clang::QualType::getNonLValueExprType(), clang::TypeSourceInfo::getType(), clang::TypeSourceInfo::getTypeLoc(), clang::Expr::getValueKindForType(), clang::Sema::SFINAETrap::hasErrorOccurred(), clang::Init, clang::InitializedEntity::InitializeTemporary(), clang::Type::isArrayType(), clang::Type::isFunctionType(), clang::Type::isObjectType(), clang::Self, clang::Sema::Unevaluated, and clang::Unevaluated.
Referenced by EvaluateBinaryTypeTrait(), and EvaluateBooleanTypeTrait().
◆ CheckUnaryTypeTraitTypeCompleteness()
◆ DiagnoseAtomicInCXXTypeTrait()
◆ DiagnoseIsEmptyReason() [1/2]
◆ DiagnoseIsEmptyReason() [2/2]
◆ DiagnoseIsFinalReason() [1/2]
◆ DiagnoseIsFinalReason() [2/2]
◆ DiagnoseNonAbstractReason() [1/2]
◆ DiagnoseNonAbstractReason() [2/2]
◆ DiagnoseNonAggregateReason() [1/2]
Definition at line 2532 of file SemaTypeTraits.cpp.
References clang::AS_private, clang::AS_protected, clang::CXXRecordDecl::bases(), clang::CXXRecordDecl::ctors(), clang::DeclContext::decls(), clang::SemaBase::Diag(), clang::RecordDecl::fields(), clang::Decl::getLocation(), clang::TagDecl::getSourceRange(), clang::CXXRecordDecl::isPolymorphic(), and clang::CXXRecordDecl::methods().
Referenced by DiagnoseNonAggregateReason(), and clang::Sema::DiagnoseTypeTraitDetails().
◆ DiagnoseNonAggregateReason() [2/2]
◆ DiagnoseNonAssignableReason()
Definition at line 2248 of file SemaTypeTraits.cpp.
References clang::Sema::BuildBinOp(), clang::Sema::Context, clang::SemaBase::Diag(), clang::Decl::getLocation(), clang::ASTContext::getRValueReferenceType(), clang::ASTContext::getTranslationUnitDecl(), clang::Expr::getValueKindForType(), clang::Decl::isInvalidDecl(), clang::T, clang::Sema::Unevaluated, and clang::Unevaluated.
Referenced by clang::Sema::DiagnoseTypeTraitDetails().
◆ DiagnoseNonConstructibleReason()
Definition at line 2175 of file SemaTypeTraits.cpp.
References clang::Sema::Context, clang::InitializationKind::CreateDirect(), clang::SemaBase::Diag(), clang::Decl::getLocation(), clang::QualType::getNonLValueExprType(), clang::ASTContext::getRValueReferenceType(), clang::ASTContext::getTranslationUnitDecl(), clang::Expr::getValueKindForType(), clang::CXXRecordDecl::hasDefinition(), clang::Init, clang::InitializedEntity::InitializeTemporary(), clang::Type::isFunctionType(), clang::Decl::isInvalidDecl(), clang::Type::isObjectType(), clang::T, clang::Sema::Unevaluated, and clang::Unevaluated.
Referenced by clang::Sema::DiagnoseTypeTraitDetails().
◆ DiagnoseNonDefaultMovable()
Definition at line 2015 of file SemaTypeTraits.cpp.
References clang::CopyAssignment, clang::CopyConstructor, clang::SemaBase::Diag(), clang::CXXRecordDecl::getDestructor(), clang::Decl::getSourceRange(), clang::CXXRecordDecl::hasSimpleCopyAssignment(), clang::CXXRecordDecl::hasSimpleCopyConstructor(), clang::CXXRecordDecl::hasSimpleMoveAssignment(), clang::CXXRecordDecl::hasSimpleMoveConstructor(), clang::CXXRecordDecl::hasUserDeclaredCopyAssignment(), clang::CXXRecordDecl::hasUserDeclaredCopyConstructor(), clang::CXXRecordDecl::hasUserDeclaredMoveAssignment(), clang::CXXRecordDecl::hasUserDeclaredMoveConstructor(), clang::TagDecl::isUnion(), LookupSpecialMemberFromXValue(), clang::MoveAssignment, and clang::MoveConstructor.
Referenced by DiagnoseNonTriviallyRelocatableReason().
◆ DiagnoseNonStandardLayoutReason() [1/2]
Definition at line 2406 of file SemaTypeTraits.cpp.
References clang::AS_none, clang::CXXRecordDecl::bases(), clang::SemaBase::Diag(), clang::RecordDecl::fields(), clang::CXXRecordDecl::forallBases(), clang::Decl::getAccess(), clang::Decl::getLocation(), clang::TagDecl::getSourceRange(), clang::CXXRecordDecl::hasDirectFields(), hasMultipleDataBaseClassesWithFields(), clang::CXXRecordDecl::isPolymorphic(), and clang::CXXRecordDecl::methods().
Referenced by DiagnoseNonStandardLayoutReason(), and clang::Sema::DiagnoseTypeTraitDetails().
◆ DiagnoseNonStandardLayoutReason() [2/2]
◆ DiagnoseNonTriviallyCopyableReason() [1/2]
Definition at line 2118 of file SemaTypeTraits.cpp.
References clang::Sema::DefaultedFunctionKind::asSpecialMember(), clang::CXXRecordDecl::bases(), clang::CopyAssignment, clang::CopyConstructor, clang::SemaBase::Diag(), clang::RecordDecl::fields(), clang::Decl::getASTContext(), clang::Sema::getDefaultedFunctionKind(), clang::CXXRecordDecl::getDestructor(), clang::FunctionDecl::getSourceRange(), clang::CXXRecordDecl::hasDeletedDestructor(), clang::FunctionDecl::isTrivial(), clang::CXXRecordDecl::methods(), clang::MoveAssignment, and clang::MoveConstructor.
Referenced by DiagnoseNonTriviallyCopyableReason(), and clang::Sema::DiagnoseTypeTraitDetails().
◆ DiagnoseNonTriviallyCopyableReason() [2/2]
◆ DiagnoseNonTriviallyRelocatableReason() [1/2]
◆ DiagnoseNonTriviallyRelocatableReason() [2/2]
◆ DiagnoseVLAInCXXTypeTrait()
◆ EvaluateArrayTypeTrait()
◆ EvaluateBinaryTypeTrait()
Definition at line 1561 of file SemaTypeTraits.cpp.
References clang::cast(), CheckConvertibilityForTypeTraits(), clang::CT_Cannot, DiagnoseVLAInCXXTypeTrait(), clang::Type::getAsCanonical(), clang::TypeLoc::getBeginLoc(), clang::QualType::getNonReferenceType(), clang::TypeSourceInfo::getType(), clang::TypeSourceInfo::getTypeLoc(), clang::Expr::getValueKindForType(), clang::Sema::SFINAETrap::hasErrorOccurred(), clang::QualType::hasNonTrivialObjCLifetime(), clang::isa(), clang::Type::isDependentType(), clang::Type::isIncompleteArrayType(), clang::Type::isLValueReferenceType(), clang::Type::isRValueReferenceType(), clang::Type::isStructureOrClassType(), clang::Type::isVoidType(), clang::Self, clang::Success, clang::Sema::Unevaluated, clang::Unevaluated, clang::VK_LValue, clang::VK_PRValue, and clang::VK_XValue.
Referenced by EvaluateBooleanTypeTrait().
◆ EvaluateBooleanTypeTrait()
Definition at line 1226 of file SemaTypeTraits.cpp.
References clang::BTT_Last, clang::Sema::canThrow(), CheckConvertibilityForTypeTraits(), clang::Sema::Context, clang::InitializationKind::CreateCopy(), clang::InitializationKind::CreateDirect(), clang::ASTContext::CreateTypeSourceInfo(), clang::CT_Cannot, EvaluateBinaryTypeTrait(), EvaluateUnaryTypeTrait(), clang::QualType::getNonLValueExprType(), clang::ASTContext::getPointerType(), clang::ASTContext::getRValueReferenceType(), clang::ASTContext::getTranslationUnitDecl(), clang::Expr::getValueKindForType(), clang::Sema::SFINAETrap::hasErrorOccurred(), clang::Init, clang::InitializedEntity::InitializeTemporary(), clang::CXXRecordDecl::isAbstract(), clang::Type::isFunctionType(), clang::Type::isIncompleteArrayType(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::Type::isObjectType(), clang::Type::isVoidType(), clang::Sema::RequireCompleteType(), clang::T, clang::Sema::Unevaluated, clang::Unevaluated, and clang::UTT_Last.
Referenced by clang::Sema::BuildTypeTrait().
◆ EvaluateExpressionTrait()
◆ EvaluateSizeTTypeTrait()
◆ EvaluateUnaryTypeTrait()
Definition at line 620 of file SemaTypeTraits.cpp.
References clang::AS_public, clang::C, clang::RecordDecl::canPassInRegisters(), clang::cast(), clang::Constructor, clang::CXXRecordDecl::ctors(), clang::CXXRecordDecl::defaultedCopyConstructorIsDeleted(), clang::CXXRecordDecl::defaultedMoveConstructorIsDeleted(), clang::Destructor, DiagnoseAtomicInCXXTypeTrait(), DiagnoseVLAInCXXTypeTrait(), clang::Type::getAsCXXRecordDecl(), clang::TypeLoc::getBeginLoc(), clang::CXXRecordDecl::getDestructor(), clang::FunctionProtoType::getNumParams(), clang::TypeSourceInfo::getType(), clang::TypeSourceInfo::getTypeLoc(), clang::Decl::hasAttr(), clang::CXXRecordDecl::hasNonTrivialCopyAssignment(), clang::CXXRecordDecl::hasNonTrivialCopyConstructor(), clang::CXXRecordDecl::hasNonTrivialDefaultConstructor(), clang::CXXRecordDecl::hasNonTrivialMoveAssignment(), clang::CXXRecordDecl::hasNonTrivialMoveConstructor(), HasNoThrowOperator(), clang::CXXRecordDecl::hasTrivialCopyAssignment(), clang::CXXRecordDecl::hasTrivialCopyConstructor(), clang::CXXRecordDecl::hasTrivialDefaultConstructor(), clang::CXXRecordDecl::hasTrivialDestructor(), clang::CXXRecordDecl::hasTrivialMoveAssignment(), clang::CXXRecordDecl::hasTrivialMoveConstructor(), clang::isa(), clang::CXXRecordDecl::isAbstract(), clang::Type::isAggregateType(), clang::Type::isArrayType(), clang::CXXMethodDecl::isCopyAssignmentOperator(), clang::FunctionDecl::isDeleted(), clang::CXXRecordDecl::isEmpty(), clang::CXXMethodDecl::isMoveAssignmentOperator(), clang::FunctionProtoType::isNothrow(), clang::CXXRecordDecl::isPolymorphic(), clang::Type::isScalarType(), isTriviallyEqualityComparableType(), IsTriviallyRelocatableType(), clang::TagDecl::isUnion(), clang::FunctionDecl::isUserProvided(), clang::Type::isVectorType(), clang::CXXRecordDecl::needsImplicitCopyConstructor(), clang::CXXRecordDecl::needsImplicitDefaultConstructor(), clang::CXXRecordDecl::needsImplicitMoveConstructor(), clang::Qualifiers::OCL_Autoreleasing, clang::Qualifiers::OCL_ExplicitNone, clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, clang::Self, and clang::T.
Referenced by EvaluateBooleanTypeTrait().
◆ ExtractTypeTraitFromExpression()
| ExtractedTypeTraitInfo ExtractTypeTraitFromExpression ( const Expr * E) | static |
|---|
◆ GetReturnType()
◆ hasMultipleDataBaseClassesWithFields()
◆ HasNonDeletedDefaultedEqualityComparison()
Definition at line 510 of file SemaTypeTraits.cpp.
References clang::Sema::Context, clang::Sema::CreateOverloadedBinOp(), clang::ASTContext::getCanonicalTagType(), clang::CallExpr::getDirectCallee(), clang::ASTContext::getTranslationUnitDecl(), clang::Sema::SFINAETrap::hasErrorOccurred(), clang::ASTContext::hasSameUnqualifiedType(), clang::Sema::LookupBinOp(), clang::T, clang::Sema::TUScope, clang::Sema::Unevaluated, and clang::VK_LValue.
Referenced by isTriviallyEqualityComparableType().
◆ HasNoThrowOperator()
Definition at line 477 of file SemaTypeTraits.cpp.
References clang::LookupResult::begin(), clang::C, clang::cast(), clang::Type::castAs(), clang::LookupResult::end(), clang::ValueDecl::getType(), clang::isa(), clang::FunctionProtoType::isNothrow(), clang::Sema::LookupOrdinaryName, clang::Self, and clang::LookupResult::suppressDiagnostics().
Referenced by EvaluateUnaryTypeTrait().
◆ hasSuitableConstructorForRelocation()
◆ hasSuitableMoveAssignmentOperatorForRelocation()
| bool hasSuitableMoveAssignmentOperatorForRelocation ( Sema & SemaRef, const CXXRecordDecl * D, bool AllowUserDefined ) | static |
|---|
◆ IsDefaultMovable()
◆ IsEligibleForTrivialRelocation()
◆ isTriviallyEqualityComparableType()
◆ IsTriviallyRelocatableType()
Definition at line 586 of file SemaTypeTraits.cpp.
References clang::RecordDecl::canPassInRegisters(), clang::ASTContext::containsAddressDiscriminatedPointerAuth(), clang::Type::getAsCXXRecordDecl(), clang::Type::getAsRecordDecl(), clang::Sema::getASTContext(), clang::ASTContext::getBaseElementType(), clang::Sema::IsCXXTriviallyRelocatableType(), clang::Type::isIncompleteType(), clang::Type::isObjectType(), clang::CXXRecordDecl::isPolymorphic(), clang::QualType::isTriviallyCopyableType(), clang::QualType::PCK_ARCStrong, clang::QualType::PCK_Trivial, and clang::T.
Referenced by EvaluateUnaryTypeTrait().
◆ LookupSpecialMemberFromXValue()
Definition at line 31 of file SemaTypeTraits.cpp.
References clang::Sema::AddMethodCandidate(), clang::Sema::AddMethodTemplateCandidate(), clang::Sema::AddOverloadCandidate(), clang::Sema::AddTemplateOverloadCandidate(), clang::AS_none, clang::DeclContextLookupResult::begin(), clang::OverloadCandidateSet::BestViableFunction(), clang::cast(), clang::Expr::Classify(), clang::OverloadCandidateSet::CSK_Normal, clang::ASTContext::DeclarationNames, clang::DeclContextLookupResult::empty(), clang::DeclContextLookupResult::end(), clang::Sema::getASTContext(), clang::ASTContext::getCanonicalTagType(), clang::getConstructorInfo(), clang::DeclarationNameTable::getCXXConstructorName(), clang::DeclarationNameTable::getCXXOperatorName(), clang::CXXRecordDecl::getDefinition(), clang::Decl::getLocation(), clang::NamedDecl::getUnderlyingDecl(), clang::DeclContext::lookup(), clang::DeclAccessPair::make(), clang::OR_Deleted, clang::OR_Success, clang::VK_LValue, and clang::VK_XValue.
Referenced by DiagnoseNonDefaultMovable(), hasSuitableConstructorForRelocation(), and hasSuitableMoveAssignmentOperatorForRelocation().
◆ StdNameToTypeTrait()
| std::optional< TypeTrait > StdNameToTypeTrait ( StringRef Name) | static |
|---|