25
25
namespace Rust {
26
26
namespace Compile {
27
27
28
- class CompileBlock : public HIRCompileBase
28
+ class CompileBlock : public HIRCompileBase , public HIR ::HIRExpressionVisitor
29
29
{
30
- using Rust::Compile::HIRCompileBase::visit;
31
-
32
30
public:
33
31
static tree compile (HIR::BlockExpr *expr, Context *ctx, Bvariable *result)
34
32
{
@@ -39,6 +37,62 @@ class CompileBlock : public HIRCompileBase
39
37
40
38
void visit (HIR::BlockExpr &expr) override ;
41
39
40
+ // Empty visit for unused Expression HIR nodes.
41
+ void visit (HIR::PathInExpression &) override {}
42
+ void visit (HIR::QualifiedPathInExpression &) override {}
43
+ void visit (HIR::ClosureExprInner &) override {}
44
+ void visit (HIR::ClosureExprInnerTyped &) override {}
45
+ void visit (HIR::StructExprFieldIdentifier &) override {}
46
+ void visit (HIR::StructExprFieldIdentifierValue &) override {}
47
+ void visit (HIR::StructExprFieldIndexValue &) override {}
48
+ void visit (HIR::StructExprStruct &) override {}
49
+ void visit (HIR::StructExprStructFields &) override {}
50
+ void visit (HIR::IdentifierExpr &) override {}
51
+ void visit (HIR::LiteralExpr &) override {}
52
+ void visit (HIR::BorrowExpr &) override {}
53
+ void visit (HIR::DereferenceExpr &) override {}
54
+ void visit (HIR::ErrorPropagationExpr &) override {}
55
+ void visit (HIR::NegationExpr &) override {}
56
+ void visit (HIR::ArithmeticOrLogicalExpr &) override {}
57
+ void visit (HIR::ComparisonExpr &) override {}
58
+ void visit (HIR::LazyBooleanExpr &) override {}
59
+ void visit (HIR::TypeCastExpr &) override {}
60
+ void visit (HIR::AssignmentExpr &) override {}
61
+ void visit (HIR::CompoundAssignmentExpr &) override {}
62
+ void visit (HIR::GroupedExpr &) override {}
63
+ void visit (HIR::ArrayExpr &) override {}
64
+ void visit (HIR::ArrayIndexExpr &) override {}
65
+ void visit (HIR::TupleExpr &) override {}
66
+ void visit (HIR::TupleIndexExpr &) override {}
67
+ void visit (HIR::CallExpr &) override {}
68
+ void visit (HIR::MethodCallExpr &) override {}
69
+ void visit (HIR::FieldAccessExpr &) override {}
70
+ void visit (HIR::ContinueExpr &) override {}
71
+ void visit (HIR::BreakExpr &) override {}
72
+ void visit (HIR::RangeFromToExpr &) override {}
73
+ void visit (HIR::RangeFromExpr &) override {}
74
+ void visit (HIR::RangeToExpr &) override {}
75
+ void visit (HIR::RangeFullExpr &) override {}
76
+ void visit (HIR::RangeFromToInclExpr &) override {}
77
+ void visit (HIR::RangeToInclExpr &) override {}
78
+ void visit (HIR::ReturnExpr &) override {}
79
+ void visit (HIR::UnsafeBlockExpr &) override {}
80
+ void visit (HIR::LoopExpr &) override {}
81
+ void visit (HIR::WhileLoopExpr &) override {}
82
+ void visit (HIR::WhileLetLoopExpr &) override {}
83
+ void visit (HIR::ForLoopExpr &) override {}
84
+ void visit (HIR::IfExpr &) override {}
85
+ void visit (HIR::IfExprConseqElse &) override {}
86
+ void visit (HIR::IfExprConseqIf &) override {}
87
+ void visit (HIR::IfExprConseqIfLet &) override {}
88
+ void visit (HIR::IfLetExpr &) override {}
89
+ void visit (HIR::IfLetExprConseqElse &) override {}
90
+ void visit (HIR::IfLetExprConseqIf &) override {}
91
+ void visit (HIR::IfLetExprConseqIfLet &) override {}
92
+ void visit (HIR::MatchExpr &) override {}
93
+ void visit (HIR::AwaitExpr &) override {}
94
+ void visit (HIR::AsyncBlockExpr &) override {}
95
+
42
96
private:
43
97
CompileBlock (Context *ctx, Bvariable *result)
44
98
: HIRCompileBase (ctx), translated (nullptr ), result (result)
@@ -48,10 +102,9 @@ class CompileBlock : public HIRCompileBase
48
102
Bvariable *result;
49
103
};
50
104
51
- class CompileConditionalBlocks : public HIRCompileBase
105
+ class CompileConditionalBlocks : public HIRCompileBase ,
106
+ public HIR::HIRExpressionVisitor
52
107
{
53
- using Rust::Compile::HIRCompileBase::visit;
54
-
55
108
public:
56
109
static tree compile (HIR::IfExpr *expr, Context *ctx, Bvariable *result)
57
110
{
@@ -61,11 +114,63 @@ class CompileConditionalBlocks : public HIRCompileBase
61
114
}
62
115
63
116
void visit (HIR::IfExpr &expr) override ;
64
-
65
117
void visit (HIR::IfExprConseqElse &expr) override ;
66
-
67
118
void visit (HIR::IfExprConseqIf &expr) override ;
68
119
120
+ // Empty visit for unused Expression HIR nodes.
121
+ void visit (HIR::PathInExpression &) override {}
122
+ void visit (HIR::QualifiedPathInExpression &) override {}
123
+ void visit (HIR::ClosureExprInner &) override {}
124
+ void visit (HIR::ClosureExprInnerTyped &) override {}
125
+ void visit (HIR::StructExprFieldIdentifier &) override {}
126
+ void visit (HIR::StructExprFieldIdentifierValue &) override {}
127
+ void visit (HIR::StructExprFieldIndexValue &) override {}
128
+ void visit (HIR::StructExprStruct &) override {}
129
+ void visit (HIR::StructExprStructFields &) override {}
130
+ void visit (HIR::IdentifierExpr &) override {}
131
+ void visit (HIR::LiteralExpr &) override {}
132
+ void visit (HIR::BorrowExpr &) override {}
133
+ void visit (HIR::DereferenceExpr &) override {}
134
+ void visit (HIR::ErrorPropagationExpr &) override {}
135
+ void visit (HIR::NegationExpr &) override {}
136
+ void visit (HIR::ArithmeticOrLogicalExpr &) override {}
137
+ void visit (HIR::ComparisonExpr &) override {}
138
+ void visit (HIR::LazyBooleanExpr &) override {}
139
+ void visit (HIR::TypeCastExpr &) override {}
140
+ void visit (HIR::AssignmentExpr &) override {}
141
+ void visit (HIR::CompoundAssignmentExpr &) override {}
142
+ void visit (HIR::GroupedExpr &) override {}
143
+ void visit (HIR::ArrayExpr &) override {}
144
+ void visit (HIR::ArrayIndexExpr &) override {}
145
+ void visit (HIR::TupleExpr &) override {}
146
+ void visit (HIR::TupleIndexExpr &) override {}
147
+ void visit (HIR::CallExpr &) override {}
148
+ void visit (HIR::MethodCallExpr &) override {}
149
+ void visit (HIR::FieldAccessExpr &) override {}
150
+ void visit (HIR::BlockExpr &) override {}
151
+ void visit (HIR::ContinueExpr &) override {}
152
+ void visit (HIR::BreakExpr &) override {}
153
+ void visit (HIR::RangeFromToExpr &) override {}
154
+ void visit (HIR::RangeFromExpr &) override {}
155
+ void visit (HIR::RangeToExpr &) override {}
156
+ void visit (HIR::RangeFullExpr &) override {}
157
+ void visit (HIR::RangeFromToInclExpr &) override {}
158
+ void visit (HIR::RangeToInclExpr &) override {}
159
+ void visit (HIR::ReturnExpr &) override {}
160
+ void visit (HIR::UnsafeBlockExpr &) override {}
161
+ void visit (HIR::LoopExpr &) override {}
162
+ void visit (HIR::WhileLoopExpr &) override {}
163
+ void visit (HIR::WhileLetLoopExpr &) override {}
164
+ void visit (HIR::ForLoopExpr &) override {}
165
+ void visit (HIR::IfExprConseqIfLet &) override {}
166
+ void visit (HIR::IfLetExpr &) override {}
167
+ void visit (HIR::IfLetExprConseqElse &) override {}
168
+ void visit (HIR::IfLetExprConseqIf &) override {}
169
+ void visit (HIR::IfLetExprConseqIfLet &) override {}
170
+ void visit (HIR::MatchExpr &) override {}
171
+ void visit (HIR::AwaitExpr &) override {}
172
+ void visit (HIR::AsyncBlockExpr &) override {}
173
+
69
174
private:
70
175
CompileConditionalBlocks (Context *ctx, Bvariable *result)
71
176
: HIRCompileBase (ctx), translated (nullptr ), result (result)
@@ -75,10 +180,9 @@ class CompileConditionalBlocks : public HIRCompileBase
75
180
Bvariable *result;
76
181
};
77
182
78
- class CompileExprWithBlock : public HIRCompileBase
183
+ class CompileExprWithBlock : public HIRCompileBase ,
184
+ public HIR::HIRExpressionVisitor
79
185
{
80
- using Rust::Compile::HIRCompileBase::visit;
81
-
82
186
public:
83
187
static tree compile (HIR::ExprWithBlock *expr, Context *ctx,
84
188
Bvariable *result)
@@ -103,6 +207,60 @@ class CompileExprWithBlock : public HIRCompileBase
103
207
translated = CompileConditionalBlocks::compile (&expr, ctx, result);
104
208
}
105
209
210
+ // Empty visit for unused Expression HIR nodes.
211
+ void visit (HIR::PathInExpression &) override {}
212
+ void visit (HIR::QualifiedPathInExpression &) override {}
213
+ void visit (HIR::ClosureExprInner &) override {}
214
+ void visit (HIR::ClosureExprInnerTyped &) override {}
215
+ void visit (HIR::StructExprFieldIdentifier &) override {}
216
+ void visit (HIR::StructExprFieldIdentifierValue &) override {}
217
+ void visit (HIR::StructExprFieldIndexValue &) override {}
218
+ void visit (HIR::StructExprStruct &) override {}
219
+ void visit (HIR::StructExprStructFields &) override {}
220
+ void visit (HIR::IdentifierExpr &) override {}
221
+ void visit (HIR::LiteralExpr &) override {}
222
+ void visit (HIR::BorrowExpr &) override {}
223
+ void visit (HIR::DereferenceExpr &) override {}
224
+ void visit (HIR::ErrorPropagationExpr &) override {}
225
+ void visit (HIR::NegationExpr &) override {}
226
+ void visit (HIR::ArithmeticOrLogicalExpr &) override {}
227
+ void visit (HIR::ComparisonExpr &) override {}
228
+ void visit (HIR::LazyBooleanExpr &) override {}
229
+ void visit (HIR::TypeCastExpr &) override {}
230
+ void visit (HIR::AssignmentExpr &) override {}
231
+ void visit (HIR::CompoundAssignmentExpr &) override {}
232
+ void visit (HIR::GroupedExpr &) override {}
233
+ void visit (HIR::ArrayExpr &) override {}
234
+ void visit (HIR::ArrayIndexExpr &) override {}
235
+ void visit (HIR::TupleExpr &) override {}
236
+ void visit (HIR::TupleIndexExpr &) override {}
237
+ void visit (HIR::CallExpr &) override {}
238
+ void visit (HIR::MethodCallExpr &) override {}
239
+ void visit (HIR::FieldAccessExpr &) override {}
240
+ void visit (HIR::BlockExpr &) override {}
241
+ void visit (HIR::ContinueExpr &) override {}
242
+ void visit (HIR::BreakExpr &) override {}
243
+ void visit (HIR::RangeFromToExpr &) override {}
244
+ void visit (HIR::RangeFromExpr &) override {}
245
+ void visit (HIR::RangeToExpr &) override {}
246
+ void visit (HIR::RangeFullExpr &) override {}
247
+ void visit (HIR::RangeFromToInclExpr &) override {}
248
+ void visit (HIR::RangeToInclExpr &) override {}
249
+ void visit (HIR::ReturnExpr &) override {}
250
+ void visit (HIR::UnsafeBlockExpr &) override {}
251
+ void visit (HIR::LoopExpr &) override {}
252
+ void visit (HIR::WhileLoopExpr &) override {}
253
+ void visit (HIR::WhileLetLoopExpr &) override {}
254
+ void visit (HIR::ForLoopExpr &) override {}
255
+ void visit (HIR::IfExprConseqIfLet &) override {}
256
+ void visit (HIR::IfLetExpr &) override {}
257
+ void visit (HIR::IfLetExprConseqElse &) override {}
258
+ void visit (HIR::IfLetExprConseqIf &) override {}
259
+ void visit (HIR::IfLetExprConseqIfLet &) override {}
260
+ void visit (HIR::MatchExpr &) override {}
261
+ void visit (HIR::AwaitExpr &) override {}
262
+ void visit (HIR::AsyncBlockExpr &) override {}
263
+
106
264
private:
107
265
CompileExprWithBlock (Context *ctx, Bvariable *result)
108
266
: HIRCompileBase (ctx), translated (nullptr ), result (result)
0 commit comments