aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>2006-01-19 17:29:42 +0000
committerVolker Reichelt <reichelt@gcc.gnu.org>2006-01-19 17:29:42 +0000
commitc9043d037246a4de7b42f411ac628971d50ea145 (patch)
treecbb6e67b336ab512aca01d5fa4a0f497fb3a64f2
parent9795d9fd7a80977d03a81e17f5d980e3b69f84d1 (diff)
downloadgcc-c9043d037246a4de7b42f411ac628971d50ea145.zip
gcc-c9043d037246a4de7b42f411ac628971d50ea145.tar.gz
gcc-c9043d037246a4de7b42f411ac628971d50ea145.tar.bz2
re PR c++/25854 (Bogus diagnostic with '<type error>')
PR c++/25854 * pt.c (maybe_process_partial_specialization): Return early on error_mark_node. * g++.dg/template/spec28.C: New test. From-SVN: r109975
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/spec28.C6
4 files changed, 23 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 981976f..53b2953 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,11 @@
2006-01-19 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+ PR c++/25854
+ * pt.c (maybe_process_partial_specialization): Return early on
+ error_mark_node.
+
+2006-01-19 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
PR c++/16829
* decl.c (start_preparsed_function): Check default arguments
unconditionally.
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 23c84cd..2361457 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -678,8 +678,12 @@ check_explicit_instantiation_namespace (tree spec)
void
maybe_process_partial_specialization (tree type)
{
- /* TYPE maybe an ERROR_MARK_NODE. */
- tree context = TYPE_P (type) ? TYPE_CONTEXT (type) : NULL_TREE;
+ tree context;
+
+ if (type == error_mark_node)
+ return;
+
+ context = TYPE_CONTEXT (type);
if (CLASS_TYPE_P (type) && CLASSTYPE_USE_TEMPLATE (type))
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f39f40f..4e4c7e0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-01-19 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/25854
+ * g++.dg/template/spec28.C: New test.
+
2006-01-19 Andrew Pinski <pinskia@physics.uc.edu>
* objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c (switchfiles):
diff --git a/gcc/testsuite/g++.dg/template/spec28.C b/gcc/testsuite/g++.dg/template/spec28.C
new file mode 100644
index 0000000..f0bb22c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/spec28.C
@@ -0,0 +1,6 @@
+// PR c++/25854
+// Bad diagnostic
+// { dg-do compile }
+
+template<typename> struct A {}; // { dg-error "provided" }
+template<> struct A<> {}; // { dg-error "wrong number" }