re PR c++/49117 (4.5 -> 4.6: user-unfriendly change in "invalid conversion" error...
authorJason Merrill <jason@redhat.com>
Tue, 14 Jun 2011 18:16:06 +0000 (14:16 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 14 Jun 2011 18:16:06 +0000 (14:16 -0400)
PR c++/49117
* call.c (perform_implicit_conversion_flags): Print source type as
well as expression.

From-SVN: r175044

gcc/cp/ChangeLog
gcc/cp/call.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/error23.C
gcc/testsuite/g++.dg/other/error32.C

index 5970440731fc468be978dc8b240df83d4abd7a5c..0fc8eab5e8bef7ea6ecf5cb02dfc0cb620dd645f 100644 (file)
@@ -1,5 +1,9 @@
 2011-06-14  Jason Merrill  <jason@redhat.com>
 
+       PR c++/49117
+       * call.c (perform_implicit_conversion_flags): Print source type as
+       well as expression.
+
        PR c++/49389
        * typeck2.c (build_m_component_ref): Preserve rvalueness.
 
index 4ee0eafe81dc6d312a762271aec41c7c2a4c815b..b43d078dedd7ec481b3d3d60b50e2b9fe7593beb 100644 (file)
@@ -8296,7 +8296,8 @@ perform_implicit_conversion_flags (tree type, tree expr, tsubst_flags_t complain
          else if (invalid_nonstatic_memfn_p (expr, complain))
            /* We gave an error.  */;
          else
-           error ("could not convert %qE to %qT", expr, type);
+           error ("could not convert %qE from %qT to %qT", expr,
+                  TREE_TYPE (expr), type);
        }
       expr = error_mark_node;
     }
index 1ca37e3490d7f741ce05b2cb148907e276e56db0..e32f53ea3ac515adf6c38221ffb86354b2fe28e7 100644 (file)
@@ -1,5 +1,8 @@
 2011-06-14  Jason Merrill  <jason@redhat.com>
 
+       * g++.dg/other/error23.C: Adjust error message.
+       * g++.dg/other/error32.C: Likewise.
+
        PR c++/49389
        * g++.dg/cpp0x/rv-dotstar.C: New.
 
index 0ff1915cf2ce170b7f4efa1161ce3d973a411c23..959fe4075e6f8ebb500770db26e6400fb2c28def 100644 (file)
@@ -2,4 +2,4 @@
 // { dg-do compile }
 
 int v __attribute ((vector_size (8)));
-bool b = !(v - v);     // { dg-error "could not convert .\\(__vector.2. int\\)\\{0, 0\\}. to .bool.|in argument to unary" }
+bool b = !(v - v);     // { dg-error "could not convert .\\(__vector.2. int\\)\\{0, 0\\}. from .__vector.2. int. to .bool.|in argument to unary" }
index 35c64c4eab9954ebfaf88394032a81c7c122de96..56d3b7aec8b1d5e8e4b32ee5fa051cceb5062269 100644 (file)
@@ -3,6 +3,6 @@
 
 void foo()
 {
-  if (throw 0) // { dg-error "could not convert .\\<throw-expression\\>. to .bool." }
+  if (throw 0) // { dg-error "could not convert .\\<throw-expression\\>. from .void. to .bool." }
     ;
 }