]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/13657 (Error message incorrectly describes return type as argument type)
authorPaolo Carlini <paolo.carlini@oracle.com>
Wed, 19 Oct 2011 22:45:58 +0000 (22:45 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Wed, 19 Oct 2011 22:45:58 +0000 (22:45 +0000)
/cp
2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/13657
* class.c (instantiate_type): Fix error message.

/testsuite
2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/13657
* g++.dg/parse/error42.C: New.
* g++.old-deja/g++.other/ptrmem7.C: Tweak dg-errors.

From-SVN: r180228

gcc/cp/ChangeLog
gcc/cp/class.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/parse/error42.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.other/ptrmem7.C

index 8e9bb4a841df9b7a6922e20ac185f858d71a8b62..a32a7b9fca0db8ad26aa8083f2399b5a746236c8 100644 (file)
@@ -1,3 +1,8 @@
+2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/13657
+       * class.c (instantiate_type): Fix error message.
+
 2011-10-19  Jason Merrill  <jason@redhat.com>
 
        PR c++/50793
index c8efc7e3b71f96b7df601ec11a5069e44d49009e..ee6ca049d3f2d3a76273a5c69290e39d540a12be 100644 (file)
@@ -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;
        }
     }
index 173f195f2766821092ac7f4f4a3fbf6b5e05a4b5..709fae4848c453929a92e10ce07f877dd9957b83 100644 (file)
@@ -1,3 +1,9 @@
+2011-10-19  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/13657
+       * g++.dg/parse/error42.C: New.
+       * g++.old-deja/g++.other/ptrmem7.C: Tweak dg-errors.
+
 2011-10-19  Jason Merrill  <jason@redhat.com>
 
        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 (file)
index 0000000..5e4c5bb
--- /dev/null
@@ -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'" }
index b04f7e2657c48a4567f4d2dfd792031842413c04..987c0445a674269c56ac173eb96c2353c000c3f7 100644 (file)
@@ -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" }