[gcc r14-8581] gccrs: Make feature gate visitor inherit from default one
Arthur Cohen
cohenarthur@gcc.gnu.org
Tue Jan 30 11:59:06 GMT 2024
https://gcc.gnu.org/g:9f6d3010047d417f54c439db42f111fa61b216df
commit r14-8581-g9f6d3010047d417f54c439db42f111fa61b216df
Author: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Date: Fri Nov 24 11:17:52 2023 +0100
gccrs: Make feature gate visitor inherit from default one
The feature gating behavior may be shortened and kept cleaner using the
default visitor. This means less maintenance on visit functions as the
traversal is shared by multiple visitors.
gcc/rust/ChangeLog:
* checks/errors/rust-feature-gate.cc (FeatureGate::visit): Add a visit
function for the crate level.
(FeatureGate::check): Add call to crate visit.
* checks/errors/rust-feature-gate.h (class FeatureGate): Remove now
useless visit functions (traversal only).
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diff:
---
gcc/rust/checks/errors/rust-feature-gate.cc | 37 +++++++----------------------
gcc/rust/checks/errors/rust-feature-gate.h | 7 +++---
2 files changed, 13 insertions(+), 31 deletions(-)
diff --git a/gcc/rust/checks/errors/rust-feature-gate.cc b/gcc/rust/checks/errors/rust-feature-gate.cc
index a531d0370f00..3c943022f05e 100644
--- a/gcc/rust/checks/errors/rust-feature-gate.cc
+++ b/gcc/rust/checks/errors/rust-feature-gate.cc
@@ -18,11 +18,18 @@
#include "rust-feature-gate.h"
#include "rust-abi.h"
+#include "rust-ast-visitor.h"
namespace Rust {
void
FeatureGate::check (AST::Crate &crate)
+{
+ visit (crate);
+}
+
+void
+FeatureGate::visit (AST::Crate &crate)
{
valid_features.clear ();
@@ -56,12 +63,7 @@ FeatureGate::check (AST::Crate &crate)
}
}
- auto &items = crate.items;
- for (auto it = items.begin (); it != items.end (); it++)
- {
- auto &item = *it;
- item->accept_vis (*this);
- }
+ AST::DefaultASTVisitor::visit (crate);
}
void
@@ -103,10 +105,7 @@ FeatureGate::visit (AST::ExternBlock &block)
gate (Feature::Name::INTRINSICS, block.get_locus (),
"intrinsics are subject to change");
}
- for (const auto &item : block.get_extern_items ())
- {
- item->accept_vis (*this);
- }
+ AST::DefaultASTVisitor::visit (block);
}
void
@@ -129,24 +128,6 @@ FeatureGate::visit (AST::MacroRulesDefinition &rules_def)
check_rustc_attri (rules_def.get_outer_attrs ());
}
-void
-FeatureGate::visit (AST::InherentImpl &impl)
-{
- for (const auto &item : impl.get_impl_items ())
- {
- item->accept_vis (*this);
- }
-}
-
-void
-FeatureGate::visit (AST::TraitImpl &impl)
-{
- for (const auto &item : impl.get_impl_items ())
- {
- item->accept_vis (*this);
- }
-}
-
void
FeatureGate::visit (AST::Function &function)
{
diff --git a/gcc/rust/checks/errors/rust-feature-gate.h b/gcc/rust/checks/errors/rust-feature-gate.h
index 1ebd3c9e05fb..8d1a26a13619 100644
--- a/gcc/rust/checks/errors/rust-feature-gate.h
+++ b/gcc/rust/checks/errors/rust-feature-gate.h
@@ -25,12 +25,15 @@
namespace Rust {
-class FeatureGate : public AST::ASTVisitor
+class FeatureGate : public AST::DefaultASTVisitor
{
public:
FeatureGate () {}
+ using AST::DefaultASTVisitor::visit;
+
void check (AST::Crate &crate);
+ void visit (AST::Crate &crate) override;
void visit (AST::Token &tok) override {}
void visit (AST::DelimTokenTree &delim_tok_tree) override {}
@@ -127,8 +130,6 @@ public:
void visit (AST::TraitItemConst &item) override {}
void visit (AST::TraitItemType &item) override {}
void visit (AST::Trait &trait) override {}
- void visit (AST::InherentImpl &impl) override;
- void visit (AST::TraitImpl &impl) override;
void visit (AST::ExternalTypeItem &item) override;
void visit (AST::ExternalStaticItem &item) override {}
void visit (AST::ExternalFunctionItem &item) override {}
More information about the Gcc-cvs
mailing list