[gcc r14-8592] gccrs: Make default resolver inherit from default visitor
Arthur Cohen
cohenarthur@gcc.gnu.org
Tue Jan 30 12:00:03 GMT 2024
https://gcc.gnu.org/g:b3b5115533c44f6f9206a702586ac9b3fe6750cb
commit r14-8592-gb3b5115533c44f6f9206a702586ac9b3fe6750cb
Author: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Date: Mon Nov 27 17:00:56 2023 +0100
gccrs: Make default resolver inherit from default visitor
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>
Diff:
---
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 c1ed3cea1136..ab4d5e8b70dc 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 49255d3bc26c..20dbff8e110f 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 &);
More information about the Gcc-cvs
mailing list