* decl.c (shadow_tag): Return error_mark_node
if maybe_process_partial_specialization failed.
* g++.dg/template/spec32.C: New test.
* g++.dg/parse/crash9.C: Adjust error markers.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117117
138bc75d-0d04-0410-961f-
82ee72b054a4
+2006-09-21 Lee Millward <lee.millward@codesourcery.com>
+
+ PR c++/28861
+ * decl.c (shadow_tag): Return error_mark_node
+ if maybe_process_partial_specialization failed.
+
2006-09-20 Danny Smith <dannysmith@users.sourceforge.net>
PR target/27650
}
- maybe_process_partial_specialization (t);
+ if (maybe_process_partial_specialization (t) == error_mark_node)
+ return NULL_TREE;
/* This is where the variables in an anonymous union are
declared. An anonymous union declaration looks like:
+2006-09-21 Lee Millward <lee.millward@codesourcery.com>
+
+ PR c++/28861
+ * g++.dg/template/spec32.C: New test.
+ * g++.dg/parse/crash9.C: Adjust error markers.
+
2006-09-21 Janis Johnson <janis187@us.ibm.com>
* gcc.dg/dfp/decfloat-constants.c: Remove 'dg-do compile', fix typo.
// contains error.
template <typename> struct A {};
-template <typename> struct A<INVALID> : A<int> { }; // { dg-error "not declared|invalid" }
+template <typename> struct A<INVALID> : A<int> { }; // { dg-error "not declared|invalid|token|extra" }
--- /dev/null
+//PR c++/28861
+
+struct A
+{
+ template<template<int> class B> struct B<0>; // { dg-error "name of class shadows" }
+};