Hi,
while looking into an old issue I noticed that in one place we don't
check the return value of permerror. I'm going to commit the below as
obvious.
Thanks,
Paolo.
//////////////////
2014-07-15 Paolo Carlini <paolo.carl...@oracle.com>
* call.c (convert_like_real): Call print_z_candidate and inform only
if permerror returns true.
Index: call.c
===================================================================
--- call.c (revision 212545)
+++ call.c (working copy)
@@ -6076,9 +6076,11 @@ convert_like_real (conversion *convs, tree expr, t
{
if (t->kind == ck_user && t->cand->reason)
{
- permerror (loc, "invalid user-defined conversion "
- "from %qT to %qT", TREE_TYPE (expr), totype);
- print_z_candidate (loc, "candidate is:", t->cand);
+ complained = permerror (loc, "invalid user-defined conversion "
+ "from %qT to %qT", TREE_TYPE (expr),
+ totype);
+ if (complained)
+ print_z_candidate (loc, "candidate is:", t->cand);
expr = convert_like_real (t, expr, fn, argnum, 1,
/*issue_conversion_warnings=*/false,
/*c_cast_p=*/false,
@@ -6089,7 +6091,7 @@ convert_like_real (conversion *convs, tree expr, t
complain);
else
expr = cp_convert (totype, expr, complain);
- if (fn)
+ if (complained && fn)
inform (DECL_SOURCE_LOCATION (fn),
" initializing argument %P of %qD", argnum, fn);
return expr;