Commit f0673555 by Jason Merrill Committed by Jason Merrill

re PR c++/39866 ([c++0x] deleted functions not removed from "no match" error messages)

	PR c++/39866
	* call.c (print_z_candidates): Don't print deleted candidates.
	(print_z_candidate): Note deleted candidates.

From-SVN: r152752
parent 9524f710
2009-10-14 Jason Merrill <jason@redhat.com>
PR c++/39866
* call.c (print_z_candidates): Don't print deleted candidates.
(print_z_candidate): Note deleted candidates.
2009-10-14 Larry Evans <cppljevans@suddenlink.net>
PR c++/40092
......
......@@ -2718,6 +2718,8 @@ print_z_candidate (const char *msgstr, struct z_candidate *candidate)
inform (input_location, "%s %T <conversion>", msgstr, candidate->fn);
else if (candidate->viable == -1)
inform (input_location, "%s %+#D <near match>", msgstr, candidate->fn);
else if (DECL_DELETED_FN (candidate->fn))
inform (input_location, "%s %+#D <deleted>", msgstr, candidate->fn);
else
inform (input_location, "%s %+#D", msgstr, candidate->fn);
}
......@@ -2729,6 +2731,23 @@ print_z_candidates (struct z_candidate *candidates)
struct z_candidate *cand1;
struct z_candidate **cand2;
if (!candidates)
return;
/* Remove deleted candidates. */
cand1 = candidates;
for (cand2 = &cand1; *cand2; )
{
if (TREE_CODE ((*cand2)->fn) == FUNCTION_DECL
&& DECL_DELETED_FN ((*cand2)->fn))
*cand2 = (*cand2)->next;
else
cand2 = &(*cand2)->next;
}
/* ...if there are any non-deleted ones. */
if (cand1)
candidates = cand1;
/* There may be duplicates in the set of candidates. We put off
checking this condition as long as possible, since we have no way
to eliminate duplicates from a set of functions in less than n^2
......@@ -2751,9 +2770,6 @@ print_z_candidates (struct z_candidate *candidates)
}
}
if (!candidates)
return;
str = _("candidates are:");
print_z_candidate (str, candidates);
if (candidates->next)
......
2009-10-14 Jason Merrill <jason@redhat.com>
PR c++/39866
* g++.dg/cpp0x/defaulted14.C: New.
2009-10-14 Larry Evans <cppljevans@suddenlink.net>
* g++.dg/cpp0x/vt-40092.C: New.
......
// PR c++/39866
// { dg-options "-std=c++0x" }
struct A {
A& operator=(const A&) = delete; // { dg-bogus "" }
void operator=(int) {} // { dg-message "" }
void operator=(char) {} // { dg-message "" }
};
struct B {};
int main()
{
A a;
a = B(); // { dg-error "no match" }
a = 1.0; // { dg-error "ambiguous" }
}
2009-10-14 Jason Merrill <jason@redhat.com>
* testsuite/20_util/unique_ptr/assign/assign_neg.cc: Adjust expecteds.
2009-10-13 Paolo Carlini <paolo.carlini@oracle.com>
* include/parallel/for_each_selectors.h: Minor uglification and
......
......@@ -49,10 +49,13 @@ test03()
std::unique_ptr<int[2]> p2 = p1;
}
// { dg-error "deleted function" "" { target *-*-* } 358 }
// { dg-error "used here" "" { target *-*-* } 42 }
// { dg-error "no matching" "" { target *-*-* } 48 }
// { dg-error "used here" "" { target *-*-* } 49 }
// { dg-error "candidates are" "" { target *-*-* } 213 }
// { dg-warning "candidates are" "" { target *-*-* } 119 }
// { dg-warning "note" "" { target *-*-* } 112 }
// { dg-warning "note" "" { target *-*-* } 107 }
// { dg-warning "note" "" { target *-*-* } 102 }
// { dg-warning "note" "" { target *-*-* } 96 }
// { dg-error "deleted function" "" { target *-*-* } 213 }
// { dg-error "deleted function" "" { target *-*-* } 358 }
// { dg-excess-errors "note" }
// { dg-error "used here" "" { target *-*-* } 49 }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment