aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGabriel Dos Reis <gdr@integrable-solutions.net>2003-07-16 01:43:26 +0000
committerGabriel Dos Reis <gdr@gcc.gnu.org>2003-07-16 01:43:26 +0000
commitc61dce3a814a535c2d8c0ce1b8d7dd7e476116f8 (patch)
tree4b7e3fdd7612ab3ac44cd07678c0a6d2360afe09 /gcc
parentb828d12414d656edc43ee755448eb8116bfd13a3 (diff)
downloadgcc-c61dce3a814a535c2d8c0ce1b8d7dd7e476116f8.zip
gcc-c61dce3a814a535c2d8c0ce1b8d7dd7e476116f8.tar.gz
gcc-c61dce3a814a535c2d8c0ce1b8d7dd7e476116f8.tar.bz2
re PR c++/10903 ([3.3 only] g++ says: "error: object ``type_decl' not supported by dump_expr")
PR c++/10903 * pt.c (convert_nontype_argument): Fix thinko in diagnostic. Improve. From-SVN: r69435
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c9
-rw-r--r--gcc/testsuite/g++.dg/template/non-type-template-argument-1.C12
3 files changed, 26 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b491c2b..4c75088 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2003-07-16 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ PR c++/10903
+ * pt.c (convert_nontype_argument): Fix thinko in diagnostic.
+ Improve.
+
2003-07-15 Mark Mitchell <mark@codesourcery.com>
* cp-tree.def (LOOKUP_EXPR): Remove.
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 8712ce6..1a8ea15 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -3085,7 +3085,14 @@ convert_nontype_argument (tree type, tree expr)
}
else
{
- error ("object `%E' cannot be used as template argument", expr);
+ if (TYPE_P (expr))
+ error ("type '%T' cannot be used as a value for a non-type "
+ "template-parameter", expr);
+ else if (DECL_P (expr))
+ error ("invalid use of '%D' as a non-type template-argument", expr);
+ else
+ error ("invalid use of '%E' as a non-type template-argument", expr);
+
return NULL_TREE;
}
diff --git a/gcc/testsuite/g++.dg/template/non-type-template-argument-1.C b/gcc/testsuite/g++.dg/template/non-type-template-argument-1.C
new file mode 100644
index 0000000..fbe5f3f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/non-type-template-argument-1.C
@@ -0,0 +1,12 @@
+struct A { static const bool b=false; };
+
+struct B { typedef A X; };
+
+template <bool> struct C {};
+
+template <typename T> struct D
+{
+ C<T::X> c; // { dg-error "invalid use" }
+};
+
+D<B> d; // { dg-error "" }