mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
gccrs: nr2.0: Adjust enum item visitors
gcc/rust/ChangeLog: * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Make call to EnumItem visitor from EnumItem derived class visitors non-virtual. * ast/rust-collect-lang-items.cc (CollectLangItems::visit): Handle visitation of classes derived from EnumItem. * ast/rust-collect-lang-items.h (CollectLangItems::visit): Likewise. * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): Call DefaultResolver::visit on EnumItem instances. Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
This commit is contained in:
@@ -922,7 +922,7 @@ DefaultASTVisitor::visit (AST::EnumItem &item)
|
||||
void
|
||||
DefaultASTVisitor::visit (AST::EnumItemTuple &item)
|
||||
{
|
||||
visit (reinterpret_cast<EnumItem &> (item));
|
||||
DefaultASTVisitor::visit (reinterpret_cast<EnumItem &> (item));
|
||||
for (auto &field : item.get_tuple_fields ())
|
||||
visit (field);
|
||||
}
|
||||
@@ -930,7 +930,7 @@ DefaultASTVisitor::visit (AST::EnumItemTuple &item)
|
||||
void
|
||||
DefaultASTVisitor::visit (AST::EnumItemStruct &item)
|
||||
{
|
||||
visit (reinterpret_cast<EnumItem &> (item));
|
||||
DefaultASTVisitor::visit (reinterpret_cast<EnumItem &> (item));
|
||||
for (auto &field : item.get_struct_fields ())
|
||||
visit (field);
|
||||
}
|
||||
@@ -938,7 +938,7 @@ DefaultASTVisitor::visit (AST::EnumItemStruct &item)
|
||||
void
|
||||
DefaultASTVisitor::visit (AST::EnumItemDiscriminant &item)
|
||||
{
|
||||
visit (reinterpret_cast<EnumItem &> (item));
|
||||
DefaultASTVisitor::visit (reinterpret_cast<EnumItem &> (item));
|
||||
visit (item.get_expr ());
|
||||
}
|
||||
|
||||
|
||||
@@ -109,5 +109,29 @@ CollectLangItems::visit (AST::EnumItem &item)
|
||||
DefaultASTVisitor::visit (item);
|
||||
}
|
||||
|
||||
void
|
||||
CollectLangItems::visit (AST::EnumItemTuple &item)
|
||||
{
|
||||
maybe_add_lang_item (item);
|
||||
|
||||
DefaultASTVisitor::visit (item);
|
||||
}
|
||||
|
||||
void
|
||||
CollectLangItems::visit (AST::EnumItemStruct &item)
|
||||
{
|
||||
maybe_add_lang_item (item);
|
||||
|
||||
DefaultASTVisitor::visit (item);
|
||||
}
|
||||
|
||||
void
|
||||
CollectLangItems::visit (AST::EnumItemDiscriminant &item)
|
||||
{
|
||||
maybe_add_lang_item (item);
|
||||
|
||||
DefaultASTVisitor::visit (item);
|
||||
}
|
||||
|
||||
} // namespace AST
|
||||
} // namespace Rust
|
||||
|
||||
@@ -50,6 +50,9 @@ public:
|
||||
void visit (AST::Function &item) override;
|
||||
void visit (AST::StructStruct &item) override;
|
||||
void visit (AST::EnumItem &item) override;
|
||||
void visit (AST::EnumItemTuple &item) override;
|
||||
void visit (AST::EnumItemStruct &item) override;
|
||||
void visit (AST::EnumItemDiscriminant &item) override;
|
||||
|
||||
private:
|
||||
template <typename T> void maybe_add_lang_item (const T &item);
|
||||
|
||||
@@ -374,24 +374,32 @@ void
|
||||
TopLevel::visit (AST::EnumItem &variant)
|
||||
{
|
||||
insert_enum_variant_or_error_out (variant.get_identifier (), variant);
|
||||
|
||||
DefaultResolver::visit (variant);
|
||||
}
|
||||
|
||||
void
|
||||
TopLevel::visit (AST::EnumItemTuple &variant)
|
||||
{
|
||||
insert_enum_variant_or_error_out (variant.get_identifier (), variant);
|
||||
|
||||
DefaultResolver::visit (variant);
|
||||
}
|
||||
|
||||
void
|
||||
TopLevel::visit (AST::EnumItemStruct &variant)
|
||||
{
|
||||
insert_enum_variant_or_error_out (variant.get_identifier (), variant);
|
||||
|
||||
DefaultResolver::visit (variant);
|
||||
}
|
||||
|
||||
void
|
||||
TopLevel::visit (AST::EnumItemDiscriminant &variant)
|
||||
{
|
||||
insert_or_error_out (variant.get_identifier (), variant, Namespace::Types);
|
||||
|
||||
DefaultResolver::visit (variant);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user