PRs C++/6803, C++/7721 and C++/7803

PRs C++/6803, C++/7721 and C++/7803
        * decl.c (grokdeclarator): Gracefully handle template-name as
        decl-specifier.

From-SVN: r58058
This commit is contained in:
Gabriel Dos Reis 2002-10-11 18:25:10 +00:00 committed by Gabriel Dos Reis
parent 01c3fb158c
commit 2ee366b54a
3 changed files with 31 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2002-10-11 Gabriel Dos Reis <gdr@integrable-solutions.net>
PRs C++/6803, C++/7721 and C++/7803
* decl.c (grokdeclarator): Gracefully handle template-name as
decl-specifier.
2002-10-11 Jason Molenda <jmolenda@apple.com>
* init.c (build_field_list): Provide uses_unions_p with a default

View File

@ -10249,6 +10249,15 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
case BASELINK:
next = &BASELINK_FUNCTIONS (decl);
break;
case TEMPLATE_DECL:
/* Sometimes, we see a template-name used as part of a
decl-specifier like in
std::allocator alloc;
Handle that gracefully. */
error ("invalid use of template-name '%E' in a declarator", decl);
return error_mark_node;
break;
default:
my_friendly_assert (0, 20020917);

View File

@ -0,0 +1,16 @@
// Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
// Origin: PRs 7721 and 7803
// { dg-do compile }
namespace N
{
template<typename>
struct X { };
}
N::X X; // { dg-error "" "" }
int main()
{
return sizeof(X); // { dg-error "" "" }
}