]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/cp/class.c
Core issue 287, PR c++/7639
authorKriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
Wed, 30 Oct 2002 15:54:10 +0000 (15:54 +0000)
committerKriang Lerdsuwanakij <lerdsuwa@gcc.gnu.org>
Wed, 30 Oct 2002 15:54:10 +0000 (15:54 +0000)
commit7088fca94118e4e68a80f349ee55cda4930823b1
treede9d8ee4f80351fcf0257caba03bc679119f5b27
parentd2d199a3e6103b6cd2e0088cbcfdd0047d2c631e
Core issue 287, PR c++/7639

Core issue 287, PR c++/7639
* cp-tree.h (lang_type_class): Add decl_list field.
(CLASSTYPE_DECL_LIST): New macro.
(maybe_add_class_template_decl_list): Add declaration.
* class.c (duplicate_tag_error): Initialize CLASSTYPE_DECL_LIST.
(unreverse_member_declarations): Reverse CLASSTYPE_DECL_LIST.
(maybe_add_class_template_decl_list): New function.
(add_implicitly_declared_members): Use it.
* decl.c (maybe_process_template_type_declaration): Likewise.
(pushtag): Likewise.
* friend.c (add_friend): Likewise.
(make_friend_class): Likewise.
* semantics.c (finish_member_declaration): Likewise.
(begin_class_definition): Initialize CLASSTYPE_DECL_LIST.
* pt.c (instantiate_class_template): Use CLASSTYPE_DECL_LIST
to process members and friends in the order of declaration.

Core issue 287, PR c++/7639
* g++.dg/template/instantiate1.C: Adjust error location.
* g++.dg/template/instantiate3.C: New test.
* g++.old-deja/g++.pt/crash10.C: Adjust error location.
* g++.old-deja/g++.pt/derived3.C: Adjust error location.
* g++.old-deja/g++.pt/spec28.C: Reorder declaration.

From-SVN: r58654
13 files changed:
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/friend.c
gcc/cp/pt.c
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/template/instantiate1.C
gcc/testsuite/g++.dg/template/instantiate3.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/crash10.C
gcc/testsuite/g++.old-deja/g++.pt/derived3.C
gcc/testsuite/g++.old-deja/g++.pt/spec28.C