clang API Documentation

Functions
SemaExprCXX.cpp File Reference
#include "clang/Sema/SemaInternal.h"
#include "clang/Sema/DeclSpec.h"
#include "clang/Sema/Initialization.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/ParsedTemplate.h"
#include "clang/Sema/ScopeInfo.h"
#include "clang/Sema/Scope.h"
#include "clang/Sema/TemplateDeduction.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/CharUnits.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
#include "clang/AST/TypeLoc.h"
#include "clang/Basic/PartialDiagnostic.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Lex/Preprocessor.h"
#include "TypeLocBuilder.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/ErrorHandling.h"
Include dependency graph for SemaExprCXX.cpp:

Go to the source code of this file.

Functions

static UuidAttr * GetUuidAttrOfType (QualType QT)
 Retrieve the UuidAttr associated with QT.
static bool doesUsualArrayDeleteWantSize (Sema &S, SourceLocation loc, QualType allocType)
static bool isNonPlacementDeallocationFunction (FunctionDecl *FD)
 Determine whether the given function is a non-placement deallocation function.
static ExprResult BuildCXXCastArgument (Sema &S, SourceLocation CastLoc, QualType Ty, CastKind Kind, CXXMethodDecl *Method, DeclAccessPair FoundDecl, bool HadMultipleCandidates, Expr *From)
static bool CheckUnaryTypeTraitTypeCompleteness (Sema &S, UnaryTypeTrait UTT, SourceLocation Loc, QualType ArgTy)
 Check the completeness of a type in a unary type trait.
static bool EvaluateUnaryTypeTrait (Sema &Self, UnaryTypeTrait UTT, SourceLocation KeyLoc, QualType T)
static bool EvaluateBinaryTypeTrait (Sema &Self, BinaryTypeTrait BTT, QualType LhsT, QualType RhsT, SourceLocation KeyLoc)
static uint64_t EvaluateArrayTypeTrait (Sema &Self, ArrayTypeTrait ATT, QualType T, Expr *DimExpr, SourceLocation KeyLoc)
static bool EvaluateExpressionTrait (ExpressionTrait ET, Expr *E)
static bool TryClassUnification (Sema &Self, Expr *From, Expr *To, SourceLocation QuestionLoc, bool &HaveConversion, QualType &ToType)
 Try to convert a type to another according to C++0x 5.16p3.
static bool FindConditionalOverload (Sema &Self, ExprResult &LHS, ExprResult &RHS, SourceLocation QuestionLoc)
 Try to find a common type for two according to C++0x 5.16p5.
static bool ConvertForConditional (Sema &Self, ExprResult &E, QualType T)
 Perform an "extended" implicit conversion as returned by TryClassUnification.
static bool CheckArrow (Sema &S, QualType &ObjectType, Expr *&Base, tok::TokenKind &OpKind, SourceLocation OpLoc)

Function Documentation

static ExprResult BuildCXXCastArgument ( Sema S,
SourceLocation  CastLoc,
QualType  Ty,
CastKind  Kind,
CXXMethodDecl Method,
DeclAccessPair  FoundDecl,
bool  HadMultipleCandidates,
Expr From 
) [static]
static bool CheckArrow ( Sema S,
QualType ObjectType,
Expr *&  Base,
tok::TokenKind OpKind,
SourceLocation  OpLoc 
) [static]
static bool CheckUnaryTypeTraitTypeCompleteness ( Sema S,
UnaryTypeTrait  UTT,
SourceLocation  Loc,
QualType  ArgTy 
) [static]

Check the completeness of a type in a unary type trait.

If the particular type trait requires a complete type, tries to complete it. If completing the type fails, a diagnostic is emitted and false returned. If completing the type succeeds or no completion was required, returns true.

Definition at line 2664 of file SemaExprCXX.cpp.

References clang::Sema::Context, clang::ASTContext::getAsArrayType(), clang::ArrayType::getElementType(), clang::Sema::RequireCompleteType(), clang::UTT_HasNothrowAssign, clang::UTT_HasNothrowConstructor, clang::UTT_HasNothrowCopy, clang::UTT_HasTrivialAssign, clang::UTT_HasTrivialCopy, clang::UTT_HasTrivialDefaultConstructor, clang::UTT_HasTrivialDestructor, clang::UTT_HasVirtualDestructor, clang::UTT_IsAbstract, clang::UTT_IsArithmetic, clang::UTT_IsArray, clang::UTT_IsClass, clang::UTT_IsCompleteType, clang::UTT_IsCompound, clang::UTT_IsConst, clang::UTT_IsEmpty, clang::UTT_IsEnum, clang::UTT_IsFinal, clang::UTT_IsFloatingPoint, clang::UTT_IsFunction, clang::UTT_IsFundamental, clang::UTT_IsIntegral, clang::UTT_IsLiteral, clang::UTT_IsLvalueReference, clang::UTT_IsMemberFunctionPointer, clang::UTT_IsMemberObjectPointer, clang::UTT_IsMemberPointer, clang::UTT_IsObject, clang::UTT_IsPOD, clang::UTT_IsPointer, clang::UTT_IsPolymorphic, clang::UTT_IsReference, clang::UTT_IsRvalueReference, clang::UTT_IsScalar, clang::UTT_IsSigned, clang::UTT_IsStandardLayout, clang::UTT_IsTrivial, clang::UTT_IsTriviallyCopyable, clang::UTT_IsUnion, clang::UTT_IsUnsigned, clang::UTT_IsVoid, and clang::UTT_IsVolatile.

Referenced by clang::Sema::BuildUnaryTypeTrait().

static bool ConvertForConditional ( Sema Self,
ExprResult E,
QualType  T 
) [static]
static bool doesUsualArrayDeleteWantSize ( Sema S,
SourceLocation  loc,
QualType  allocType 
) [static]
static uint64_t EvaluateArrayTypeTrait ( Sema Self,
ArrayTypeTrait  ATT,
QualType  T,
Expr DimExpr,
SourceLocation  KeyLoc 
) [static]
static bool EvaluateBinaryTypeTrait ( Sema Self,
BinaryTypeTrait  BTT,
QualType  LhsT,
QualType  RhsT,
SourceLocation  KeyLoc 
) [static]
static bool EvaluateExpressionTrait ( ExpressionTrait  ET,
Expr E 
) [static]
static bool EvaluateUnaryTypeTrait ( Sema Self,
UnaryTypeTrait  UTT,
SourceLocation  KeyLoc,
QualType  T 
) [static]

Definition at line 2762 of file SemaExprCXX.cpp.

References clang::LookupResult::begin(), clang::Sema::Context, clang::LookupResult::end(), clang::EST_Delayed, clang::Type::getAs(), clang::FunctionProtoType::getExceptionSpecType(), clang::FunctionProtoType::getNumArgs(), clang::QualType::getObjCLifetime(), clang::ValueDecl::getType(), clang::CXXRecordDecl::hasTrivialCopyAssignment(), clang::CXXRecordDecl::hasTrivialCopyConstructor(), clang::CXXRecordDecl::hasTrivialDefaultConstructor(), clang::QualType::isConstQualified(), clang::CXXMethodDecl::isCopyAssignmentOperator(), clang::CXXConstructorDecl::isCopyConstructor(), clang::CXXConstructorDecl::isDefaultConstructor(), clang::FunctionProtoType::isNothrow(), clang::QualType::isPODType(), clang::QualType::isTriviallyCopyableType(), clang::QualType::isTrivialType(), clang::QualType::isVolatileQualified(), clang::Sema::LookupConstructors(), clang::Sema::LookupDestructor(), clang::Sema::LookupOrdinaryName, clang::Sema::LookupQualifiedName(), clang::Qualifiers::OCL_Autoreleasing, clang::Qualifiers::OCL_ExplicitNone, clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, clang::LookupResult::suppressDiagnostics(), clang::UTT_HasNothrowAssign, clang::UTT_HasNothrowConstructor, clang::UTT_HasNothrowCopy, clang::UTT_HasTrivialAssign, clang::UTT_HasTrivialCopy, clang::UTT_HasTrivialDefaultConstructor, clang::UTT_HasTrivialDestructor, clang::UTT_HasVirtualDestructor, clang::UTT_IsAbstract, clang::UTT_IsArithmetic, clang::UTT_IsArray, clang::UTT_IsClass, clang::UTT_IsCompleteType, clang::UTT_IsCompound, clang::UTT_IsConst, clang::UTT_IsEmpty, clang::UTT_IsEnum, clang::UTT_IsFinal, clang::UTT_IsFloatingPoint, clang::UTT_IsFunction, clang::UTT_IsFundamental, clang::UTT_IsIntegral, clang::UTT_IsLiteral, clang::UTT_IsLvalueReference, clang::UTT_IsMemberFunctionPointer, clang::UTT_IsMemberObjectPointer, clang::UTT_IsMemberPointer, clang::UTT_IsObject, clang::UTT_IsPOD, clang::UTT_IsPointer, clang::UTT_IsPolymorphic, clang::UTT_IsReference, clang::UTT_IsRvalueReference, clang::UTT_IsScalar, clang::UTT_IsSigned, clang::UTT_IsStandardLayout, clang::UTT_IsTrivial, clang::UTT_IsTriviallyCopyable, clang::UTT_IsUnion, clang::UTT_IsUnsigned, clang::UTT_IsVoid, and clang::UTT_IsVolatile.

Referenced by clang::Sema::BuildUnaryTypeTrait().

static bool FindConditionalOverload ( Sema Self,
ExprResult LHS,
ExprResult RHS,
SourceLocation  QuestionLoc 
) [static]
static UuidAttr* GetUuidAttrOfType ( QualType  QT) [static]
static bool isNonPlacementDeallocationFunction ( FunctionDecl FD) [static]

Determine whether the given function is a non-placement deallocation function.

Definition at line 1288 of file SemaExprCXX.cpp.

References clang::FunctionDecl::getNumParams(), clang::FunctionDecl::getOverloadedOperator(), and clang::Decl::isInvalidDecl().

Referenced by clang::Sema::FindAllocationFunctions().

static bool TryClassUnification ( Sema Self,
Expr From,
Expr To,
SourceLocation  QuestionLoc,
bool &  HaveConversion,
QualType ToType 
) [static]

Try to convert a type to another according to C++0x 5.16p3.

This is part of the parameter validation for the ? operator. If either value operand is a class type, the two operands are attempted to be converted to each other. This function does the conversion in one direction. It returns true if the program is ill-formed and has already been diagnosed as such.

Definition at line 3518 of file SemaExprCXX.cpp.

References clang::Sema::Context, clang::InitializationKind::CreateCopy(), clang::InitializationSequence::Diagnose(), clang::InitializationSequence::Failed(), clang::Stmt::getLocStart(), clang::ASTContext::getLValueReferenceType(), clang::Expr::getType(), clang::QualType::getUnqualifiedType(), clang::InitializedEntity::InitializeTemporary(), clang::InitializationSequence::isAmbiguous(), clang::QualType::isAtLeastAsQualifiedAs(), clang::Sema::IsDerivedFrom(), clang::InitializationSequence::isDirectReferenceBinding(), and clang::Expr::isLValue().

Referenced by clang::Sema::CXXCheckConditionalOperands().