diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-01-27 23:23:39 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-01-27 23:23:39 +0000 |
| commit | 1bbaba874633ed28644b2d6784c91d73874ece8b (patch) | |
| tree | 1d4b985f4cda8f2aa783c38d687d0b347f99fdb0 /clang/lib/Sema | |
| parent | 605f2df106ad30f0127848630b69a0fb6375e8e7 (diff) | |
| download | bcm5719-llvm-1bbaba874633ed28644b2d6784c91d73874ece8b.tar.gz bcm5719-llvm-1bbaba874633ed28644b2d6784c91d73874ece8b.zip | |
Cleanups, and add some FIXMEs. No functional change.
llvm-svn: 227267
Diffstat (limited to 'clang/lib/Sema')
| -rw-r--r-- | clang/lib/Sema/SemaOverload.cpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index 28f1231bd57..d364f8d1154 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -1134,16 +1134,14 @@ TryUserDefinedConversion(Sema &S, Expr *From, QualType ToType, break; case OR_Ambiguous: - if (!SuppressUserConversions) { - ICS.setAmbiguous(); - ICS.Ambiguous.setFromType(From->getType()); - ICS.Ambiguous.setToType(ToType); - for (OverloadCandidateSet::iterator Cand = Conversions.begin(); - Cand != Conversions.end(); ++Cand) - if (Cand->Viable) - ICS.Ambiguous.addConversion(Cand->Function); - break; - } + ICS.setAmbiguous(); + ICS.Ambiguous.setFromType(From->getType()); + ICS.Ambiguous.setToType(ToType); + for (OverloadCandidateSet::iterator Cand = Conversions.begin(); + Cand != Conversions.end(); ++Cand) + if (Cand->Viable) + ICS.Ambiguous.addConversion(Cand->Function); + break; // Fall through. case OR_No_Viable_Function: @@ -4479,7 +4477,9 @@ TryListConversion(Sema &S, InitListExpr *From, QualType ToType, InOverloadResolution, AllowObjCWritebackConversion); } - if (S.Context.getAsArrayType(ToType)) { + // FIXME: Check the other conditions here: array of character type, + // initializer is a string literal. + if (ToType->isArrayType()) { InitializedEntity Entity = InitializedEntity::InitializeParameter(S.Context, ToType, /*Consumed=*/false); @@ -4506,6 +4506,8 @@ TryListConversion(Sema &S, InitListExpr *From, QualType ToType, // default-constructible, and if all the elements of the initializer list // can be implicitly converted to X, the implicit conversion sequence is // the worst conversion necessary to convert an element of the list to X. + // + // FIXME: We're missing a lot of these checks. bool toStdInitializerList = false; QualType X; if (ToType->isArrayType()) @@ -4664,7 +4666,7 @@ TryListConversion(Sema &S, InitListExpr *From, QualType ToType, // initializer list, the implicit conversion sequence is the one // required to convert the element to the parameter type. unsigned NumInits = From->getNumInits(); - if (NumInits == 1 && !dyn_cast<InitListExpr>(From->getInit(0))) + if (NumInits == 1 && !isa<InitListExpr>(From->getInit(0))) Result = TryCopyInitialization(S, From->getInit(0), ToType, SuppressUserConversions, InOverloadResolution, |

