From: Paolo Carlini Date: Wed, 19 Oct 2011 22:45:58 +0000 (+0000) Subject: re PR c++/13657 (Error message incorrectly describes return type as argument type) X-Git-Tag: releases/gcc-4.7.0~2964 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c3c1f2b7bdce26985fd0e5aa4cefb59e6e0e3150;p=thirdparty%2Fgcc.git re PR c++/13657 (Error message incorrectly describes return type as argument type) /cp 2011-10-19 Paolo Carlini PR c++/13657 * class.c (instantiate_type): Fix error message. /testsuite 2011-10-19 Paolo Carlini PR c++/13657 * g++.dg/parse/error42.C: New. * g++.old-deja/g++.other/ptrmem7.C: Tweak dg-errors. From-SVN: r180228 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8e9bb4a841df..a32a7b9fca0d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2011-10-19 Paolo Carlini + + PR c++/13657 + * class.c (instantiate_type): Fix error message. + 2011-10-19 Jason Merrill PR c++/50793 diff --git a/gcc/cp/class.c b/gcc/cp/class.c index c8efc7e3b71f..ee6ca049d3f2 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -6867,8 +6867,8 @@ instantiate_type (tree lhstype, tree rhs, tsubst_flags_t flags) else { if (flags & tf_error) - error ("argument of type %qT does not match %qT", - TREE_TYPE (rhs), lhstype); + error ("cannot convert %qE from type %qT to type %qT", + rhs, TREE_TYPE (rhs), lhstype); return error_mark_node; } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 173f195f2766..709fae4848c4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2011-10-19 Paolo Carlini + + PR c++/13657 + * g++.dg/parse/error42.C: New. + * g++.old-deja/g++.other/ptrmem7.C: Tweak dg-errors. + 2011-10-19 Jason Merrill PR c++/50793 diff --git a/gcc/testsuite/g++.dg/parse/error42.C b/gcc/testsuite/g++.dg/parse/error42.C new file mode 100644 index 000000000000..5e4c5bbdd2dc --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/error42.C @@ -0,0 +1,4 @@ +// PR c++/13657 + +class C { public: int (*f())(); int bar(); }; +int (*C::f())() { return C::bar; } // { dg-error "cannot convert 'C::bar'" } diff --git a/gcc/testsuite/g++.old-deja/g++.other/ptrmem7.C b/gcc/testsuite/g++.old-deja/g++.other/ptrmem7.C index b04f7e2657c4..987c0445a674 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/ptrmem7.C +++ b/gcc/testsuite/g++.old-deja/g++.other/ptrmem7.C @@ -31,9 +31,9 @@ void A::foo () int (*ptr8) (short) = ns; int (A::*ptr11) (int) = &A::single; - int (A::*ptr12) (int) = A::single; // { dg-error "match" } + int (A::*ptr12) (int) = A::single; // { dg-error "cannot convert" } int (A::*ptr13) (int) = &single; // { dg-error "pointer to member" } - int (A::*ptr14) (int) = single; // { dg-error "match" } + int (A::*ptr14) (int) = single; // { dg-error "cannot convert" } int (A::*ptr20) (int) = &(A::ns); // { dg-error "pointer to member" } int (A::*ptr21) (int) = &(A::single); // { dg-error "pointer to member" }