From 657eaf1e8875a0f8a33167377eb44af7d0057e3d Mon Sep 17 00:00:00 2001 From: Kriang Lerdsuwanakij Date: Sat, 12 Feb 2005 16:29:20 +0000 Subject: [PATCH] re PR c++/14479 (enum definition in template class with template methods causes error.) PR c++/14479 PR c++/19487 * pt.c (maybe_check_template_type): Remove. * cp-tree.h (maybe_check_template_type): Remove prototype. * name-lookup.c (maybe_process_template_type_declaration): Don't use maybe_check_template_type. * g++.dg/template/enum5.C: New test. From-SVN: r94944 --- gcc/cp/ChangeLog | 9 +++++++++ gcc/cp/cp-tree.h | 1 - gcc/cp/name-lookup.c | 3 --- gcc/cp/pt.c | 43 ----------------------------------------- gcc/testsuite/ChangeLog | 6 ++++++ 5 files changed, 15 insertions(+), 47 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3dd309960dc5..1665ce005f64 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,12 @@ +2005-02-12 Kriang Lerdsuwanakij + + PR c++/14479 + PR c++/19487 + * pt.c (maybe_check_template_type): Remove. + * cp-tree.h (maybe_check_template_type): Remove prototype. + * name-lookup.c (maybe_process_template_type_declaration): Don't + use maybe_check_template_type. + 2005-02-10 Mark Mitchell PR c++/19755 diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index b2fec24e02b1..bcb63b865870 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -3921,7 +3921,6 @@ extern int is_specialization_of (tree, tree); extern bool is_specialization_of_friend (tree, tree); extern int comp_template_args (tree, tree); extern void maybe_process_partial_specialization (tree); -extern void maybe_check_template_type (tree); extern tree most_specialized_instantiation (tree); extern void print_candidates (tree); extern int instantiate_pending_templates (void); diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 0b6dddb01917..80f4c2946c25 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -4542,12 +4542,9 @@ maybe_process_template_type_declaration (tree type, int globalize, ; else { - maybe_check_template_type (type); - my_friendly_assert (IS_AGGR_TYPE (type) || TREE_CODE (type) == ENUMERAL_TYPE, 0); - if (processing_template_decl) { /* This may change after the call to diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 5409fd31436b..45557c108108 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -1997,49 +1997,6 @@ check_explicit_specialization (tree declarator, return decl; } -/* TYPE is being declared. Verify that the use of template headers - and such is reasonable. Issue error messages if not. */ - -void -maybe_check_template_type (tree type) -{ - if (template_header_count) - { - /* We are in the scope of some `template <...>' header. */ - - int context_depth - = template_class_depth_real (TYPE_CONTEXT (type), - /*count_specializations=*/1); - - if (template_header_count <= context_depth) - /* This is OK; the template headers are for the context. We - are actually too lenient here; like - check_explicit_specialization we should consider the number - of template types included in the actual declaration. For - example, - - template struct S { - template template - struct I {}; - }; - - is invalid, but: - - template struct S { - template struct I; - }; - - template template ::I {}; - - is not. */ - ; - else if (template_header_count > context_depth + 1) - /* There are two many template parameter lists. */ - error ("too many template parameter lists in declaration of `%T'", type); - } -} - /* Returns 1 iff PARMS1 and PARMS2 are identical sets of template parameters. These are represented in the same format used for DECL_TEMPLATE_PARMS. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3f2b3797d80f..46062a4ba286 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2005-02-12 Kriang Lerdsuwanakij + + PR c++/14479 + PR c++/19487 + * g++.dg/template/enum5.C: New test. + 2005-02-11 Jakub Jelinek PR c++/19666 -- 2.47.2