[COMMITTED 068/101] gccrs: Make default resolver inherit from default visitor
arthur.cohen@embecosm.com
arthur.cohen@embecosm.com
Tue Jan 30 12:07:24 GMT 2024
From: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
The default resolver put some scope in place but mostly has traversal
functions similar to the default ast visitor, making it inherit from the
default visitor allows us to avoid code duplication.
gcc/rust/ChangeLog:
* resolve/rust-default-resolver.cc (DefaultResolver::visit): Remove
duplicated functions.
* resolve/rust-default-resolver.h (class DefaultResolver): Make the
default resolver inherit from the default visitor.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
---
gcc/rust/resolve/rust-default-resolver.cc | 240 +---------------------
gcc/rust/resolve/rust-default-resolver.h | 44 +---
2 files changed, 5 insertions(+), 279 deletions(-)
diff --git a/gcc/rust/resolve/rust-default-resolver.cc b/gcc/rust/resolve/rust-default-resolver.cc
index c1ed3cea113..ab4d5e8b70d 100644
--- a/gcc/rust/resolve/rust-default-resolver.cc
+++ b/gcc/rust/resolve/rust-default-resolver.cc
@@ -18,6 +18,7 @@
#include "rust-default-resolver.h"
#include "rust-ast-full.h"
+#include "rust-ast-visitor.h"
#include "rust-item.h"
namespace Rust {
@@ -148,26 +149,11 @@ DefaultResolver::visit (AST::StructStruct &type)
// we also can't visit `StructField`s by default, so there's nothing to do -
// correct? or should we do something like
- for (auto &field : type.get_fields ())
- field.get_field_type ()->accept_vis (*this);
+ AST::DefaultASTVisitor::visit (type);
// FIXME: ???
}
-void
-DefaultResolver::visit (AST::TupleStruct &type)
-{
- for (auto &field : type.get_fields ())
- field.get_field_type ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::Union &type)
-{
- for (auto &field : type.get_variants ())
- field.get_field_type ()->accept_vis (*this);
-}
-
void
DefaultResolver::visit (AST::Enum &type)
{
@@ -182,118 +168,6 @@ DefaultResolver::visit (AST::Enum &type)
variant_fn, type.get_identifier ());
}
-void
-DefaultResolver::visit (AST::BorrowExpr &expr)
-{
- expr.get_borrowed_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::DereferenceExpr &expr)
-{
- expr.get_dereferenced_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::ErrorPropagationExpr &expr)
-{
- expr.get_propagating_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::NegationExpr &expr)
-{
- expr.get_negated_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::ArithmeticOrLogicalExpr &expr)
-{
- expr.get_left_expr ()->accept_vis (*this);
- expr.get_right_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::ComparisonExpr &expr)
-{
- expr.get_left_expr ()->accept_vis (*this);
- expr.get_right_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::LazyBooleanExpr &expr)
-{
- expr.get_left_expr ()->accept_vis (*this);
- expr.get_right_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::TypeCastExpr &expr)
-{
- expr.get_type_to_cast_to ()->accept_vis (*this);
- expr.get_casted_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::AssignmentExpr &expr)
-{
- expr.get_left_expr ()->accept_vis (*this);
- expr.get_right_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::CompoundAssignmentExpr &expr)
-{
- expr.get_left_expr ()->accept_vis (*this);
- expr.get_right_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::GroupedExpr &expr)
-{
- expr.get_expr_in_parens ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::ArrayElemsValues &array)
-{
- for (auto &value : array.get_values ())
- value->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::ArrayElemsCopied &array)
-{
- array.get_elem_to_copy ()->accept_vis (*this);
- array.get_num_copies ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::ArrayExpr &expr)
-{
- expr.get_array_elems ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::ArrayIndexExpr &expr)
-{
- expr.get_array_expr ()->accept_vis (*this);
- expr.get_index_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::TupleExpr &expr)
-{
- for (auto &element : expr.get_tuple_elems ())
- element->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::TupleIndexExpr &expr)
-{
- expr.get_tuple_expr ()->accept_vis (*this);
-}
-
void
DefaultResolver::visit (AST::StructExprFieldIdentifierValue &)
{}
@@ -302,28 +176,6 @@ void
DefaultResolver::visit (AST::StructExprFieldIndexValue &)
{}
-void
-DefaultResolver::visit (AST::CallExpr &expr)
-{
- expr.get_function_expr ()->accept_vis (*this);
- for (auto ¶m : expr.get_params ())
- param->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::MethodCallExpr &expr)
-{
- expr.get_receiver_expr ()->accept_vis (*this);
- for (auto ¶m : expr.get_params ())
- param->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::FieldAccessExpr &expr)
-{
- expr.get_receiver_expr ()->accept_vis (*this);
-}
-
void
DefaultResolver::visit (AST::ClosureExprInner &)
{}
@@ -336,13 +188,6 @@ void
DefaultResolver::visit (AST::ContinueExpr &expr)
{}
-void
-DefaultResolver::visit (AST::BreakExpr &expr)
-{
- if (expr.has_break_expr ())
- expr.get_break_expr ()->accept_vis (*this);
-}
-
void
DefaultResolver::visit (AST::RangeFromToExpr &expr)
{}
@@ -355,10 +200,6 @@ void
DefaultResolver::visit (AST::RangeToExpr &expr)
{}
-void
-DefaultResolver::visit (AST::RangeFullExpr &expr)
-{}
-
void
DefaultResolver::visit (AST::RangeFromToInclExpr &expr)
{}
@@ -415,28 +256,6 @@ void
DefaultResolver::visit (AST::AsyncBlockExpr &expr)
{}
-void
-DefaultResolver::visit (AST::LetStmt &let_stmt)
-{
- let_stmt.get_pattern ()->accept_vis (*this);
-
- if (let_stmt.has_type ())
- let_stmt.get_type ()->accept_vis (*this);
-
- if (let_stmt.has_init_expr ())
- let_stmt.get_init_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::ExprStmt &stmt)
-{
- stmt.get_expr ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::Token &)
-{}
-
void
DefaultResolver::visit (AST::DelimTokenTree &)
{}
@@ -449,10 +268,6 @@ void
DefaultResolver::visit (AST::IdentifierExpr &expr)
{}
-void
-DefaultResolver::visit (AST::Lifetime &)
-{}
-
void
DefaultResolver::visit (AST::LifetimeParam &)
{}
@@ -465,10 +280,6 @@ void
DefaultResolver::visit (AST::PathInExpression &)
{}
-void
-DefaultResolver::visit (AST::TypePathSegment &)
-{}
-
void
DefaultResolver::visit (AST::TypePathSegmentGeneric &)
{}
@@ -513,10 +324,6 @@ void
DefaultResolver::visit (AST::StructExprStruct &)
{}
-void
-DefaultResolver::visit (AST::StructExprFieldIdentifier &)
-{}
-
void
DefaultResolver::visit (AST::StructExprStructFields &)
{}
@@ -623,10 +430,6 @@ void
DefaultResolver::visit (AST::ExternalFunctionItem &)
{}
-void
-DefaultResolver::visit (AST::MacroMatchFragment &)
-{}
-
void
DefaultResolver::visit (AST::MacroMatchRepetition &)
{}
@@ -651,14 +454,6 @@ void
DefaultResolver::visit (AST::MetaItemSeq &)
{}
-void
-DefaultResolver::visit (AST::MetaWord &)
-{}
-
-void
-DefaultResolver::visit (AST::MetaNameValueStr &)
-{}
-
void
DefaultResolver::visit (AST::MetaListPaths &)
{}
@@ -667,29 +462,6 @@ void
DefaultResolver::visit (AST::MetaListNameValueStr &)
{}
-void
-DefaultResolver::visit (AST::LiteralPattern &)
-{}
-
-void
-DefaultResolver::visit (AST::IdentifierPattern &pattern)
-{
- if (pattern.has_pattern_to_bind ())
- pattern.get_pattern_to_bind ()->accept_vis (*this);
-}
-
-void
-DefaultResolver::visit (AST::WildcardPattern &)
-{}
-
-void
-DefaultResolver::visit (AST::RestPattern &)
-{}
-
-void
-DefaultResolver::visit (AST::RangePatternBoundLiteral &)
-{}
-
void
DefaultResolver::visit (AST::RangePatternBoundPath &)
{}
@@ -790,10 +562,6 @@ void
DefaultResolver::visit (AST::TupleType &)
{}
-void
-DefaultResolver::visit (AST::NeverType &)
-{}
-
void
DefaultResolver::visit (AST::RawPointerType &)
{}
@@ -810,10 +578,6 @@ void
DefaultResolver::visit (AST::SliceType &)
{}
-void
-DefaultResolver::visit (AST::InferredType &)
-{}
-
void
DefaultResolver::visit (AST::BareFunctionType &)
{}
diff --git a/gcc/rust/resolve/rust-default-resolver.h b/gcc/rust/resolve/rust-default-resolver.h
index 49255d3bc26..20dbff8e110 100644
--- a/gcc/rust/resolve/rust-default-resolver.h
+++ b/gcc/rust/resolve/rust-default-resolver.h
@@ -32,9 +32,11 @@ namespace Resolver2_0 {
* visiting each node's subnodes - a block's statements, a function call's
* arguments...
*/
-class DefaultResolver : public AST::ASTVisitor
+class DefaultResolver : public AST::DefaultASTVisitor
{
public:
+ using AST::DefaultASTVisitor::visit;
+
virtual ~DefaultResolver () {}
// First, our lexical scope expressions - these visit their sub nodes, always
@@ -51,41 +53,17 @@ public:
// type dec nodes, which visit their fields or variants by default
void visit (AST::StructStruct &);
- void visit (AST::TupleStruct &);
- void visit (AST::Union &);
void visit (AST::Enum &);
// Visitors that visit their expression node(s)
- void visit (AST::BorrowExpr &);
- void visit (AST::DereferenceExpr &);
- void visit (AST::ErrorPropagationExpr &);
- void visit (AST::NegationExpr &);
- void visit (AST::ArithmeticOrLogicalExpr &);
- void visit (AST::ComparisonExpr &);
- void visit (AST::LazyBooleanExpr &);
- void visit (AST::TypeCastExpr &);
- void visit (AST::AssignmentExpr &);
- void visit (AST::CompoundAssignmentExpr &);
- void visit (AST::GroupedExpr &);
- void visit (AST::ArrayElemsValues &);
- void visit (AST::ArrayElemsCopied &);
- void visit (AST::ArrayExpr &);
- void visit (AST::ArrayIndexExpr &);
- void visit (AST::TupleExpr &);
- void visit (AST::TupleIndexExpr &);
void visit (AST::StructExprFieldIdentifierValue &);
void visit (AST::StructExprFieldIndexValue &);
- void visit (AST::CallExpr &);
- void visit (AST::MethodCallExpr &);
- void visit (AST::FieldAccessExpr &);
void visit (AST::ClosureExprInner &);
void visit (AST::ClosureExprInnerTyped &);
void visit (AST::ContinueExpr &);
- void visit (AST::BreakExpr &);
void visit (AST::RangeFromToExpr &);
void visit (AST::RangeFromExpr &);
void visit (AST::RangeToExpr &);
- void visit (AST::RangeFullExpr &);
void visit (AST::RangeFromToInclExpr &);
void visit (AST::RangeToInclExpr &);
void visit (AST::ReturnExpr &);
@@ -100,19 +78,14 @@ public:
void visit (AST::MatchExpr &);
void visit (AST::AwaitExpr &);
void visit (AST::AsyncBlockExpr &);
- void visit (AST::LetStmt &);
- void visit (AST::ExprStmt &);
// Leaf visitors, which do nothing by default
- void visit (AST::Token &);
void visit (AST::DelimTokenTree &);
void visit (AST::AttrInputMetaItemContainer &);
void visit (AST::IdentifierExpr &);
- void visit (AST::Lifetime &);
void visit (AST::LifetimeParam &);
void visit (AST::ConstGenericParam &);
void visit (AST::PathInExpression &);
- void visit (AST::TypePathSegment &);
void visit (AST::TypePathSegmentGeneric &);
void visit (AST::TypePathSegmentFunction &);
void visit (AST::TypePath &);
@@ -124,7 +97,6 @@ public:
void visit (AST::MetaItemLitExpr &);
void visit (AST::MetaItemPathLit &);
void visit (AST::StructExprStruct &);
- void visit (AST::StructExprFieldIdentifier &);
void visit (AST::StructExprStructFields &);
void visit (AST::StructExprStructBase &);
void visit (AST::TypeParam &);
@@ -149,22 +121,14 @@ public:
void visit (AST::ExternalTypeItem &);
void visit (AST::ExternalStaticItem &);
void visit (AST::ExternalFunctionItem &);
- void visit (AST::MacroMatchFragment &);
void visit (AST::MacroMatchRepetition &);
void visit (AST::MacroMatcher &);
void visit (AST::MacroRulesDefinition &);
void visit (AST::MacroInvocation &);
void visit (AST::MetaItemPath &);
void visit (AST::MetaItemSeq &);
- void visit (AST::MetaWord &);
- void visit (AST::MetaNameValueStr &);
void visit (AST::MetaListPaths &);
void visit (AST::MetaListNameValueStr &);
- void visit (AST::LiteralPattern &);
- void visit (AST::IdentifierPattern &);
- void visit (AST::WildcardPattern &);
- void visit (AST::RestPattern &);
- void visit (AST::RangePatternBoundLiteral &);
void visit (AST::RangePatternBoundPath &);
void visit (AST::RangePatternBoundQualPath &);
void visit (AST::RangePattern &);
@@ -190,12 +154,10 @@ public:
void visit (AST::ImplTraitTypeOneBound &);
void visit (AST::TraitObjectTypeOneBound &);
void visit (AST::TupleType &);
- void visit (AST::NeverType &);
void visit (AST::RawPointerType &);
void visit (AST::ReferenceType &);
void visit (AST::ArrayType &);
void visit (AST::SliceType &);
- void visit (AST::InferredType &);
void visit (AST::BareFunctionType &);
void visit (AST::FunctionParam &);
void visit (AST::VariadicParam &);
--
2.42.1
More information about the Gcc-rust
mailing list