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> 2009-10-14 Larry Evans <cppljevans@suddenlink.net>
PR c++/40092 PR c++/40092
......
...@@ -2718,6 +2718,8 @@ print_z_candidate (const char *msgstr, struct z_candidate *candidate) ...@@ -2718,6 +2718,8 @@ print_z_candidate (const char *msgstr, struct z_candidate *candidate)
inform (input_location, "%s %T <conversion>", msgstr, candidate->fn); inform (input_location, "%s %T <conversion>", msgstr, candidate->fn);
else if (candidate->viable == -1) else if (candidate->viable == -1)
inform (input_location, "%s %+#D <near match>", msgstr, candidate->fn); 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 else
inform (input_location, "%s %+#D", msgstr, candidate->fn); inform (input_location, "%s %+#D", msgstr, candidate->fn);
} }
...@@ -2729,6 +2731,23 @@ print_z_candidates (struct z_candidate *candidates) ...@@ -2729,6 +2731,23 @@ print_z_candidates (struct z_candidate *candidates)
struct z_candidate *cand1; struct z_candidate *cand1;
struct z_candidate **cand2; 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 /* There may be duplicates in the set of candidates. We put off
checking this condition as long as possible, since we have no way 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 to eliminate duplicates from a set of functions in less than n^2
...@@ -2751,9 +2770,6 @@ print_z_candidates (struct z_candidate *candidates) ...@@ -2751,9 +2770,6 @@ print_z_candidates (struct z_candidate *candidates)
} }
} }
if (!candidates)
return;
str = _("candidates are:"); str = _("candidates are:");
print_z_candidate (str, candidates); print_z_candidate (str, candidates);
if (candidates->next) 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> 2009-10-14 Larry Evans <cppljevans@suddenlink.net>
* g++.dg/cpp0x/vt-40092.C: New. * 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> 2009-10-13 Paolo Carlini <paolo.carlini@oracle.com>
* include/parallel/for_each_selectors.h: Minor uglification and * include/parallel/for_each_selectors.h: Minor uglification and
......
...@@ -49,10 +49,13 @@ test03() ...@@ -49,10 +49,13 @@ test03()
std::unique_ptr<int[2]> p2 = p1; std::unique_ptr<int[2]> p2 = p1;
} }
// { dg-error "deleted function" "" { target *-*-* } 358 }
// { dg-error "used here" "" { target *-*-* } 42 } // { dg-error "used here" "" { target *-*-* } 42 }
// { dg-error "no matching" "" { target *-*-* } 48 } // { dg-error "no matching" "" { target *-*-* } 48 }
// { dg-error "used here" "" { target *-*-* } 49 } // { dg-warning "candidates are" "" { target *-*-* } 119 }
// { dg-error "candidates are" "" { target *-*-* } 213 } // { 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 *-*-* } 213 }
// { dg-error "deleted function" "" { target *-*-* } 358 } // { dg-error "used here" "" { target *-*-* } 49 }
// { dg-excess-errors "note" }
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