diff options
author | Larisse Voufo <lvoufo@google.com> | 2013-06-27 01:50:25 +0000 |
---|---|---|
committer | Larisse Voufo <lvoufo@google.com> | 2013-06-27 01:50:25 +0000 |
commit | 64cf3efd47bc79b661c93cea5a7a3fa60bba16d8 (patch) | |
tree | 120a9ca2c415aa7ceebf117d24a7789926f0bc28 /clang/lib/Sema/SemaOverload.cpp | |
parent | c76e60b012dde7b7e577ecd96f6de77b2313e639 (diff) | |
download | bcm5719-llvm-64cf3efd47bc79b661c93cea5a7a3fa60bba16d8.tar.gz bcm5719-llvm-64cf3efd47bc79b661c93cea5a7a3fa60bba16d8.zip |
Fix a conversion to incomplete type bug -- The error message now specifically states that the type is incomplete and points to the forward declaration of the incomplete type.
llvm-svn: 185056
Diffstat (limited to 'clang/lib/Sema/SemaOverload.cpp')
-rw-r--r-- | clang/lib/Sema/SemaOverload.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index d4d08b4bff8..b1fe76a8f61 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -3231,10 +3231,15 @@ Sema::DiagnoseMultipleUserDefinedConversion(Expr *From, QualType ToType) { Diag(From->getLocStart(), diag::err_typecheck_ambiguous_condition) << From->getType() << ToType << From->getSourceRange(); - else if (OvResult == OR_No_Viable_Function && !CandidateSet.empty()) - Diag(From->getLocStart(), - diag::err_typecheck_nonviable_condition) - << From->getType() << ToType << From->getSourceRange(); + else if (OvResult == OR_No_Viable_Function && !CandidateSet.empty()) { + if (!ToType->isIncompleteType() || + !RequireCompleteType(From->getLocStart(), ToType, + diag::err_typecheck_nonviable_condition_incomplete, + From->getType(), From->getSourceRange())) + Diag(From->getLocStart(), + diag::err_typecheck_nonviable_condition) + << From->getType() << From->getSourceRange() << ToType; + } else return false; CandidateSet.NoteCandidates(*this, OCD_AllCandidates, From); |