diff options
Diffstat (limited to 'clang/lib/Sema/SemaOverload.cpp')
-rw-r--r-- | clang/lib/Sema/SemaOverload.cpp | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index 54b05478108..d2fd0d8511b 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -509,11 +509,8 @@ void UserDefinedConversionSequence::DebugPrint() const { /// error. Useful for debugging overloading issues. void ImplicitConversionSequence::DebugPrint() const { raw_ostream &OS = llvm::errs(); - if (isListInitializationSequence()) { - OS << "List-initialization sequence: "; - if (isStdInitializerListElement()) - OS << "Worst std::initializer_list element conversion: "; - } + if (isStdInitializerListElement()) + OS << "Worst std::initializer_list element conversion: "; switch (ConversionKind) { case StandardConversion: OS << "Standard conversion: "; @@ -3321,9 +3318,7 @@ CompareImplicitConversionSequences(Sema &S, // list-initialization sequence L2 if L1 converts to std::initializer_list<X> // for some X and L2 does not. if (Result == ImplicitConversionSequence::Indistinguishable && - !ICS1.isBad() && - ICS1.isListInitializationSequence() && - ICS2.isListInitializationSequence()) { + !ICS1.isBad()) { if (ICS1.isStdInitializerListElement() && !ICS2.isStdInitializerListElement()) return ImplicitConversionSequence::Better; @@ -4402,7 +4397,6 @@ TryListConversion(Sema &S, InitListExpr *From, QualType ToType, ImplicitConversionSequence Result; Result.setBad(BadConversionSequence::no_conversion, From, ToType); - Result.setListInitializationSequence(); // We need a complete type for what follows. Incomplete types can never be // initialized from init lists. @@ -4448,7 +4442,6 @@ TryListConversion(Sema &S, InitListExpr *From, QualType ToType, Result.Standard.setAllToTypes(ToType); } - Result.setListInitializationSequence(); Result.setStdInitializerListElement(toStdInitializerList); return Result; } @@ -4461,12 +4454,10 @@ TryListConversion(Sema &S, InitListExpr *From, QualType ToType, // implicit conversion sequence is a user-defined conversion sequence. if (ToType->isRecordType() && !ToType->isAggregateType()) { // This function can deal with initializer lists. - Result = TryUserDefinedConversion(S, From, ToType, SuppressUserConversions, - /*AllowExplicit=*/false, - InOverloadResolution, /*CStyle=*/false, - AllowObjCWritebackConversion); - Result.setListInitializationSequence(); - return Result; + return TryUserDefinedConversion(S, From, ToType, SuppressUserConversions, + /*AllowExplicit=*/false, + InOverloadResolution, /*CStyle=*/false, + AllowObjCWritebackConversion); } // C++11 [over.ics.list]p4: @@ -4530,11 +4521,9 @@ TryListConversion(Sema &S, InitListExpr *From, QualType ToType, dummy2, dummy3); if (RefRelationship >= Sema::Ref_Related) { - Result = TryReferenceInit(S, Init, ToType, /*FIXME*/From->getLocStart(), - SuppressUserConversions, - /*AllowExplicit=*/false); - Result.setListInitializationSequence(); - return Result; + return TryReferenceInit(S, Init, ToType, /*FIXME*/From->getLocStart(), + SuppressUserConversions, + /*AllowExplicit=*/false); } } @@ -4585,7 +4574,6 @@ TryListConversion(Sema &S, InitListExpr *From, QualType ToType, Result.Standard.setFromType(ToType); Result.Standard.setAllToTypes(ToType); } - Result.setListInitializationSequence(); return Result; } |