clang API Documentation
Describes the sequence of initializations required to initialize a given object or reference with a set of arguments. More...
#include <Initialization.h>
Classes | |
| class | Step |
| A single step in the initialization sequence. More... | |
Public Types | |
| enum | SequenceKind { FailedSequence = 0, DependentSequence, NormalSequence } |
| Describes the kind of initialization sequence computed. More... | |
| enum | StepKind { SK_ResolveAddressOfOverloadedFunction, SK_CastDerivedToBaseRValue, SK_CastDerivedToBaseXValue, SK_CastDerivedToBaseLValue, SK_BindReference, SK_BindReferenceToTemporary, SK_ExtraneousCopyToTemporary, SK_UserConversion, SK_QualificationConversionRValue, SK_QualificationConversionXValue, SK_QualificationConversionLValue, SK_ConversionSequence, SK_ListInitialization, SK_ListConstructorCall, SK_UnwrapInitList, SK_RewrapInitList, SK_ConstructorInitialization, SK_ZeroInitialization, SK_CAssignment, SK_StringInit, SK_ObjCObjectConversion, SK_ArrayInit, SK_PassByIndirectCopyRestore, SK_PassByIndirectRestore, SK_ProduceObjCObject, SK_StdInitializerList } |
| Describes the kind of a particular step in an initialization sequence. More... | |
| enum | FailureKind { FK_TooManyInitsForReference, FK_ArrayNeedsInitList, FK_ArrayNeedsInitListOrStringLiteral, FK_ArrayTypeMismatch, FK_NonConstantArrayInit, FK_AddressOfOverloadFailed, FK_ReferenceInitOverloadFailed, FK_NonConstLValueReferenceBindingToTemporary, FK_NonConstLValueReferenceBindingToUnrelated, FK_RValueReferenceBindingToLValue, FK_ReferenceInitDropsQualifiers, FK_ReferenceInitFailed, FK_ConversionFailed, FK_ConversionFromPropertyFailed, FK_TooManyInitsForScalar, FK_ReferenceBindingToInitList, FK_InitListBadDestinationType, FK_UserConversionOverloadFailed, FK_ConstructorOverloadFailed, FK_ListConstructorOverloadFailed, FK_DefaultInitOfConst, FK_Incomplete, FK_VariableLengthArrayHasInitializer, FK_ListInitializationFailed, FK_PlaceholderType, FK_InitListElementCopyFailure } |
| Describes why initialization failed. More... | |
| typedef SmallVector< Step, 4 > ::const_iterator | step_iterator |
Public Member Functions | |
| InitializationSequence (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, Expr **Args, unsigned NumArgs) | |
| Try to perform initialization of the given entity, creating a record of the steps required to perform the initialization. | |
| ~InitializationSequence () | |
| ExprResult | Perform (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, MultiExprArg Args, QualType *ResultType=0) |
| Perform the actual initialization of the given entity based on the computed initialization sequence. | |
| bool | Diagnose (Sema &S, const InitializedEntity &Entity, const InitializationKind &Kind, Expr **Args, unsigned NumArgs) |
| Diagnose an potentially-invalid initialization sequence. | |
| enum SequenceKind | getKind () const |
| Determine the kind of initialization sequence computed. | |
| void | setSequenceKind (enum SequenceKind SK) |
| Set the kind of sequence computed. | |
| operator bool () const | |
| Determine whether the initialization sequence is valid. | |
| bool | Failed () const |
| Determine whether the initialization sequence is invalid. | |
| step_iterator | step_begin () const |
| step_iterator | step_end () const |
| bool | isDirectReferenceBinding () const |
| Determine whether this initialization is a direct reference binding (C++ [dcl.init.ref]). | |
| bool | isAmbiguous () const |
| Determine whether this initialization failed due to an ambiguity. | |
| bool | isConstructorInitialization () const |
| Determine whether this initialization is direct call to a constructor. | |
| bool | endsWithNarrowing (ASTContext &Ctx, const Expr *Initializer, bool *isInitializerConstant, APValue *ConstantValue) const |
| Returns whether the last step in this initialization sequence is a narrowing conversion, defined by C++0x [dcl.init.list]p7. | |
| void | AddAddressOverloadResolutionStep (FunctionDecl *Function, DeclAccessPair Found, bool HadMultipleCandidates) |
| Add a new step in the initialization that resolves the address of an overloaded function to a specific function declaration. | |
| void | AddDerivedToBaseCastStep (QualType BaseType, ExprValueKind Category) |
| Add a new step in the initialization that performs a derived-to- base cast. | |
| void | AddReferenceBindingStep (QualType T, bool BindingTemporary) |
| Add a new step binding a reference to an object. | |
| void | AddExtraneousCopyToTemporary (QualType T) |
| Add a new step that makes an extraneous copy of the input to a temporary of the same class type. | |
| void | AddUserConversionStep (FunctionDecl *Function, DeclAccessPair FoundDecl, QualType T, bool HadMultipleCandidates) |
| Add a new step invoking a conversion function, which is either a constructor or a conversion function. | |
| void | AddQualificationConversionStep (QualType Ty, ExprValueKind Category) |
| Add a new step that performs a qualification conversion to the given type. | |
| void | AddConversionSequenceStep (const ImplicitConversionSequence &ICS, QualType T) |
| Add a new step that applies an implicit conversion sequence. | |
| void | AddListInitializationStep (QualType T) |
| Add a list-initialization step. | |
| void | AddConstructorInitializationStep (CXXConstructorDecl *Constructor, AccessSpecifier Access, QualType T, bool HadMultipleCandidates, bool FromInitList, bool AsInitList) |
| Add a constructor-initialization step. | |
| void | AddZeroInitializationStep (QualType T) |
| Add a zero-initialization step. | |
| void | AddCAssignmentStep (QualType T) |
| Add a C assignment step. | |
| void | AddStringInitStep (QualType T) |
| Add a string init step. | |
| void | AddObjCObjectConversionStep (QualType T) |
| Add an Objective-C object conversion step, which is always a no-op. | |
| void | AddArrayInitStep (QualType T) |
| Add an array initialization step. | |
| void | AddPassByIndirectCopyRestoreStep (QualType T, bool shouldCopy) |
| Add a step to pass an object by indirect copy-restore. | |
| void | AddProduceObjCObjectStep (QualType T) |
| Add a step to "produce" an Objective-C object (by retaining it). | |
| void | AddStdInitializerListConstructionStep (QualType T) |
| Add a step to construct a std::initializer_list object from an initializer list. | |
| void | RewrapReferenceInitList (QualType T, InitListExpr *Syntactic) |
| Add steps to unwrap a initializer list for a reference around a single element and rewrap it at the end. | |
| void | SetFailed (FailureKind Failure) |
| Note that this initialization sequence failed. | |
| void | SetOverloadFailure (FailureKind Failure, OverloadingResult Result) |
| Note that this initialization sequence failed due to failed overload resolution. | |
| OverloadCandidateSet & | getFailedCandidateSet () |
| Retrieve a reference to the candidate set when overload resolution fails. | |
| OverloadingResult | getFailedOverloadResult () const |
| Get the overloading result, for when the initialization sequence failed due to a bad overload. | |
| FailureKind | getFailureKind () const |
| Determine why initialization failed. | |
| void | dump (raw_ostream &OS) const |
| Dump a representation of this initialization sequence to the given stream, for debugging purposes. | |
| void | dump () const |
| Dump a representation of this initialization sequence to standard error, for debugging purposes. | |
Describes the sequence of initializations required to initialize a given object or reference with a set of arguments.
Definition at line 481 of file Initialization.h.
| typedef SmallVector<Step, 4>::const_iterator clang::InitializationSequence::step_iterator |
Definition at line 754 of file Initialization.h.
Describes why initialization failed.
Definition at line 608 of file Initialization.h.
Describes the kind of initialization sequence computed.
| FailedSequence |
A failed initialization sequence. The failure kind tells what happened. |
| DependentSequence |
A dependent initialization, which could not be type-checked due to the presence of dependent types or dependently-typed expressions. |
| NormalSequence |
A normal sequence. |
Definition at line 484 of file Initialization.h.
Describes the kind of a particular step in an initialization sequence.
| SK_ResolveAddressOfOverloadedFunction |
Resolve the address of an overloaded function to a specific function declaration. |
| SK_CastDerivedToBaseRValue |
Perform a derived-to-base cast, producing an rvalue. |
| SK_CastDerivedToBaseXValue |
Perform a derived-to-base cast, producing an xvalue. |
| SK_CastDerivedToBaseLValue |
Perform a derived-to-base cast, producing an lvalue. |
| SK_BindReference |
Reference binding to an lvalue. |
| SK_BindReferenceToTemporary |
Reference binding to a temporary. |
| SK_ExtraneousCopyToTemporary |
An optional copy of a temporary object to another temporary object, which is permitted (but not required) by C++98/03 but not C++0x. |
| SK_UserConversion |
Perform a user-defined conversion, either via a conversion function or via a constructor. |
| SK_QualificationConversionRValue |
Perform a qualification conversion, producing an rvalue. |
| SK_QualificationConversionXValue |
Perform a qualification conversion, producing an xvalue. |
| SK_QualificationConversionLValue |
Perform a qualification conversion, producing an lvalue. |
| SK_ConversionSequence |
Perform an implicit conversion sequence. |
| SK_ListInitialization |
Perform list-initialization without a constructor. |
| SK_ListConstructorCall |
Perform list-initialization with a constructor. |
| SK_UnwrapInitList |
Unwrap the single-element initializer list for a reference. |
| SK_RewrapInitList |
Rewrap the single-element initializer list for a reference. |
| SK_ConstructorInitialization |
Perform initialization via a constructor. |
| SK_ZeroInitialization |
Zero-initialize the object. |
| SK_CAssignment |
C assignment. |
| SK_StringInit |
Initialization by string. |
| SK_ObjCObjectConversion |
An initialization that "converts" an Objective-C object (not a point to an object) to another Objective-C object type. |
| SK_ArrayInit |
Array initialization (from an array rvalue). This is a GNU C extension. |
| SK_PassByIndirectCopyRestore |
Pass an object by indirect copy-and-restore. |
| SK_PassByIndirectRestore |
Pass an object by indirect restore. |
| SK_ProduceObjCObject |
Produce an Objective-C object pointer. |
| SK_StdInitializerList |
Construct a std::initializer_list from an initializer list. |
Definition at line 500 of file Initialization.h.
| InitializationSequence::InitializationSequence | ( | Sema & | S, |
| const InitializedEntity & | Entity, | ||
| const InitializationKind & | Kind, | ||
| Expr ** | Args, | ||
| unsigned | NumArgs | ||
| ) |
Try to perform initialization of the given entity, creating a record of the steps required to perform the initialization.
The generated initialization sequence will either contain enough information to diagnose
| S | the semantic analysis object. |
| Entity | the entity being initialized. |
| Kind | the kind of initialization being performed. |
| Args | the argument(s) provided for initialization. |
| NumArgs | the number of arguments provided for initialization. |
Definition at line 3925 of file SemaInit.cpp.
References AddArrayInitStep(), AddCAssignmentStep(), AddConversionSequenceStep(), AddPassByIndirectCopyRestoreStep(), clang::Sema::CheckPlaceholderExpr(), clang::Sema::Context, DependentSequence, clang::InitializedEntity::EK_Parameter, clang::StandardConversionSequence::First, FK_AddressOfOverloadFailed, FK_ArrayNeedsInitList, FK_ArrayNeedsInitListOrStringLiteral, FK_ArrayTypeMismatch, FK_ConversionFailed, FK_NonConstantArrayInit, FK_PlaceholderType, FK_TooManyInitsForReference, FK_TooManyInitsForScalar, FK_VariableLengthArrayHasInitializer, clang::ASTContext::getAsArrayType(), clang::InitializedEntity::getDecl(), clang::InitializedEntity::getKind(), clang::InitializationKind::getKind(), clang::Sema::getLangOptions(), clang::StandardConversionSequence::getToType(), clang::Expr::getType(), clang::InitializedEntity::getType(), clang::Expr::hasAnyTypeDependentArguments(), hasCompatibleArrayTypes(), clang::ASTContext::hasSameUnqualifiedType(), clang::Expr::HasSideEffects(), clang::ICK_Array_To_Pointer, clang::ICK_Lvalue_To_Rvalue, clang::ICK_Writeback_Conversion, clang::Expr::IgnoreParens(), clang::InitializationKind::IK_Copy, clang::InitializationKind::IK_Default, clang::InitializationKind::IK_Direct, clang::InitializationKind::IK_Value, clang::ImplicitConversionSequence::isBad(), clang::InitializationKind::isCStyleOrFunctionalCast(), clang::Sema::IsDerivedFrom(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), clang::QualType::isNull(), clang::ImplicitConversionSequence::isStandard(), IsStringInit(), MaybeProduceObjCObject(), NormalSequence, NumArgs, clang::Decl::OBJC_TQ_Out, clang::ASTContext::OverloadTy, Param, clang::Sema::ResolveAddressOfOverloadedFunction(), clang::StandardConversionSequence::Second, clang::StandardConversionSequence::setAllToTypes(), clang::StandardConversionSequence::setAsIdentityConversion(), SetFailed(), setSequenceKind(), clang::ImplicitConversionSequence::setStandard(), clang::ImplicitConversionSequence::Standard, clang::ActionResult< PtrTy, CompressInvalid >::take(), TryConstructorInitialization(), TryDefaultInitialization(), clang::Sema::TryImplicitConversion(), TryListInitialization(), tryObjCWritebackConversion(), TryReferenceInitialization(), TryStringLiteralInitialization(), clang::TryUserDefinedConversion(), and TryValueInitialization().
| InitializationSequence::~InitializationSequence | ( | ) |
Definition at line 4153 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Destroy().
| void InitializationSequence::AddAddressOverloadResolutionStep | ( | FunctionDecl * | Function, |
| DeclAccessPair | Found, | ||
| bool | HadMultipleCandidates | ||
| ) |
Add a new step in the initialization that resolves the address of an overloaded function to a specific function declaration.
| Function | the function to which the overloaded function reference resolves. |
Definition at line 2474 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Function, clang::ValueDecl::getType(), clang::InitializationSequence::Step::Kind, S, SK_ResolveAddressOfOverloadedFunction, and clang::InitializationSequence::Step::Type.
Referenced by ResolveOverloadedFunctionForReferenceBinding().
| void InitializationSequence::AddArrayInitStep | ( | QualType | T | ) |
Add an array initialization step.
Definition at line 2608 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, S, SK_ArrayInit, and clang::InitializationSequence::Step::Type.
Referenced by InitializationSequence().
| void InitializationSequence::AddCAssignmentStep | ( | QualType | T | ) |
Add a C assignment step.
Definition at line 2587 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, S, SK_CAssignment, and clang::InitializationSequence::Step::Type.
Referenced by InitializationSequence().
| void InitializationSequence::AddConstructorInitializationStep | ( | CXXConstructorDecl * | Constructor, |
| AccessSpecifier | Access, | ||
| QualType | T, | ||
| bool | HadMultipleCandidates, | ||
| bool | FromInitList, | ||
| bool | AsInitList | ||
| ) |
Add a constructor-initialization step.
Definition at line 2565 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Function, clang::InitializationSequence::Step::Kind, clang::DeclAccessPair::make(), S, SK_ConstructorInitialization, SK_ListConstructorCall, and clang::InitializationSequence::Step::Type.
Referenced by TryConstructorInitialization(), and TryListConstructionSpecialCases().
| void InitializationSequence::AddConversionSequenceStep | ( | const ImplicitConversionSequence & | ICS, |
| QualType | T | ||
| ) |
Add a new step that applies an implicit conversion sequence.
Definition at line 2546 of file SemaInit.cpp.
References clang::InitializationSequence::Step::ICS, clang::InitializationSequence::Step::Kind, S, SK_ConversionSequence, and clang::InitializationSequence::Step::Type.
Referenced by InitializationSequence(), tryObjCWritebackConversion(), TryReferenceInitializationCore(), TryRefInitWithConversionFunction(), and TryUserDefinedConversion().
| void InitializationSequence::AddDerivedToBaseCastStep | ( | QualType | BaseType, |
| ExprValueKind | Category | ||
| ) |
Add a new step in the initialization that performs a derived-to- base cast.
| BaseType | the base type to which we will be casting. |
| IsLValue | true if the result of this cast will be treated as an lvalue. |
Definition at line 2486 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, S, SK_CastDerivedToBaseLValue, SK_CastDerivedToBaseRValue, SK_CastDerivedToBaseXValue, clang::InitializationSequence::Step::Type, clang::VK_LValue, clang::VK_RValue, and clang::VK_XValue.
Referenced by TryReferenceInitializationCore(), and TryRefInitWithConversionFunction().
| void InitializationSequence::AddExtraneousCopyToTemporary | ( | QualType | T | ) |
Add a new step that makes an extraneous copy of the input to a temporary of the same class type.
This extraneous copy only occurs during reference binding in C++98/03, where we are permitted (but not required) to introduce an extra copy. At a bare minimum, we must check that we could call the copy constructor, and produce a diagnostic if the copy constructor is inaccessible or no copy constructor matches.
| T | The type of the temporary being created. |
Definition at line 2506 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, S, SK_ExtraneousCopyToTemporary, and clang::InitializationSequence::Step::Type.
Referenced by TryReferenceInitializationCore().
| void InitializationSequence::AddListInitializationStep | ( | QualType | T | ) |
Add a list-initialization step.
Definition at line 2556 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, S, SK_ListInitialization, and clang::InitializationSequence::Step::Type.
Referenced by TryListInitialization().
| void InitializationSequence::AddObjCObjectConversionStep | ( | QualType | T | ) |
Add an Objective-C object conversion step, which is always a no-op.
Definition at line 2601 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, S, SK_ObjCObjectConversion, and clang::InitializationSequence::Step::Type.
Referenced by TryReferenceInitializationCore(), and TryRefInitWithConversionFunction().
| void InitializationSequence::AddPassByIndirectCopyRestoreStep | ( | QualType | T, |
| bool | shouldCopy | ||
| ) |
Add a step to pass an object by indirect copy-restore.
Definition at line 2615 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, SK_PassByIndirectCopyRestore, SK_PassByIndirectRestore, and clang::InitializationSequence::Step::Type.
Referenced by InitializationSequence(), and tryObjCWritebackConversion().
| void InitializationSequence::AddProduceObjCObjectStep | ( | QualType | T | ) |
Add a step to "produce" an Objective-C object (by retaining it).
Definition at line 2624 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, S, SK_ProduceObjCObject, and clang::InitializationSequence::Step::Type.
Referenced by MaybeProduceObjCObject().
| void InitializationSequence::AddQualificationConversionStep | ( | QualType | Ty, |
| ExprValueKind | Category | ||
| ) |
Add a new step that performs a qualification conversion to the given type.
Definition at line 2527 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, S, SK_QualificationConversionLValue, SK_QualificationConversionRValue, SK_QualificationConversionXValue, clang::InitializationSequence::Step::Type, clang::VK_LValue, clang::VK_RValue, and clang::VK_XValue.
Referenced by TryReferenceInitializationCore(), and TryRefInitWithConversionFunction().
| void InitializationSequence::AddReferenceBindingStep | ( | QualType | T, |
| bool | BindingTemporary | ||
| ) |
Add a new step binding a reference to an object.
| BindingTemporary | True if we are binding a reference to a temporary object (thereby extending its lifetime); false if we are binding to an lvalue or an lvalue treated as an rvalue. |
| UnnecessaryCopy | True if we should check for a copy constructor for a completely unnecessary but |
Definition at line 2498 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, S, SK_BindReference, SK_BindReferenceToTemporary, and clang::InitializationSequence::Step::Type.
Referenced by TryReferenceInitializationCore(), TryReferenceListInitialization(), and TryRefInitWithConversionFunction().
| void InitializationSequence::AddStdInitializerListConstructionStep | ( | QualType | T | ) |
Add a step to construct a std::initializer_list object from an initializer list.
Definition at line 2631 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, S, SK_StdInitializerList, and clang::InitializationSequence::Step::Type.
Referenced by TryListConstructionSpecialCases().
| void InitializationSequence::AddStringInitStep | ( | QualType | T | ) |
Add a string init step.
Definition at line 2594 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, S, SK_StringInit, and clang::InitializationSequence::Step::Type.
Referenced by TryStringLiteralInitialization().
| void InitializationSequence::AddUserConversionStep | ( | FunctionDecl * | Function, |
| DeclAccessPair | FoundDecl, | ||
| QualType | T, | ||
| bool | HadMultipleCandidates | ||
| ) |
Add a new step invoking a conversion function, which is either a constructor or a conversion function.
Definition at line 2514 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Function, clang::InitializationSequence::Step::Kind, S, SK_UserConversion, and clang::InitializationSequence::Step::Type.
Referenced by TryRefInitWithConversionFunction(), and TryUserDefinedConversion().
| void InitializationSequence::AddZeroInitializationStep | ( | QualType | T | ) |
Add a zero-initialization step.
Definition at line 2580 of file SemaInit.cpp.
References clang::InitializationSequence::Step::Kind, S, SK_ZeroInitialization, and clang::InitializationSequence::Step::Type.
Referenced by TryDefaultInitialization(), and TryValueInitialization().
| bool InitializationSequence::Diagnose | ( | Sema & | S, |
| const InitializedEntity & | Entity, | ||
| const InitializationKind & | Kind, | ||
| Expr ** | Args, | ||
| unsigned | NumArgs | ||
| ) |
Diagnose an potentially-invalid initialization sequence.
Definition at line 5231 of file SemaInit.cpp.
References clang::OverloadCandidateSet::BestViableFunction(), clang::Sema::Context, clang::Sema::CurContext, clang::Sema::Diag(), clang::InitializedEntity::EK_Base, clang::InitializedEntity::EK_Member, clang::Sema::EmitRelatedResultTypeNote(), Failed(), FK_AddressOfOverloadFailed, FK_ArrayNeedsInitList, FK_ArrayNeedsInitListOrStringLiteral, FK_ArrayTypeMismatch, FK_ConstructorOverloadFailed, FK_ConversionFailed, FK_ConversionFromPropertyFailed, FK_DefaultInitOfConst, FK_Incomplete, FK_InitListBadDestinationType, FK_InitListElementCopyFailure, FK_ListConstructorOverloadFailed, FK_ListInitializationFailed, FK_NonConstantArrayInit, FK_NonConstLValueReferenceBindingToTemporary, FK_NonConstLValueReferenceBindingToUnrelated, FK_PlaceholderType, FK_ReferenceBindingToInitList, FK_ReferenceInitDropsQualifiers, FK_ReferenceInitFailed, FK_ReferenceInitOverloadFailed, FK_RValueReferenceBindingToLValue, FK_TooManyInitsForReference, FK_TooManyInitsForScalar, FK_UserConversionOverloadFailed, FK_VariableLengthArrayHasInitializer, clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::InitializedEntity::getBaseSpecifier(), clang::SourceRange::getBegin(), clang::ASTContext::getConstantArrayType(), clang::InitializedEntity::getDecl(), clang::Expr::getExprLoc(), clang::InitListExpr::getInit(), clang::InitListExpr::getInits(), clang::InitializedEntity::getKind(), clang::InitializationKind::getKind(), clang::Sema::getLangOptions(), clang::Decl::getLocation(), clang::InitializationKind::getLocation(), clang::Stmt::getLocEnd(), clang::Preprocessor::getLocForEndOfToken(), clang::InitializedEntity::getName(), clang::QualType::getNonReferenceType(), clang::InitListExpr::getNumInits(), clang::CXXMethodDecl::getParent(), clang::ASTContext::getSizeType(), clang::Stmt::getSourceRange(), clang::ASTContext::getTagDeclType(), clang::Expr::getType(), clang::CXXBaseSpecifier::getType(), clang::InitializedEntity::getType(), clang::ASTContext::getTypeDeclType(), clang::ASTContext::getTypeSize(), clang::Sema::HandleFunctionTypeMismatch(), clang::InitializationKind::IK_Default, clang::InitializationKind::IK_Direct, clang::InitializedEntity::InitializeElement(), clang::InitializedEntity::InitializeTemporary(), clang::InitializationKind::isCStyleOrFunctionalCast(), clang::Decl::isImplicit(), isInvalid(), clang::Expr::isLValue(), clang::Sema::isStdInitializerList(), clang::QualType::isVolatileQualified(), clang::ArrayType::Normal, clang::OverloadCandidateSet::NoteCandidates(), clang::OCD_AllCandidates, clang::OCD_ViableCandidates, clang::OR_Ambiguous, clang::OR_Deleted, clang::OR_No_Viable_Function, clang::OR_Success, clang::Sema::Owned(), clang::Sema::PDiag(), clang::Sema::PerformCopyInitialization(), clang::Sema::PP, clang::Sema::RequireCompleteType(), clang::Sema::ResolveAddressOfOverloadedFunction(), clang::SourceRange::setBegin(), and clang::InitializedEntity::setElementIndex().
Referenced by Perform(), clang::Sema::TryCaptureVar(), and TryClassUnification().
| void InitializationSequence::dump | ( | raw_ostream & | OS | ) | const |
Dump a representation of this initialization sequence to the given stream, for debugging purposes.
Definition at line 5590 of file SemaInit.cpp.
References DependentSequence, FailedSequence, FK_AddressOfOverloadFailed, FK_ArrayNeedsInitList, FK_ArrayNeedsInitListOrStringLiteral, FK_ArrayTypeMismatch, FK_ConstructorOverloadFailed, FK_ConversionFailed, FK_ConversionFromPropertyFailed, FK_DefaultInitOfConst, FK_Incomplete, FK_InitListBadDestinationType, FK_InitListElementCopyFailure, FK_ListConstructorOverloadFailed, FK_ListInitializationFailed, FK_NonConstantArrayInit, FK_NonConstLValueReferenceBindingToTemporary, FK_NonConstLValueReferenceBindingToUnrelated, FK_PlaceholderType, FK_ReferenceBindingToInitList, FK_ReferenceInitDropsQualifiers, FK_ReferenceInitFailed, FK_ReferenceInitOverloadFailed, FK_RValueReferenceBindingToLValue, FK_TooManyInitsForReference, FK_TooManyInitsForScalar, FK_UserConversionOverloadFailed, FK_VariableLengthArrayHasInitializer, NormalSequence, S, SK_ArrayInit, SK_BindReference, SK_BindReferenceToTemporary, SK_CAssignment, SK_CastDerivedToBaseLValue, SK_CastDerivedToBaseRValue, SK_CastDerivedToBaseXValue, SK_ConstructorInitialization, SK_ConversionSequence, SK_ExtraneousCopyToTemporary, SK_ListConstructorCall, SK_ListInitialization, SK_ObjCObjectConversion, SK_PassByIndirectCopyRestore, SK_PassByIndirectRestore, SK_ProduceObjCObject, SK_QualificationConversionLValue, SK_QualificationConversionRValue, SK_QualificationConversionXValue, SK_ResolveAddressOfOverloadedFunction, SK_RewrapInitList, SK_StdInitializerList, SK_StringInit, SK_UnwrapInitList, SK_UserConversion, SK_ZeroInitialization, step_begin(), and step_end().
| void InitializationSequence::dump | ( | ) | const |
Dump a representation of this initialization sequence to standard error, for debugging purposes.
Definition at line 5827 of file SemaInit.cpp.
| bool clang::InitializationSequence::endsWithNarrowing | ( | ASTContext & | Ctx, |
| const Expr * | Initializer, | ||
| bool * | isInitializerConstant, | ||
| APValue * | ConstantValue | ||
| ) | const |
Returns whether the last step in this initialization sequence is a narrowing conversion, defined by C++0x [dcl.init.list]p7.
If this function returns true, *isInitializerConstant will be set to describe whether *Initializer was a constant expression. If isInitializerConstant is set to true, *ConstantValue will be set to the evaluated value of *Initializer.
| bool clang::InitializationSequence::Failed | ( | ) | const [inline] |
Determine whether the initialization sequence is invalid.
Definition at line 752 of file Initialization.h.
References FailedSequence.
Referenced by clang::Sema::CanPerformCopyInitialization(), Diagnose(), getFailureKind(), isAmbiguous(), operator bool(), Perform(), TryClassUnification(), tryDiagnoseOverloadedCast(), and TryStaticImplicitCast().
| OverloadCandidateSet& clang::InitializationSequence::getFailedCandidateSet | ( | ) | [inline] |
Retrieve a reference to the candidate set when overload resolution fails.
Definition at line 898 of file Initialization.h.
Referenced by TryConstructorInitialization(), tryDiagnoseOverloadedCast(), TryListConstructionSpecialCases(), TryReferenceInitializationCore(), TryRefInitWithConversionFunction(), and TryUserDefinedConversion().
| OverloadingResult clang::InitializationSequence::getFailedOverloadResult | ( | ) | const [inline] |
Get the overloading result, for when the initialization sequence failed due to a bad overload.
Definition at line 904 of file Initialization.h.
Referenced by tryDiagnoseOverloadedCast().
| FailureKind clang::InitializationSequence::getFailureKind | ( | ) | const [inline] |
Determine why initialization failed.
Definition at line 909 of file Initialization.h.
References Failed().
Referenced by isAmbiguous(), and tryDiagnoseOverloadedCast().
| enum SequenceKind clang::InitializationSequence::getKind | ( | ) | const [inline] |
Determine the kind of initialization sequence computed.
Definition at line 743 of file Initialization.h.
Referenced by Perform().
| bool InitializationSequence::isAmbiguous | ( | ) | const |
Determine whether this initialization failed due to an ambiguity.
Definition at line 2429 of file SemaInit.cpp.
References Failed(), FK_AddressOfOverloadFailed, FK_ArrayNeedsInitList, FK_ArrayNeedsInitListOrStringLiteral, FK_ArrayTypeMismatch, FK_ConstructorOverloadFailed, FK_ConversionFailed, FK_ConversionFromPropertyFailed, FK_DefaultInitOfConst, FK_Incomplete, FK_InitListBadDestinationType, FK_InitListElementCopyFailure, FK_ListConstructorOverloadFailed, FK_ListInitializationFailed, FK_NonConstantArrayInit, FK_NonConstLValueReferenceBindingToTemporary, FK_NonConstLValueReferenceBindingToUnrelated, FK_PlaceholderType, FK_ReferenceBindingToInitList, FK_ReferenceInitDropsQualifiers, FK_ReferenceInitFailed, FK_ReferenceInitOverloadFailed, FK_RValueReferenceBindingToLValue, FK_TooManyInitsForReference, FK_TooManyInitsForScalar, FK_UserConversionOverloadFailed, FK_VariableLengthArrayHasInitializer, getFailureKind(), and clang::OR_Ambiguous.
Referenced by TryClassUnification().
| bool InitializationSequence::isConstructorInitialization | ( | ) | const |
Determine whether this initialization is direct call to a constructor.
Definition at line 2468 of file SemaInit.cpp.
References SK_ConstructorInitialization.
Referenced by TryStaticImplicitCast().
| bool InitializationSequence::isDirectReferenceBinding | ( | ) | const |
Determine whether this initialization is a direct reference binding (C++ [dcl.init.ref]).
Definition at line 2425 of file SemaInit.cpp.
References SK_BindReference.
Referenced by TryClassUnification().
| clang::InitializationSequence::operator bool | ( | ) | const [inline] |
Determine whether the initialization sequence is valid.
Definition at line 749 of file Initialization.h.
References Failed().
| ExprResult InitializationSequence::Perform | ( | Sema & | S, |
| const InitializedEntity & | Entity, | ||
| const InitializationKind & | Kind, | ||
| MultiExprArg | Args, | ||
| QualType * | ResultType = 0 |
||
| ) |
Perform the actual initialization of the given entity based on the computed initialization sequence.
| S | the semantic analysis object. |
| Entity | the entity being initialized. |
| Kind | the kind of initialization being performed. |
| Args | the argument(s) provided for initialization, ownership of which is transferred into the routine. |
| ResultType | if non-NULL, will be set to the type of the initialized object, which is the type of the declaration in most cases. However, when the initialized object is a variable of incomplete array type and the initializer is an initializer list, this type will be set to the completed array type. |
Definition at line 4658 of file SemaInit.cpp.
References Arg, clang::Sema::BasePathInvolvesVirtualBase(), clang::Sema::BuildCXXConstructExpr(), clang::Sema::BuildCXXMemberCallExpr(), clang::Sema::CCK_CStyleCast, clang::Sema::CCK_FunctionalCast, clang::Sema::CCK_ImplicitConversion, clang::Sema::CCK_OtherCast, clang::Sema::CheckAddressOfMemberAccess(), clang::Sema::CheckConstructorAccess(), clang::Sema::CheckDerivedToBaseConversion(), clang::Sema::CheckDestructorAccess(), clang::Sema::CheckExceptionSpecCompatibility(), checkIndirectCopyRestoreSource(), clang::Sema::CheckMemberOperatorAccess(), clang::Sema::CheckSingleAssignmentConstraints(), CheckStringInit(), clang::Sema::CheckTransparentUnionArgumentConstraints(), clang::CK_ARCProduceObject, clang::CXXConstructExpr::CK_Complete, clang::CK_ConstructorConversion, clang::CK_DerivedToBase, clang::CK_NoOp, clang::CK_ObjCObjectLValueCast, clang::CK_UserDefinedConversion, clang::Sema::Compatible, clang::Sema::CompleteConstructorCall(), clang::Sema::Context, CopyObject(), clang::ImplicitCastExpr::Create(), DependentSequence, clang::Sema::Diag(), Diagnose(), clang::Sema::DiagnoseAssignmentResult(), clang::Sema::DiagnoseUseOfDecl(), clang::InitializedEntity::EK_Member, clang::InitializedEntity::EK_Parameter, clang::ExprError(), clang::Sema::ExprNeedsCleanups, Failed(), clang::Sema::FixOverloadedFunctionReference(), clang::InitializationSequence::Step::Function, clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::ASTMultiPtr< PtrTy >::get(), clang::DeclAccessPair::getAccess(), clang::ASTContext::getAsArrayType(), clang::ASTContext::getAsConstantArrayType(), clang::ASTContext::getAsIncompleteArrayType(), getAssignmentAction(), clang::SourceRange::getBegin(), clang::Expr::getBitField(), clang::ASTContext::getConstantArrayType(), clang::InitializedEntity::getDecl(), clang::ASTContext::getDependentSizedArrayType(), clang::SourceRange::getEnd(), clang::Expr::getExprLoc(), clang::InitListExpr::getInit(), clang::InitListExpr::getInits(), clang::InitializedEntity::getKind(), clang::InitializationKind::getKind(), getKind(), clang::Sema::getLangOptions(), clang::InitListExpr::getLBraceLoc(), clang::InitializationKind::getLocation(), clang::Stmt::getLocStart(), clang::ASTContext::getLValueReferenceType(), clang::QualType::getNonLValueExprType(), clang::QualType::getNonReferenceType(), clang::InitListExpr::getNumInits(), clang::InitializationKind::getRange(), clang::InitListExpr::getRBraceLoc(), clang::ASTContext::getRValueReferenceType(), clang::ASTContext::getSizeType(), clang::Stmt::getSourceRange(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::TypeSourceInfo::getType(), clang::Expr::getType(), clang::InitializedEntity::getType(), clang::ValueDecl::getType(), clang::ASTContext::getTypeDeclType(), clang::ASTContext::getTypeSize(), clang::InitializedEntity::getTypeSourceInfo(), clang::Expr::getValueKind(), clang::ASTContext::hasSameUnqualifiedType(), clang::InitializationSequence::Step::ICS, clang::InitializationKind::IK_Copy, clang::InitializationKind::IK_Direct, clang::InitializationKind::IK_Value, clang::Sema::ImpCastExprToType(), clang::InitializedEntity::InitializeElement(), clang::InitializedEntity::InitializeTemporary(), clang::InitializationKind::isCStyleCast(), clang::InitializationKind::isCStyleOrFunctionalCast(), clang::Sema::IsDerivedFrom(), clang::InitializationKind::isExplicitCast(), clang::InitializationKind::isFunctionalCast(), clang::InitializationKind::isImplicitValueInit(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), isReferenceBinding(), clang::ReferenceType::isSpelledAsLValue(), clang::Sema::isStdInitializerList(), clang::QualType::isVolatileQualified(), clang::InitializationSequence::Step::Kind, clang::Sema::LookupDestructor(), clang::Sema::MarkFunctionReferenced(), clang::Sema::MarkVTableUsed(), clang::Sema::MaybeBindToTemporary(), clang::move(), clang::move_arg(), clang::ArrayType::Normal, NumArgs, clang::Sema::Owned(), clang::Sema::PDiag(), PerformConstructorInitialization(), clang::Sema::PerformCopyInitialization(), clang::Sema::PerformImplicitConversion(), clang::Sema::PerformObjectArgumentInitialization(), clang::Expr::refersToVectorElement(), clang::ActionResult< PtrTy, CompressInvalid >::release(), clang::ASTMultiPtr< PtrTy >::release(), S, clang::InitializedEntity::setElementIndex(), clang::InitListExpr::setSyntacticForm(), clang::Expr::setType(), clang::Expr::setValueKind(), shouldBindAsTemporary(), shouldDestroyTemporary(), clang::ASTMultiPtr< PtrTy >::size(), SK_ArrayInit, SK_BindReference, SK_BindReferenceToTemporary, SK_CAssignment, SK_CastDerivedToBaseLValue, SK_CastDerivedToBaseRValue, SK_CastDerivedToBaseXValue, SK_ConstructorInitialization, SK_ConversionSequence, SK_ExtraneousCopyToTemporary, SK_ListConstructorCall, SK_ListInitialization, SK_ObjCObjectConversion, SK_PassByIndirectCopyRestore, SK_PassByIndirectRestore, SK_ProduceObjCObject, SK_QualificationConversionLValue, SK_QualificationConversionRValue, SK_QualificationConversionXValue, SK_ResolveAddressOfOverloadedFunction, SK_RewrapInitList, SK_StdInitializerList, SK_StringInit, SK_UnwrapInitList, SK_UserConversion, SK_ZeroInitialization, step_begin(), step_end(), clang::ActionResult< PtrTy, CompressInvalid >::take(), clang::ActionResult< PtrTy, CompressInvalid >::takeAs(), clang::InitializationSequence::Step::Type, clang::VK_LValue, clang::VK_RValue, clang::VK_XValue, and clang::InitializationSequence::Step::WrappingSyntacticList.
Referenced by clang::Sema::BuildCompoundLiteralExpr(), clang::Sema::BuildCXXNew(), clang::Sema::BuildCXXTypeConstructExpr(), clang::Sema::BuildExceptionDeclaration(), BuildImplicitMemberInitializer(), ConvertForConditional(), clang::Sema::FindCompositePointerType(), clang::MultiInitializer::PerformInit(), clang::Sema::TryCaptureVar(), and TryStaticImplicitCast().
| void InitializationSequence::RewrapReferenceInitList | ( | QualType | T, |
| InitListExpr * | Syntactic | ||
| ) |
Add steps to unwrap a initializer list for a reference around a single element and rewrap it at the end.
Definition at line 2638 of file SemaInit.cpp.
References clang::InitListExpr::getInit(), clang::InitListExpr::getNumInits(), clang::Expr::getType(), S, SK_RewrapInitList, and SK_UnwrapInitList.
Referenced by TryReferenceListInitialization().
| void clang::InitializationSequence::SetFailed | ( | FailureKind | Failure | ) | [inline] |
Note that this initialization sequence failed.
Definition at line 887 of file Initialization.h.
References FailedSequence.
Referenced by InitializationSequence(), ResolveOverloadedFunctionForReferenceBinding(), TryConstructorInitialization(), TryDefaultInitialization(), TryListConstructionSpecialCases(), TryListInitialization(), TryReferenceInitializationCore(), and TryReferenceListInitialization().
| void InitializationSequence::SetOverloadFailure | ( | FailureKind | Failure, |
| OverloadingResult | Result | ||
| ) |
Note that this initialization sequence failed due to failed overload resolution.
Definition at line 2653 of file SemaInit.cpp.
References FailedSequence, and setSequenceKind().
Referenced by TryConstructorInitialization(), TryListConstructionSpecialCases(), TryReferenceInitializationCore(), and TryUserDefinedConversion().
| void clang::InitializationSequence::setSequenceKind | ( | enum SequenceKind | SK | ) | [inline] |
Set the kind of sequence computed.
Definition at line 746 of file Initialization.h.
Referenced by InitializationSequence(), and SetOverloadFailure().
| step_iterator clang::InitializationSequence::step_begin | ( | ) | const [inline] |
Definition at line 755 of file Initialization.h.
Referenced by DiagnoseNarrowingInInitList(), dump(), and Perform().
| step_iterator clang::InitializationSequence::step_end | ( | ) | const [inline] |
Definition at line 756 of file Initialization.h.
Referenced by DiagnoseNarrowingInInitList(), dump(), and Perform().