/// \brief Determine whether the initialization sequence is valid.
operator bool() const { return SequenceKind != FailedSequence; }
+
+ /// \brief Determine whether the initialization sequence is invalid.
+ bool Failed() const { return SequenceKind == FailedSequence; }
typedef llvm::SmallVector<Step, 4>::const_iterator step_iterator;
step_iterator step_begin() const { return Steps.begin(); }
(CT == CT_CStyle || CT == CT_Functional));
InitializationSequence sequence(S, entity, initKind, &src, 1);
- assert(sequence.getKind() == InitializationSequence::FailedSequence &&
- "initialization succeeded on second try?");
+ assert(sequence.Failed() && "initialization succeeded on second try?");
switch (sequence.getFailureKind()) {
default: return false;
// On the other hand, if we're checking a C-style cast, we've still got
// the reinterpret_cast way.
- if (InitSeq.getKind() == InitializationSequence::FailedSequence &&
- (CStyle || !DestType->isReferenceType()))
+ if (InitSeq.Failed() && (CStyle || !DestType->isReferenceType()))
return TC_NotApplicable;
ExprResult Result
InitializationSequence InitSeq(*this, BaseEntity, Kind, 0, 0);
- if (InitSeq.getKind() == InitializationSequence::FailedSequence)
+ if (InitSeq.Failed())
return true;
}
InitializationSequence InitSeq(*this, BaseEntity, Kind, 0, 0);
- if (InitSeq.getKind() == InitializationSequence::FailedSequence)
+ if (InitSeq.Failed())
return true;
}
InitializationSequence InitSeq(*this, MemberEntity, Kind, 0, 0);
- if (InitSeq.getKind() == InitializationSequence::FailedSequence)
+ if (InitSeq.Failed())
return true;
}
InitializationSequence InitSeq(*this, BaseEntity, Kind, &Arg, 1);
- if (InitSeq.getKind() == InitializationSequence::FailedSequence)
+ if (InitSeq.Failed())
return true;
}
InitializationSequence InitSeq(*this, BaseEntity, Kind, &Arg, 1);
- if (InitSeq.getKind() == InitializationSequence::FailedSequence)
+ if (InitSeq.Failed())
return true;
}
InitializationSequence InitSeq(*this, Entities.back(), Kind, &Arg, 1);
- if (InitSeq.getKind() == InitializationSequence::FailedSequence)
+ if (InitSeq.Failed())
return true;
}
Sema::SFINAETrap SFINAE(Self, /*AccessCheckingSFINAE=*/true);
Sema::ContextRAII TUContext(Self, Self.Context.getTranslationUnitDecl());
InitializationSequence Init(Self, To, Kind, &FromPtr, 1);
- if (Init.getKind() == InitializationSequence::FailedSequence)
+ if (Init.Failed())
return false;
ExprResult Result = Init.Perform(Self, To, Kind, MultiExprArg(&FromPtr, 1));
if (TTy.isAtLeastAsQualifiedAs(FTy)) {
InitializedEntity Entity = InitializedEntity::InitializeTemporary(TTy);
InitializationSequence InitSeq(Self, Entity, Kind, &From, 1);
- if (InitSeq.getKind() != InitializationSequence::FailedSequence) {
+ if (InitSeq) {
HaveConversion = true;
return false;
}
InitializedEntity Entity = InitializedEntity::InitializeTemporary(TTy);
InitializationSequence InitSeq(Self, Entity, Kind, &From, 1);
- HaveConversion = InitSeq.getKind() != InitializationSequence::FailedSequence;
+ HaveConversion = !InitSeq.Failed();
ToType = TTy;
if (InitSeq.isAmbiguous())
return InitSeq.Diagnose(Self, Entity, Kind, &From, 1);
InitializationKind Kind = InitializationKind::CreateCopy(SourceLocation(),
SourceLocation());
InitializationSequence Seq(*this, Entity, Kind, &InitE, 1);
- return Seq.getKind() != InitializationSequence::FailedSequence;
+ return !Seq.Failed();
}
ExprResult
// parameter of the selected constructor is not an rvalue reference
// to the object's type (possibly cv-qualified), overload resolution
// is performed again, considering the object as an lvalue.
- if (Seq.getKind() != InitializationSequence::FailedSequence) {
+ if (Seq) {
for (InitializationSequence::step_iterator Step = Seq.step_begin(),
StepEnd = Seq.step_end();
Step != StepEnd; ++Step) {
- if (Step->Kind
- != InitializationSequence::SK_ConstructorInitialization)
+ if (Step->Kind != InitializationSequence::SK_ConstructorInitialization)
continue;
CXXConstructorDecl *Constructor