diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2006-01-19 17:29:42 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2006-01-19 17:29:42 +0000 |
commit | c9043d037246a4de7b42f411ac628971d50ea145 (patch) | |
tree | cbb6e67b336ab512aca01d5fa4a0f497fb3a64f2 | |
parent | 9795d9fd7a80977d03a81e17f5d980e3b69f84d1 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/spec28.C | 6 |
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" } |