class InitializationSequence

Declaration

class InitializationSequence { /* full declaration omitted */ };

Description

Describes the sequence of initializations required to initialize a given object or reference with a set of arguments.

Declared at: clang/include/clang/Sema/Initialization.h:788

Member Variables

private enum SequenceKind SequenceKind
The kind of initialization sequence computed.
private SmallVector<clang::InitializationSequence::Step, 4> Steps
Steps taken by this initialization.
private clang::InitializationSequence::FailureKind Failure
The reason why initialization failed.
private clang::OverloadingResult FailedOverloadResult
The failed result of overload resolution.
private clang::OverloadCandidateSet FailedCandidateSet
The candidate set created when initialization failed.
private clang::QualType FailedIncompleteType
The incomplete type that caused a failure.
private std::string ZeroInitializationFixit
The fixit that needs to be applied to make this initialization succeed.
private clang::SourceLocation ZeroInitializationFixitLoc

Method Overview

Methods

void AddAddressOverloadResolutionStep(
    clang::FunctionDecl* Function,
    clang::DeclAccessPair Found,
    bool HadMultipleCandidates)

Description

Add a new step in the initialization that resolves the address of an overloaded function to a specific function declaration.

Declared at: clang/include/clang/Sema/Initialization.h:1240

Parameters

clang::FunctionDecl* Function
the function to which the overloaded function reference resolves.
clang::DeclAccessPair Found
bool HadMultipleCandidates

void AddArrayInitLoopStep(clang::QualType T,
                          clang::QualType EltTy)

Description

Add an array initialization loop step.

Declared at: clang/include/clang/Sema/Initialization.h:1333

Parameters

clang::QualType T
clang::QualType EltTy

void AddArrayInitStep(clang::QualType T,
                      bool IsGNUExtension)

Description

Add an array initialization step.

Declared at: clang/include/clang/Sema/Initialization.h:1336

Parameters

clang::QualType T
bool IsGNUExtension

void AddAtomicConversionStep(clang::QualType Ty)

Description

Add a new step that performs conversion from non-atomic to atomic type.

Declared at: clang/include/clang/Sema/Initialization.h:1295

Parameters

clang::QualType Ty

void AddCAssignmentStep(clang::QualType T)

Declared at: clang/include/clang/Sema/Initialization.h:1323

Parameters

clang::QualType T

void AddConstructorInitializationStep(
    clang::DeclAccessPair FoundDecl,
    clang::CXXConstructorDecl* Constructor,
    clang::QualType T,
    bool HadMultipleCandidates,
    bool FromInitList,
    bool AsInitList)

Description

Add a constructor-initialization step.

Declared at: clang/include/clang/Sema/Initialization.h:1309

Parameters

clang::DeclAccessPair FoundDecl
clang::CXXConstructorDecl* Constructor
clang::QualType T
bool HadMultipleCandidates
bool FromInitList
The constructor call is syntactically an initializer list.
bool AsInitList
The constructor is called as an init list constructor.

void AddConversionSequenceStep(
    const clang::ImplicitConversionSequence& ICS,
    clang::QualType T,
    bool TopLevelOfInitList = false)

Description

Add a new step that applies an implicit conversion sequence.

Declared at: clang/include/clang/Sema/Initialization.h:1298

Parameters

const clang::ImplicitConversionSequence& ICS
clang::QualType T
bool TopLevelOfInitList = false

void AddDerivedToBaseCastStep(
    clang::QualType BaseType,
    clang::ExprValueKind Category)

Description

Add a new step in the initialization that performs a derived-to- base cast.

Declared at: clang/include/clang/Sema/Initialization.h:1251

Parameters

clang::QualType BaseType
the base type to which we will be casting.
clang::ExprValueKind Category
Indicates whether the result will be treated as an rvalue, an xvalue, or an lvalue.

void AddExtraneousCopyToTemporary(
    clang::QualType T)

Declared at: clang/include/clang/Sema/Initialization.h:1271

Parameters

clang::QualType T
The type of the temporary being created.

void AddFinalCopy(clang::QualType T)

Description

Add a new step that makes a copy of the input to an object of the given type, as the final step in class copy-initialization.

Declared at: clang/include/clang/Sema/Initialization.h:1275

Parameters

clang::QualType T

void AddFunctionReferenceConversionStep(
    clang::QualType Ty)

Description

Add a new step that performs a function reference conversion to the given type.

Declared at: clang/include/clang/Sema/Initialization.h:1291

Parameters

clang::QualType Ty

void AddListInitializationStep(clang::QualType T)

Description

Add a list-initialization step.

Declared at: clang/include/clang/Sema/Initialization.h:1302

Parameters

clang::QualType T

void AddOCLSamplerInitStep(clang::QualType T)

Description

Add a step to initialize an OpenCL sampler from an integer constant.

Declared at: clang/include/clang/Sema/Initialization.h:1354

Parameters

clang::QualType T

void AddOCLZeroOpaqueTypeStep(clang::QualType T)

Description

Add a step to initialzie an OpenCL opaque type (event_t, queue_t, etc.) from a zero constant.

Declared at: clang/include/clang/Sema/Initialization.h:1358

Parameters

clang::QualType T

void AddObjCObjectConversionStep(
    clang::QualType T)

Description

Add an Objective-C object conversion step, which is always a no-op.

Declared at: clang/include/clang/Sema/Initialization.h:1330

Parameters

clang::QualType T

void AddParenthesizedArrayInitStep(
    clang::QualType T)

Description

Add a parenthesized array initialization step.

Declared at: clang/include/clang/Sema/Initialization.h:1339

Parameters

clang::QualType T

void AddPassByIndirectCopyRestoreStep(
    clang::QualType T,
    bool shouldCopy)

Description

Add a step to pass an object by indirect copy-restore.

Declared at: clang/include/clang/Sema/Initialization.h:1342

Parameters

clang::QualType T
bool shouldCopy

void AddProduceObjCObjectStep(clang::QualType T)

Description

Add a step to "produce" an Objective-C object (by retaining it).

Declared at: clang/include/clang/Sema/Initialization.h:1346

Parameters

clang::QualType T

void AddQualificationConversionStep(
    clang::QualType Ty,
    clang::ExprValueKind Category)

Description

Add a new step that performs a qualification conversion to the given type.

Declared at: clang/include/clang/Sema/Initialization.h:1286

Parameters

clang::QualType Ty
clang::ExprValueKind Category

void AddReferenceBindingStep(
    clang::QualType T,
    bool BindingTemporary)

Description

Add a new step binding a reference to an object.

Declared at: clang/include/clang/Sema/Initialization.h:1259

Parameters

clang::QualType T
bool 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.

void AddStdInitializerListConstructionStep(
    clang::QualType T)

Description

Add a step to construct a std::initializer_list object from an initializer list.

Declared at: clang/include/clang/Sema/Initialization.h:1350

Parameters

clang::QualType T

void AddStringInitStep(clang::QualType T)

Description

Add a string init step.

Declared at: clang/include/clang/Sema/Initialization.h:1326

Parameters

clang::QualType T

void AddUserConversionStep(
    clang::FunctionDecl* Function,
    clang::DeclAccessPair FoundDecl,
    clang::QualType T,
    bool HadMultipleCandidates)

Description

Add a new step invoking a conversion function, which is either a constructor or a conversion function.

Declared at: clang/include/clang/Sema/Initialization.h:1279

Parameters

clang::FunctionDecl* Function
clang::DeclAccessPair FoundDecl
clang::QualType T
bool HadMultipleCandidates

void AddZeroInitializationStep(clang::QualType T)

Description

Add a zero-initialization step.

Declared at: clang/include/clang/Sema/Initialization.h:1316

Parameters

clang::QualType T

bool Diagnose(
    clang::Sema& S,
    const clang::InitializedEntity& Entity,
    const clang::InitializationKind& Kind,
    ArrayRef<clang::Expr*> Args)

Description

Diagnose an potentially-invalid initialization sequence.

Declared at: clang/include/clang/Sema/Initialization.h:1198

Parameters

clang::Sema& S
const clang::InitializedEntity& Entity
const clang::InitializationKind& Kind
ArrayRef<clang::Expr*> Args

Returns

true if the initialization sequence was ill-formed, false otherwise.

bool Failed() const

Description

Determine whether the initialization sequence is invalid.

Declared at: clang/include/clang/Sema/Initialization.h:1213

InitializationSequence(
    clang::Sema& S,
    const clang::InitializedEntity& Entity,
    const clang::InitializationKind& Kind,
    clang::MultiExprArg Args,
    bool TopLevelOfInitList = false,
    bool TreatUnavailableAsInvalid = true)

Description

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

Declared at: clang/include/clang/Sema/Initialization.h:1155

Parameters

clang::Sema& S
the semantic analysis object.
const clang::InitializedEntity& Entity
the entity being initialized.
const clang::InitializationKind& Kind
the kind of initialization being performed.
clang::MultiExprArg Args
the argument(s) provided for initialization.
bool TopLevelOfInitList = false
true if we are initializing from an expression at the top level inside an initializer list. This disallows narrowing conversions in C++11 onwards.
bool TreatUnavailableAsInvalid = true
true if we want to treat unavailable as invalid.

void InitializeFrom(
    clang::Sema& S,
    const clang::InitializedEntity& Entity,
    const clang::InitializationKind& Kind,
    clang::MultiExprArg Args,
    bool TopLevelOfInitList,
    bool TreatUnavailableAsInvalid)

Declared at: clang/include/clang/Sema/Initialization.h:1161

Parameters

clang::Sema& S
const clang::InitializedEntity& Entity
const clang::InitializationKind& Kind
clang::MultiExprArg Args
bool TopLevelOfInitList
bool TreatUnavailableAsInvalid

clang::ExprResult Perform(
    clang::Sema& S,
    const clang::InitializedEntity& Entity,
    const clang::InitializationKind& Kind,
    clang::MultiExprArg Args,
    clang::QualType* ResultType = nullptr)

Description

Perform the actual initialization of the given entity based on the computed initialization sequence.

Declared at: clang/include/clang/Sema/Initialization.h:1188

Parameters

clang::Sema& S
the semantic analysis object.
const clang::InitializedEntity& Entity
the entity being initialized.
const clang::InitializationKind& Kind
the kind of initialization being performed.
clang::MultiExprArg Args
the argument(s) provided for initialization, ownership of which is transferred into the routine.
clang::QualType* ResultType = nullptr
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.

Returns

an expression that performs the actual object initialization, if the initialization is well-formed. Otherwise, emits diagnostics and returns an invalid expression.

void PrintInitLocationNote(
    clang::Sema& S,
    const clang::InitializedEntity& Entity)

Description

Prints a follow-up note that highlights the location of the initialized entity, if it's remote.

Declared at: clang/include/clang/Sema/Initialization.h:1133

Parameters

clang::Sema& S
const clang::InitializedEntity& Entity

void RewrapReferenceInitList(
    clang::QualType T,
    clang::InitListExpr* Syntactic)

Description

Add steps to unwrap a initializer list for a reference around a single element and rewrap it at the end.

Declared at: clang/include/clang/Sema/Initialization.h:1362

Parameters

clang::QualType T
clang::InitListExpr* Syntactic

void SetFailed(
    clang::InitializationSequence::FailureKind
        Failure)

Description

Note that this initialization sequence failed.

Declared at: clang/include/clang/Sema/Initialization.h:1365

Parameters

clang::InitializationSequence::FailureKind Failure

void SetOverloadFailure(
    clang::InitializationSequence::FailureKind
        Failure,
    clang::OverloadingResult Result)

Description

Note that this initialization sequence failed due to failed overload resolution.

Declared at: clang/include/clang/Sema/Initialization.h:1374

Parameters

clang::InitializationSequence::FailureKind Failure
clang::OverloadingResult Result

void SetZeroInitializationFixit(
    const std::string& Fixit,
    clang::SourceLocation L)

Description

Call for initializations are invalid but that would be valid zero initialzations if Fixit was applied.

Declared at: clang/include/clang/Sema/Initialization.h:1125

Parameters

const std::string& Fixit
clang::SourceLocation L

void dump() const

Description

Dump a representation of this initialization sequence to standard error, for debugging purposes.

Declared at: clang/include/clang/Sema/Initialization.h:1407

void dump(llvm::raw_ostream& OS) const

Description

Dump a representation of this initialization sequence to the given stream, for debugging purposes.

Declared at: clang/include/clang/Sema/Initialization.h:1403

Parameters

llvm::raw_ostream& OS

clang::OverloadCandidateSet&
getFailedCandidateSet()

Description

Retrieve a reference to the candidate set when overload resolution fails.

Declared at: clang/include/clang/Sema/Initialization.h:1378

clang::OverloadingResult getFailedOverloadResult()
    const

Description

Get the overloading result, for when the initialization sequence failed due to a bad overload.

Declared at: clang/include/clang/Sema/Initialization.h:1384

clang::InitializationSequence::FailureKind
getFailureKind() const

Description

Determine why initialization failed.

Declared at: clang/include/clang/Sema/Initialization.h:1396

enum SequenceKind getKind() const

Description

Determine the kind of initialization sequence computed.

Declared at: clang/include/clang/Sema/Initialization.h:1204

bool isAmbiguous() const

Description

Determine whether this initialization failed due to an ambiguity.

Declared at: clang/include/clang/Sema/Initialization.h:1229

bool isConstructorInitialization() const

Description

Determine whether this initialization is direct call to a constructor.

Declared at: clang/include/clang/Sema/Initialization.h:1233

bool isDirectReferenceBinding() const

Description

Determine whether this initialization is a direct reference binding (C++ [dcl.init.ref]).

Declared at: clang/include/clang/Sema/Initialization.h:1226

bool operator bool() const

Description

Determine whether the initialization sequence is valid.

Declared at: clang/include/clang/Sema/Initialization.h:1210

void setIncompleteTypeFailure(
    clang::QualType IncompleteType)

Description

Note that this initialization sequence failed due to an incomplete type.

Declared at: clang/include/clang/Sema/Initialization.h:1390

Parameters

clang::QualType IncompleteType

void setSequenceKind(enum SequenceKind SK)

Description

Set the kind of sequence computed.

Declared at: clang/include/clang/Sema/Initialization.h:1207

Parameters

enum SequenceKind SK

clang::InitializationSequence::step_iterator
step_begin() const

Declared at: clang/include/clang/Sema/Initialization.h:1217

clang::InitializationSequence::step_iterator
step_end() const

Declared at: clang/include/clang/Sema/Initialization.h:1218

clang::InitializationSequence::step_range steps()
    const

Declared at: clang/include/clang/Sema/Initialization.h:1222

~InitializationSequence()

Declared at: clang/include/clang/Sema/Initialization.h:1165