OSDN Git Service

PR c++/28853
authorreichelt <reichelt@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 26 Aug 2006 00:37:48 +0000 (00:37 +0000)
committerreichelt <reichelt@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 26 Aug 2006 00:37:48 +0000 (00:37 +0000)
* typeck2.c (cxx_incomplete_type_diagnostic): Handle template
template parameters.  Improve error message for template type
parameters.

* g++.dg/template/ttp21.C: New test.

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

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

index c56f756..171103b 100644 (file)
@@ -1,5 +1,10 @@
 2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
+       PR c++/28853
+       * typeck2.c (cxx_incomplete_type_diagnostic): Handle template
+       template parameters.  Improve error message for template type
+       parameters.
+
        PR c++/28852
        * cp-tree.h (grok_op_properties): Return bool instead of void.
        * decl.c (grokfndecl): Discard invalid operator declarations.
index bef448b..6d847cb 100644 (file)
@@ -403,7 +403,12 @@ cxx_incomplete_type_diagnostic (tree value, tree type, int diag_type)
       break;
 
     case TEMPLATE_TYPE_PARM:
-      p_msg ("invalid use of template type parameter");
+      p_msg ("invalid use of template type parameter %qT", type);
+      break;
+
+    case BOUND_TEMPLATE_TEMPLATE_PARM:
+      p_msg ("invalid use of template template parameter %qT",
+            TYPE_NAME (type));
       break;
 
     case TYPENAME_TYPE:
index 8fa3f7f..39d2fc8 100644 (file)
@@ -1,5 +1,8 @@
 2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
+       PR c++/28853
+       * g++.dg/template/ttp21.C: New test.
+
        PR c++/28852
        * g++.dg/other/operator1.C: Add error-marker.
        * g++.dg/other/operator2.C: New test.
diff --git a/gcc/testsuite/g++.dg/template/ttp21.C b/gcc/testsuite/g++.dg/template/ttp21.C
new file mode 100644 (file)
index 0000000..f0bda99
--- /dev/null
@@ -0,0 +1,5 @@
+// PR c++/28853
+// { dg-do compile }
+
+template<template<int> class A>
+int A<0>::i;  // { dg-error "template template parameter" }