OSDN Git Service

/cp
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 20 Nov 2011 22:37:54 +0000 (22:37 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 20 Nov 2011 22:37:54 +0000 (22:37 +0000)
2011-11-20  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/51230
* pt.c (unify_inconsistency): Handle non-type parameters better.
* error.c (dump_expr): Handle TEMPLATE_TEMPLATE_PARM.

/cp
2011-11-20  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/51230
* g++.dg/template/error46.C: New.

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

gcc/cp/ChangeLog
gcc/cp/error.c
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/template/error46.C [new file with mode: 0644]

index 96e4d20..1bc0e5a 100644 (file)
@@ -1,3 +1,9 @@
+2011-11-20  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/51230
+       * pt.c (unify_inconsistency): Handle non-type parameters better.
+       * error.c (dump_expr): Handle TEMPLATE_TEMPLATE_PARM.
+
 2011-11-20  Dodji Seketeli  <dodji@redhat.com>
 
        PR c++/51194
index 602cb75..4940a78 100644 (file)
@@ -2406,6 +2406,7 @@ dump_expr (tree t, int flags)
       break;
 
     case TEMPLATE_TYPE_PARM:
+    case TEMPLATE_TEMPLATE_PARM:
     case BOUND_TEMPLATE_TEMPLATE_PARM:
       dump_type (t, flags);
       break;
index 2b02fa4..f4eb1d4 100644 (file)
@@ -5501,7 +5501,7 @@ unify_inconsistency (bool explain_p, tree parm, tree first, tree second)
 {
   if (explain_p)
     inform (input_location,
-           "  deduced conflicting types for parameter %qT (%qT and %qT)",
+           "  conflicting deductions for parameter %qE (%qE and %qE)",
            parm, first, second);
   return 1;
 }
index 2a9c6d1..8b2f661 100644 (file)
@@ -1,3 +1,8 @@
+2011-11-20  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/51230
+       * g++.dg/template/error46.C: New.
+
 2011-11-20  Uros Bizjak  <ubizjak@gmail.com>
 
        PR target/51235
diff --git a/gcc/testsuite/g++.dg/template/error46.C b/gcc/testsuite/g++.dg/template/error46.C
new file mode 100644 (file)
index 0000000..0f4bdaf
--- /dev/null
@@ -0,0 +1,11 @@
+// PR c++/51230
+
+template<int> struct A {}; 
+
+template<int N> void foo(A<N>, A<N>); // { dg-message "template" }
+
+void bar()
+{
+  foo(A<0>(), A<1>()); // { dg-error "no matching" }
+}
+// { dg-message "candidate|parameter 'N' ('0' and '1')" { target *-*-* } 9 }