diff options
author | Douglas Gregor <dgregor@apple.com> | 2008-10-29 02:00:59 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2008-10-29 02:00:59 +0000 |
commit | 15da57e66cade0c2cab752f925e838b22daadafc (patch) | |
tree | 11b61276aa4a94716bb8080f667b33dbb5d16f98 /lib/Sema/SemaOverload.cpp | |
parent | ce63911d6bdd795f63365723d4cdaa6998529e1e (diff) |
Tweak Sema::CheckReferenceInit so that it (optionally) computes an
ImplicitConversionSequence and, when doing so, following the specific
rules of [over.best.ics].
The computation of the implicit conversion sequences implements C++
[over.ics.ref], but we do not (yet) have ranking for implicit
conversion sequences that use reference binding.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58357 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaOverload.cpp')
-rw-r--r-- | lib/Sema/SemaOverload.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp index 8e765485b1..551f61a56e 100644 --- a/lib/Sema/SemaOverload.cpp +++ b/lib/Sema/SemaOverload.cpp @@ -39,6 +39,7 @@ GetConversionCategory(ImplicitConversionKind Kind) { ICC_Conversion, ICC_Conversion, ICC_Conversion, + ICC_Conversion, ICC_Conversion }; return Category[(int)Kind]; @@ -61,6 +62,7 @@ ImplicitConversionRank GetConversionRank(ImplicitConversionKind Kind) { ICR_Conversion, ICR_Conversion, ICR_Conversion, + ICR_Conversion, ICR_Conversion }; return Rank[(int)Kind]; @@ -82,7 +84,8 @@ const char* GetImplicitConversionName(ImplicitConversionKind Kind) { "Floating-integral conversion", "Pointer conversion", "Pointer-to-member conversion", - "Boolean conversion" + "Boolean conversion", + "Derived-to-base conversion" }; return Name[Kind]; } @@ -1066,10 +1069,7 @@ Sema::TryCopyInitialization(Expr *From, QualType ToType) { return ICS; } else if (ToType->isReferenceType()) { ImplicitConversionSequence ICS; - if (CheckReferenceInit(From, ToType, /*Complain=*/false)) - ICS.ConversionKind = ImplicitConversionSequence::BadConversion; - else - ICS.ConversionKind = ImplicitConversionSequence::StandardConversion; + CheckReferenceInit(From, ToType, &ICS); return ICS; } else { return TryImplicitConversion(From, ToType); |