diff options
author | Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> | 2003-05-23 15:01:45 +0000 |
---|---|---|
committer | Kriang Lerdsuwanakij <lerdsuwa@gcc.gnu.org> | 2003-05-23 15:01:45 +0000 |
commit | 43b26a012874897cecbd2cf48e09a08368191282 (patch) | |
tree | 3b7908ca33480abbafc6964aab028e6c71ea364e /gcc | |
parent | d3971161822fad53821fddf9a1d27ab93db60f9d (diff) | |
download | gcc-43b26a012874897cecbd2cf48e09a08368191282.zip gcc-43b26a012874897cecbd2cf48e09a08368191282.tar.gz gcc-43b26a012874897cecbd2cf48e09a08368191282.tar.bz2 |
re PR c++/10682 (chokes on a typedef for an enum inside a class template)
PR c++/10682
* pt.c (instantiate_class_template): Use DECL_ARTIFICIAL to
check for implicitly created typedef to an enum.
* g++.dg/template/instantiate4.C: New test.
From-SVN: r67118
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/instantiate4.C | 13 |
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4437535..238f56e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-05-23 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + + PR c++/10682 + * pt.c (instantiate_class_template): Use DECL_ARTIFICIAL to + check for implicitly created typedef to an enum. + 2003-05-21 Jason Merrill <jason@redhat.com> * init.c (build_vec_delete): Copy the address into a temporary diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index c86a157..f775346 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -5500,7 +5500,7 @@ instantiate_class_template (type) CLASSTYPE_NESTED_UTDS case above. */ if (!(TREE_CODE (r) == TYPE_DECL && TREE_CODE (TREE_TYPE (r)) == ENUMERAL_TYPE - && TYPE_CONTEXT (TREE_TYPE (r)) == type)) + && DECL_ARTIFICIAL (r))) { set_current_access_from_decl (r); finish_member_declaration (r); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6774aea..d0beb83 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-05-23 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + + PR c++/10682 + * g++.dg/template/instantiate4.C: New test. + 2003-05-22 Roger Sayle <roger@eyesopen.com> * gcc.c-torture/execute/ieee/inf-2.c: New test case. diff --git a/gcc/testsuite/g++.dg/template/instantiate4.C b/gcc/testsuite/g++.dg/template/instantiate4.C new file mode 100644 index 0000000..732b852 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/instantiate4.C @@ -0,0 +1,13 @@ +// { dg-do compile } + +// Origin: Wolfgang Bangerth <bangerth@ticam.utexas.edu> + +// PR c++/10682: Typedef to enum template instantiation logic. + +template <typename T> +struct Foo { + enum E {a,b,c}; + typedef E EE; +}; + +void Baz(Foo<int>::EE x); |