Skip to content

Commit 69f6be3

Browse files
bors[bot]dkm
andauthored
Merge #846
846: HIR visitor refactor r=philberty a=dkm This is the first step of a bigger refactor (see #825). This patch introduces a new HIRFullVisitor with default implementations for all visitor methods. This visitor is used as base classe for several existing HIR visitors that also currently define empty behavior (eg. TypeCheckBase, ConstFoldBase, ...). Signed-off-by: Marc Poulhiès <[email protected]> Co-authored-by: Marc Poulhiès <[email protected]>
2 parents 4c5ebc0 + f9b6c0c commit 69f6be3

16 files changed

+466
-1067
lines changed

gcc/rust/backend/rust-compile-base.h

+1-158
Original file line numberDiff line numberDiff line change
@@ -25,168 +25,11 @@
2525
namespace Rust {
2626
namespace Compile {
2727

28-
class HIRCompileBase : public HIR::HIRVisitor
28+
class HIRCompileBase : public HIR::HIRFullVisitorBase
2929
{
3030
public:
3131
virtual ~HIRCompileBase () {}
3232

33-
// rust-ast.h
34-
virtual void visit (HIR::IdentifierExpr &ident_expr) {}
35-
virtual void visit (HIR::Lifetime &lifetime) {}
36-
virtual void visit (HIR::LifetimeParam &lifetime_param) {}
37-
38-
// rust-path.h
39-
virtual void visit (HIR::PathInExpression &path) {}
40-
virtual void visit (HIR::TypePathSegment &segment) {}
41-
virtual void visit (HIR::TypePathSegmentGeneric &segment) {}
42-
virtual void visit (HIR::TypePathSegmentFunction &segment) {}
43-
virtual void visit (HIR::TypePath &path) {}
44-
virtual void visit (HIR::QualifiedPathInExpression &path) {}
45-
virtual void visit (HIR::QualifiedPathInType &path) {}
46-
47-
// rust-expr.h
48-
virtual void visit (HIR::LiteralExpr &expr) {}
49-
virtual void visit (HIR::BorrowExpr &expr) {}
50-
virtual void visit (HIR::DereferenceExpr &expr) {}
51-
virtual void visit (HIR::ErrorPropagationExpr &expr) {}
52-
virtual void visit (HIR::NegationExpr &expr) {}
53-
virtual void visit (HIR::ArithmeticOrLogicalExpr &expr) {}
54-
virtual void visit (HIR::ComparisonExpr &expr) {}
55-
virtual void visit (HIR::LazyBooleanExpr &expr) {}
56-
virtual void visit (HIR::TypeCastExpr &expr) {}
57-
virtual void visit (HIR::AssignmentExpr &expr) {}
58-
virtual void visit (HIR::CompoundAssignmentExpr &expr) {}
59-
virtual void visit (HIR::GroupedExpr &expr) {}
60-
// virtual void visit(ArrayElems& elems) {}
61-
virtual void visit (HIR::ArrayElemsValues &elems) {}
62-
virtual void visit (HIR::ArrayElemsCopied &elems) {}
63-
virtual void visit (HIR::ArrayExpr &expr) {}
64-
virtual void visit (HIR::ArrayIndexExpr &expr) {}
65-
virtual void visit (HIR::TupleExpr &expr) {}
66-
virtual void visit (HIR::TupleIndexExpr &expr) {}
67-
virtual void visit (HIR::StructExprStruct &expr) {}
68-
// virtual void visit(StructExprField& field) {}
69-
virtual void visit (HIR::StructExprFieldIdentifier &field) {}
70-
virtual void visit (HIR::StructExprFieldIdentifierValue &field) {}
71-
virtual void visit (HIR::StructExprFieldIndexValue &field) {}
72-
virtual void visit (HIR::StructExprStructFields &expr) {}
73-
virtual void visit (HIR::StructExprStructBase &expr) {}
74-
virtual void visit (HIR::CallExpr &expr) {}
75-
virtual void visit (HIR::MethodCallExpr &expr) {}
76-
virtual void visit (HIR::FieldAccessExpr &expr) {}
77-
virtual void visit (HIR::ClosureExprInner &expr) {}
78-
virtual void visit (HIR::BlockExpr &expr) {}
79-
virtual void visit (HIR::ClosureExprInnerTyped &expr) {}
80-
virtual void visit (HIR::ContinueExpr &expr) {}
81-
virtual void visit (HIR::BreakExpr &expr) {}
82-
virtual void visit (HIR::RangeFromToExpr &expr) {}
83-
virtual void visit (HIR::RangeFromExpr &expr) {}
84-
virtual void visit (HIR::RangeToExpr &expr) {}
85-
virtual void visit (HIR::RangeFullExpr &expr) {}
86-
virtual void visit (HIR::RangeFromToInclExpr &expr) {}
87-
virtual void visit (HIR::RangeToInclExpr &expr) {}
88-
virtual void visit (HIR::ReturnExpr &expr) {}
89-
virtual void visit (HIR::UnsafeBlockExpr &expr) {}
90-
virtual void visit (HIR::LoopExpr &expr) {}
91-
virtual void visit (HIR::WhileLoopExpr &expr) {}
92-
virtual void visit (HIR::WhileLetLoopExpr &expr) {}
93-
virtual void visit (HIR::ForLoopExpr &expr) {}
94-
virtual void visit (HIR::IfExpr &expr) {}
95-
virtual void visit (HIR::IfExprConseqElse &expr) {}
96-
virtual void visit (HIR::IfExprConseqIf &expr) {}
97-
virtual void visit (HIR::IfExprConseqIfLet &expr) {}
98-
virtual void visit (HIR::IfLetExpr &expr) {}
99-
virtual void visit (HIR::IfLetExprConseqElse &expr) {}
100-
virtual void visit (HIR::IfLetExprConseqIf &expr) {}
101-
virtual void visit (HIR::IfLetExprConseqIfLet &expr) {}
102-
// virtual void visit(MatchCase& match_case) {}
103-
// virtual void visit (HIR::MatchCaseBlockExpr &match_case) {}
104-
// virtual void visit (HIR::MatchCaseExpr &match_case) {}
105-
virtual void visit (HIR::MatchExpr &expr) {}
106-
virtual void visit (HIR::AwaitExpr &expr) {}
107-
virtual void visit (HIR::AsyncBlockExpr &expr) {}
108-
109-
// rust-item.h
110-
virtual void visit (HIR::TypeParam &param) {}
111-
// virtual void visit(WhereClauseItem& item) {}
112-
virtual void visit (HIR::LifetimeWhereClauseItem &item) {}
113-
virtual void visit (HIR::TypeBoundWhereClauseItem &item) {}
114-
virtual void visit (HIR::Module &module) {}
115-
virtual void visit (HIR::ExternCrate &crate) {}
116-
// virtual void visit(UseTree& use_tree) {}
117-
virtual void visit (HIR::UseTreeGlob &use_tree) {}
118-
virtual void visit (HIR::UseTreeList &use_tree) {}
119-
virtual void visit (HIR::UseTreeRebind &use_tree) {}
120-
virtual void visit (HIR::UseDeclaration &use_decl) {}
121-
virtual void visit (HIR::Function &function) {}
122-
virtual void visit (HIR::TypeAlias &type_alias) {}
123-
virtual void visit (HIR::StructStruct &struct_item) {}
124-
virtual void visit (HIR::TupleStruct &tuple_struct) {}
125-
virtual void visit (HIR::EnumItem &item) {}
126-
virtual void visit (HIR::EnumItemTuple &item) {}
127-
virtual void visit (HIR::EnumItemStruct &item) {}
128-
virtual void visit (HIR::EnumItemDiscriminant &item) {}
129-
virtual void visit (HIR::Enum &enum_item) {}
130-
virtual void visit (HIR::Union &union_item) {}
131-
virtual void visit (HIR::ConstantItem &const_item) {}
132-
virtual void visit (HIR::StaticItem &static_item) {}
133-
virtual void visit (HIR::TraitItemFunc &item) {}
134-
virtual void visit (HIR::TraitItemConst &item) {}
135-
virtual void visit (HIR::TraitItemType &item) {}
136-
virtual void visit (HIR::Trait &trait) {}
137-
virtual void visit (HIR::ImplBlock &impl) {}
138-
139-
virtual void visit (HIR::ExternalStaticItem &item) {}
140-
virtual void visit (HIR::ExternalFunctionItem &item) {}
141-
virtual void visit (HIR::ExternBlock &block) {}
142-
143-
// rust-pattern.h
144-
virtual void visit (HIR::LiteralPattern &pattern) {}
145-
virtual void visit (HIR::IdentifierPattern &pattern) {}
146-
virtual void visit (HIR::WildcardPattern &pattern) {}
147-
// virtual void visit(RangePatternBound& bound) {}
148-
virtual void visit (HIR::RangePatternBoundLiteral &bound) {}
149-
virtual void visit (HIR::RangePatternBoundPath &bound) {}
150-
virtual void visit (HIR::RangePatternBoundQualPath &bound) {}
151-
virtual void visit (HIR::RangePattern &pattern) {}
152-
virtual void visit (HIR::ReferencePattern &pattern) {}
153-
// virtual void visit(StructPatternField& field) {}
154-
virtual void visit (HIR::StructPatternFieldTuplePat &field) {}
155-
virtual void visit (HIR::StructPatternFieldIdentPat &field) {}
156-
virtual void visit (HIR::StructPatternFieldIdent &field) {}
157-
virtual void visit (HIR::StructPattern &pattern) {}
158-
// virtual void visit(TupleStructItems& tuple_items) {}
159-
virtual void visit (HIR::TupleStructItemsNoRange &tuple_items) {}
160-
virtual void visit (HIR::TupleStructItemsRange &tuple_items) {}
161-
virtual void visit (HIR::TupleStructPattern &pattern) {}
162-
// virtual void visit(TuplePatternItems& tuple_items) {}
163-
virtual void visit (HIR::TuplePatternItemsMultiple &tuple_items) {}
164-
virtual void visit (HIR::TuplePatternItemsRanged &tuple_items) {}
165-
virtual void visit (HIR::TuplePattern &pattern) {}
166-
virtual void visit (HIR::GroupedPattern &pattern) {}
167-
virtual void visit (HIR::SlicePattern &pattern) {}
168-
169-
// rust-stmt.h
170-
virtual void visit (HIR::EmptyStmt &stmt) {}
171-
virtual void visit (HIR::LetStmt &stmt) {}
172-
virtual void visit (HIR::ExprStmtWithoutBlock &stmt) {}
173-
virtual void visit (HIR::ExprStmtWithBlock &stmt) {}
174-
175-
// rust-type.h
176-
virtual void visit (HIR::TraitBound &bound) {}
177-
virtual void visit (HIR::ImplTraitType &type) {}
178-
virtual void visit (HIR::TraitObjectType &type) {}
179-
virtual void visit (HIR::ParenthesisedType &type) {}
180-
virtual void visit (HIR::ImplTraitTypeOneBound &type) {}
181-
virtual void visit (HIR::TupleType &type) {}
182-
virtual void visit (HIR::NeverType &type) {}
183-
virtual void visit (HIR::RawPointerType &type) {}
184-
virtual void visit (HIR::ReferenceType &type) {}
185-
virtual void visit (HIR::ArrayType &type) {}
186-
virtual void visit (HIR::SliceType &type) {}
187-
virtual void visit (HIR::InferredType &type) {}
188-
virtual void visit (HIR::BareFunctionType &type) {}
189-
19033
protected:
19134
HIRCompileBase (Context *ctx) : ctx (ctx) {}
19235

gcc/rust/hir/tree/rust-hir-cond-compilation.h

+5-5
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class ConfigurationPredicate
3838
}
3939

4040
// not sure if I'll use this but here anyway
41-
virtual void accept_vis (HIRVisitor &vis) = 0;
41+
virtual void accept_vis (HIRFullVisitor &vis) = 0;
4242

4343
protected:
4444
// Clone function impl to be overriden in base classes
@@ -67,7 +67,7 @@ class ConfigurationOption : public ConfigurationPredicate
6767
// Name-only constructor
6868
ConfigurationOption (Identifier option_name) : option_name (option_name) {}
6969

70-
void accept_vis (HIRVisitor &vis) override;
70+
void accept_vis (HIRFullVisitor &vis) override;
7171

7272
protected:
7373
/* Use covariance to implement clone function as returning this object rather
@@ -96,7 +96,7 @@ class ConfigurationAll : public ConfigurationPredicate
9696
: predicate_list (predicate_list)
9797
{}
9898

99-
void accept_vis (HIRVisitor &vis) override;
99+
void accept_vis (HIRFullVisitor &vis) override;
100100

101101
protected:
102102
/* Use covariance to implement clone function as returning this object rather
@@ -119,7 +119,7 @@ class ConfigurationAny : public ConfigurationPredicate
119119
: predicate_list (predicate_list)
120120
{}
121121

122-
void accept_vis (HIRVisitor &vis) override;
122+
void accept_vis (HIRFullVisitor &vis) override;
123123

124124
protected:
125125
/* Use covariance to implement clone function as returning this object rather
@@ -159,7 +159,7 @@ class ConfigurationNot : public ConfigurationPredicate
159159
ConfigurationNot (ConfigurationNot &&other) = default;
160160
ConfigurationNot &operator= (ConfigurationNot &&other) = default;
161161

162-
void accept_vis (HIRVisitor &vis) override;
162+
void accept_vis (HIRFullVisitor &vis) override;
163163

164164
protected:
165165
/* Use covariance to implement clone function as returning this object rather

0 commit comments

Comments
 (0)