diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-09-06 22:30:28 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-09-06 22:30:28 +0000 |
commit | a93f1028a07a9c916e7fa58c6f0ebbd6aba34cd4 (patch) | |
tree | 536797a1df99fbabe75761592cf336f4c145ed2f /clang/lib/Sema/SemaOverload.cpp | |
parent | 65ec930557e8bc31d7634b241a132f9127fdc5a5 (diff) | |
download | bcm5719-llvm-a93f1028a07a9c916e7fa58c6f0ebbd6aba34cd4.tar.gz bcm5719-llvm-a93f1028a07a9c916e7fa58c6f0ebbd6aba34cd4.zip |
Remove error-prone 'list initialization' flag from an implicit conversion
sequence. All that matters here is whether we're doing the
std::initializer_list special case thing.
llvm-svn: 190213
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; } |