call.c (joust): Don't call inform for a permerror returning false.

2013-03-28  Paolo Carlini  <paolo.carlini@oracle.com>

	* call.c (joust): Don't call inform for a permerror returning false.
	* parser.c (cp_parser_check_class_key): Likewise.
	* pt.c (tsubst_copy_and_build): Likewise.

From-SVN: r197190
This commit is contained in:
Paolo Carlini 2013-03-28 10:00:05 +00:00 committed by Paolo Carlini
parent a64b9c261d
commit 129677c1cf
4 changed files with 44 additions and 34 deletions

View File

@ -1,3 +1,9 @@
2013-03-28 Paolo Carlini <paolo.carlini@oracle.com>
* call.c (joust): Don't call inform for a permerror returning false.
* parser.c (cp_parser_check_class_key): Likewise.
* pt.c (tsubst_copy_and_build): Likewise.
2013-03-27 Jason Merrill <jason@redhat.com>
PR c++/56749

View File

@ -8650,13 +8650,15 @@ joust (struct z_candidate *cand1, struct z_candidate *cand2, bool warn,
{
if (complain & tf_error)
{
permerror (input_location,
"default argument mismatch in "
"overload resolution");
inform (input_location,
" candidate 1: %q+#F", cand1->fn);
inform (input_location,
" candidate 2: %q+#F", cand2->fn);
if (permerror (input_location,
"default argument mismatch in "
"overload resolution"))
{
inform (input_location,
" candidate 1: %q+#F", cand1->fn);
inform (input_location,
" candidate 2: %q+#F", cand2->fn);
}
}
else
return 0;

View File

@ -23363,12 +23363,12 @@ cp_parser_check_class_key (enum tag_types class_key, tree type)
return;
if ((TREE_CODE (type) == UNION_TYPE) != (class_key == union_type))
{
permerror (input_location, "%qs tag used in naming %q#T",
class_key == union_type ? "union"
: class_key == record_type ? "struct" : "class",
type);
inform (DECL_SOURCE_LOCATION (TYPE_NAME (type)),
"%q#T was previously declared here", type);
if (permerror (input_location, "%qs tag used in naming %q#T",
class_key == union_type ? "union"
: class_key == record_type ? "struct" : "class",
type))
inform (DECL_SOURCE_LOCATION (TYPE_NAME (type)),
"%q#T was previously declared here", type);
}
}

View File

@ -14019,30 +14019,32 @@ tsubst_copy_and_build (tree t,
fn = TREE_OPERAND (fn, 1);
if (is_overloaded_fn (fn))
fn = get_first_fn (fn);
permerror (EXPR_LOC_OR_HERE (t),
"%qD was not declared in this scope, "
"and no declarations were found by "
"argument-dependent lookup at the point "
"of instantiation", function);
if (!DECL_P (fn))
/* Can't say anything more. */;
else if (DECL_CLASS_SCOPE_P (fn))
if (permerror (EXPR_LOC_OR_HERE (t),
"%qD was not declared in this scope, "
"and no declarations were found by "
"argument-dependent lookup at the point "
"of instantiation", function))
{
inform (EXPR_LOC_OR_HERE (t),
"declarations in dependent base %qT are "
"not found by unqualified lookup",
DECL_CLASS_CONTEXT (fn));
if (current_class_ptr)
inform (EXPR_LOC_OR_HERE (t),
"use %<this->%D%> instead", function);
if (!DECL_P (fn))
/* Can't say anything more. */;
else if (DECL_CLASS_SCOPE_P (fn))
{
inform (EXPR_LOC_OR_HERE (t),
"declarations in dependent base %qT are "
"not found by unqualified lookup",
DECL_CLASS_CONTEXT (fn));
if (current_class_ptr)
inform (EXPR_LOC_OR_HERE (t),
"use %<this->%D%> instead", function);
else
inform (EXPR_LOC_OR_HERE (t),
"use %<%T::%D%> instead",
current_class_name, function);
}
else
inform (EXPR_LOC_OR_HERE (t),
"use %<%T::%D%> instead",
current_class_name, function);
inform (0, "%q+D declared here, later in the "
"translation unit", fn);
}
else
inform (0, "%q+D declared here, later in the "
"translation unit", fn);
function = unq;
}
}