diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2009-10-09 17:09:58 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2009-10-09 17:09:58 +0000 |
commit | ad3607da8ad626c408d8e6d804bf1359977b200a (patch) | |
tree | 673756fd5fe06ee94f6189146c71e7b73a62a087 /lib | |
parent | 5ecd5399421799892a2b3dc5456e816bd6d827ab (diff) |
Produce good looking diagnostics on ambiguous built-in operators.
Now we produce things like:
bug1.cpp:21:11: error: use of overloaded operator '->*' is ambiguous
int i = c->*pmf; // expected-error {{use of overloaded operator '->*' is ambiguous}} \
~^ ~~~
bug1.cpp:21:11: note: built-in candidate operator ->* ('struct A volatile *', 'int const struct A::*')
bug1.cpp:21:11: note: built-in candidate operator ->* ('struct A volatile *', 'int restrict struct A::*')
...
Still need to look at an issue (indicated as FIXME in the test case).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83650 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Sema/SemaOverload.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp index f710f1e2d5..096a0bc031 100644 --- a/lib/Sema/SemaOverload.cpp +++ b/lib/Sema/SemaOverload.cpp @@ -4045,14 +4045,12 @@ Sema::PrintOverloadCandidates(OverloadCandidateSet& CandidateSet, Diag(Cand->Surrogate->getLocation(), diag::err_ovl_surrogate_cand) << FnType; } else if (OnlyViable) { - QualType FnType - = Context.getFunctionType(Cand->BuiltinTypes.ResultTy, - Cand->BuiltinTypes.ParamTypes, - Cand->Conversions.size(), - false, 0); - - Diag(OpLoc, diag::err_ovl_builtin_candidate) << FnType << - BinaryOperator::getOpcodeStr(Opc); + assert(Cand->Conversions.size() == 2 && + "builtin-binary-operator-not-binary"); + Diag(OpLoc, diag::err_ovl_builtin_candidate) + << Cand->BuiltinTypes.ParamTypes[0] + << Cand->BuiltinTypes.ParamTypes[1] + << BinaryOperator::getOpcodeStr(Opc); } } } |