OSDN Git Service

/cp
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 19 Oct 2011 22:45:58 +0000 (22:45 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 19 Oct 2011 22:45:58 +0000 (22:45 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180228 138bc75d-0d04-0410-961f-82ee72b054a4

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 8e9bb4a..a32a7b9 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 c8efc7e..ee6ca04 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 173f195..709fae4 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 b04f7e2..987c044 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" }