]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: nr2.0: Adjust enum item visitors
authorOwen Avery <powerboat9.gamer@gmail.com>
Fri, 2 May 2025 22:37:45 +0000 (18:37 -0400)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 5 Aug 2025 14:36:41 +0000 (16:36 +0200)
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>
gcc/rust/ast/rust-ast-visitor.cc
gcc/rust/ast/rust-collect-lang-items.cc
gcc/rust/ast/rust-collect-lang-items.h
gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc

index b6833f69314e9dd9f94a9ee37bc41acf2a690769..3dfcf5ace025428a9c874d54e03dcf1e43d43a79 100644 (file)
@@ -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 ());
 }
 
index cd6be7fbeb9c79359a6375e5438444e1c1505779..306c6f747e2b7d6223d68ea79f07234bf8aaf5c4 100644 (file)
@@ -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
index ddb34a914ed76afb2abb726da3be2e317205a2ed..ddc7b51313bdb66cead53e3fec6fca2b48670049 100644 (file)
@@ -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);
index 2f036fe40b3fa218821a2ac0106c24df399faa96..dad9205cc26fea1292ece11e7b519e65ab191e83 100644 (file)
@@ -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