aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-10-09 17:09:58 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-10-09 17:09:58 +0000
commitad3607da8ad626c408d8e6d804bf1359977b200a (patch)
tree673756fd5fe06ee94f6189146c71e7b73a62a087 /lib
parent5ecd5399421799892a2b3dc5456e816bd6d827ab (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.cpp14
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);
}
}
}