gccrs: Unify storage of associated items in SingleASTNode
commit1460044f87ef6801d5c17cf94a9a87282bff9464
authorOwen Avery <powerboat9.gamer@gmail.com>
Wed, 20 Dec 2023 07:30:20 +0000 (20 02:30 -0500)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 30 Jan 2024 11:36:52 +0000 (30 12:36 +0100)
treee1529aa991d29c5eb134033e23386558fe2f497b
parent88a27c3bc0f1ecf91699b0dbc38bd00dc87a47a4
gccrs: Unify storage of associated items in SingleASTNode

gcc/rust/ChangeLog:

* ast/rust-ast-fragment.cc
(Fragment::assert_single_fragment): Update.

* ast/rust-ast.h
(class TraitImplItem): Move definition before that of TraitItem.
(class TraitItem):
Inherit from TraitImplItem instead of AssociatedItem.

(class SingleASTNode): Unify handling of associated items.
(SingleASTNode::take_assoc_item): Move from...
(SingleASTNode::take_impl_item): ...here, but leave stub calling
take_assoc_item behind.
(SingleASTNode::take_trait_item):
Cast associated item to TraitItem.
(SingleASTNode::take_trait_impl_item):
Cast associated item to TraitImplItem.

* ast/rust-ast.cc
(SingleASTNode::SingleASTNode):
Unify handling of associated items.
(SingleASTNode::operator=): Likewise.
(SingleASTNode::accept_vis): Likewise.
(SingleASTNode::is_error): Likewise.
(SingleASTNode::as_string): Likewise.

* ast/rust-item.h
(class Function): Remove direct inheritence from AssociatedItem.
(class ConstantItem): Likewise.
* ast/rust-macro.h
(class MacroInvocation):
Remove direct inheritence from AssociatedItem and TraitImplItem.
gcc/rust/ast/rust-ast-fragment.cc
gcc/rust/ast/rust-ast.cc
gcc/rust/ast/rust-ast.h
gcc/rust/ast/rust-item.h
gcc/rust/ast/rust-macro.h