@@ -41,106 +41,100 @@ pub fn walk_expr<'thir, 'tcx: 'thir, V: Visitor<'thir, 'tcx>>(
41
41
expr : & ' thir Expr < ' tcx > ,
42
42
) {
43
43
use ExprKind :: * ;
44
- match expr. kind {
44
+ let Expr { kind, ty, temp_lifetime, span } = expr;
45
+ match kind {
45
46
Scope { value, region_scope : _, lint_level : _ } => {
46
- visitor. visit_expr ( & visitor. thir ( ) [ value] )
47
+ visitor. visit_expr ( visitor. thir ( ) [ value] )
47
48
}
48
- Box { value } => visitor. visit_expr ( & visitor. thir ( ) [ value] ) ,
49
+ Box { value } => visitor. visit_expr ( visitor. thir ( ) [ value] ) ,
49
50
If { cond, then, else_opt, if_then_scope : _ } => {
50
- visitor. visit_expr ( & visitor. thir ( ) [ cond] ) ;
51
- visitor. visit_expr ( & visitor. thir ( ) [ then] ) ;
51
+ visitor. visit_expr ( visitor. thir ( ) [ cond] ) ;
52
+ visitor. visit_expr ( visitor. thir ( ) [ then] ) ;
52
53
if let Some ( else_expr) = else_opt {
53
- visitor. visit_expr ( & visitor. thir ( ) [ else_expr] ) ;
54
+ visitor. visit_expr ( visitor. thir ( ) [ else_expr] ) ;
54
55
}
55
56
}
56
- Call { fun, ref args, ty : _, from_hir_call : _, fn_span : _ } => {
57
- visitor. visit_expr ( & visitor. thir ( ) [ fun] ) ;
58
- for & arg in & * * args {
59
- visitor. visit_expr ( & visitor. thir ( ) [ arg] ) ;
57
+ Call { fun, args, ty : _, from_hir_call : _, fn_span : _ } => {
58
+ visitor. visit_expr ( visitor. thir ( ) [ fun] ) ;
59
+ for arg in args {
60
+ visitor. visit_expr ( visitor. thir ( ) [ arg] ) ;
60
61
}
61
62
}
62
63
ByUse { expr, span : _ } => {
63
- visitor. visit_expr ( & visitor. thir ( ) [ expr] ) ;
64
+ visitor. visit_expr ( visitor. thir ( ) [ expr] ) ;
64
65
}
65
- Deref { arg } => visitor. visit_expr ( & visitor. thir ( ) [ arg] ) ,
66
+ Deref { arg } => visitor. visit_expr ( visitor. thir ( ) [ arg] ) ,
66
67
Binary { lhs, rhs, op : _ } | LogicalOp { lhs, rhs, op : _ } => {
67
- visitor. visit_expr ( & visitor. thir ( ) [ lhs] ) ;
68
- visitor. visit_expr ( & visitor. thir ( ) [ rhs] ) ;
68
+ visitor. visit_expr ( visitor. thir ( ) [ lhs] ) ;
69
+ visitor. visit_expr ( visitor. thir ( ) [ rhs] ) ;
69
70
}
70
- Unary { arg, op : _ } => visitor. visit_expr ( & visitor. thir ( ) [ arg] ) ,
71
- Cast { source } => visitor. visit_expr ( & visitor. thir ( ) [ source] ) ,
72
- Use { source } => visitor. visit_expr ( & visitor. thir ( ) [ source] ) ,
73
- NeverToAny { source } => visitor. visit_expr ( & visitor. thir ( ) [ source] ) ,
71
+ Unary { arg, op : _ } => visitor. visit_expr ( visitor. thir ( ) [ arg] ) ,
72
+ Cast { source } => visitor. visit_expr ( visitor. thir ( ) [ source] ) ,
73
+ Use { source } => visitor. visit_expr ( visitor. thir ( ) [ source] ) ,
74
+ NeverToAny { source } => visitor. visit_expr ( visitor. thir ( ) [ source] ) ,
74
75
PointerCoercion { source, cast : _, is_from_as_cast : _ } => {
75
- visitor. visit_expr ( & visitor. thir ( ) [ source] )
76
+ visitor. visit_expr ( visitor. thir ( ) [ source] )
76
77
}
77
- Let { expr, ref pat } => {
78
- visitor. visit_expr ( & visitor. thir ( ) [ expr] ) ;
78
+ Let { expr, pat } => {
79
+ visitor. visit_expr ( visitor. thir ( ) [ expr] ) ;
79
80
visitor. visit_pat ( pat) ;
80
81
}
81
- Loop { body } => visitor. visit_expr ( & visitor. thir ( ) [ body] ) ,
82
- Match { scrutinee, ref arms, .. } => {
83
- visitor. visit_expr ( & visitor. thir ( ) [ scrutinee] ) ;
84
- for & arm in & * * arms {
85
- visitor. visit_arm ( & visitor. thir ( ) [ arm] ) ;
82
+ Loop { body } => visitor. visit_expr ( visitor. thir ( ) [ body] ) ,
83
+ Match { scrutinee, arms, .. } => {
84
+ visitor. visit_expr ( visitor. thir ( ) [ scrutinee] ) ;
85
+ for arm in arms {
86
+ visitor. visit_arm ( visitor. thir ( ) [ arm] ) ;
86
87
}
87
88
}
88
- Block { block } => visitor. visit_block ( & visitor. thir ( ) [ block] ) ,
89
+ Block { block } => visitor. visit_block ( visitor. thir ( ) [ block] ) ,
89
90
Assign { lhs, rhs } | AssignOp { lhs, rhs, op : _ } => {
90
- visitor. visit_expr ( & visitor. thir ( ) [ lhs] ) ;
91
- visitor. visit_expr ( & visitor. thir ( ) [ rhs] ) ;
91
+ visitor. visit_expr ( visitor. thir ( ) [ lhs] ) ;
92
+ visitor. visit_expr ( visitor. thir ( ) [ rhs] ) ;
92
93
}
93
- Field { lhs, variant_index : _, name : _ } => visitor. visit_expr ( & visitor. thir ( ) [ lhs] ) ,
94
+ Field { lhs, variant_index : _, name : _ } => visitor. visit_expr ( visitor. thir ( ) [ lhs] ) ,
94
95
Index { lhs, index } => {
95
- visitor. visit_expr ( & visitor. thir ( ) [ lhs] ) ;
96
- visitor. visit_expr ( & visitor. thir ( ) [ index] ) ;
96
+ visitor. visit_expr ( visitor. thir ( ) [ lhs] ) ;
97
+ visitor. visit_expr ( visitor. thir ( ) [ index] ) ;
97
98
}
98
99
VarRef { id : _ } | UpvarRef { closure_def_id : _, var_hir_id : _ } => { }
99
- Borrow { arg, borrow_kind : _ } => visitor. visit_expr ( & visitor. thir ( ) [ arg] ) ,
100
- RawBorrow { arg, mutability : _ } => visitor. visit_expr ( & visitor. thir ( ) [ arg] ) ,
100
+ Borrow { arg, borrow_kind : _ } => visitor. visit_expr ( visitor. thir ( ) [ arg] ) ,
101
+ RawBorrow { arg, mutability : _ } => visitor. visit_expr ( visitor. thir ( ) [ arg] ) ,
101
102
Break { value, label : _ } => {
102
103
if let Some ( value) = value {
103
- visitor. visit_expr ( & visitor. thir ( ) [ value] )
104
+ visitor. visit_expr ( visitor. thir ( ) [ value] )
104
105
}
105
106
}
106
107
Continue { label : _ } => { }
107
108
Return { value } => {
108
109
if let Some ( value) = value {
109
- visitor. visit_expr ( & visitor. thir ( ) [ value] )
110
+ visitor. visit_expr ( visitor. thir ( ) [ value] )
110
111
}
111
112
}
112
- Become { value } => visitor. visit_expr ( & visitor. thir ( ) [ value] ) ,
113
+ Become { value } => visitor. visit_expr ( visitor. thir ( ) [ value] ) ,
113
114
ConstBlock { did : _, args : _ } => { }
114
115
Repeat { value, count : _ } => {
115
- visitor. visit_expr ( & visitor. thir ( ) [ value] ) ;
116
+ visitor. visit_expr ( visitor. thir ( ) [ value] ) ;
116
117
}
117
- Array { ref fields } | Tuple { ref fields } => {
118
- for & field in & * * fields {
119
- visitor. visit_expr ( & visitor. thir ( ) [ field] ) ;
118
+ Array { ref fields } | Tuple { fields } => {
119
+ for field in fields {
120
+ visitor. visit_expr ( visitor. thir ( ) [ field] ) ;
120
121
}
121
122
}
122
- Adt ( box AdtExpr {
123
- ref fields,
124
- ref base,
125
- adt_def : _,
126
- variant_index : _,
127
- args : _,
128
- user_ty : _,
129
- } ) => {
130
- for field in & * * fields {
131
- visitor. visit_expr ( & visitor. thir ( ) [ field. expr ] ) ;
123
+ Adt ( box AdtExpr { fields, base, adt_def : _, variant_index : _, args : _, user_ty : _ } ) => {
124
+ for field in fields {
125
+ visitor. visit_expr ( visitor. thir ( ) [ field. expr ] ) ;
132
126
}
133
127
if let AdtExprBase :: Base ( base) = base {
134
- visitor. visit_expr ( & visitor. thir ( ) [ base. base ] ) ;
128
+ visitor. visit_expr ( visitor. thir ( ) [ base. base ] ) ;
135
129
}
136
130
}
137
131
PlaceTypeAscription { source, user_ty : _, user_ty_span : _ }
138
132
| ValueTypeAscription { source, user_ty : _, user_ty_span : _ } => {
139
- visitor. visit_expr ( & visitor. thir ( ) [ source] )
133
+ visitor. visit_expr ( visitor. thir ( ) [ source] )
140
134
}
141
135
PlaceUnwrapUnsafeBinder { source }
142
136
| ValueUnwrapUnsafeBinder { source }
143
- | WrapUnsafeBinder { source } => visitor. visit_expr ( & visitor. thir ( ) [ source] ) ,
137
+ | WrapUnsafeBinder { source } => visitor. visit_expr ( visitor. thir ( ) [ source] ) ,
144
138
Closure ( box ClosureExpr {
145
139
closure_id : _,
146
140
args : _,
@@ -156,43 +150,44 @@ pub fn walk_expr<'thir, 'tcx: 'thir, V: Visitor<'thir, 'tcx>>(
156
150
StaticRef { alloc_id : _, ty : _, def_id : _ } => { }
157
151
InlineAsm ( box InlineAsmExpr {
158
152
asm_macro : _,
159
- ref operands,
153
+ operands,
160
154
template : _,
161
155
options : _,
162
156
line_spans : _,
163
157
} ) => {
164
- for op in & * * operands {
158
+ for op in operands {
165
159
use InlineAsmOperand :: * ;
166
160
match op {
167
161
In { expr, reg : _ }
168
162
| Out { expr : Some ( expr) , reg : _, late : _ }
169
- | InOut { expr, reg : _, late : _ } => visitor. visit_expr ( & visitor. thir ( ) [ * expr] ) ,
163
+ | InOut { expr, reg : _, late : _ } => visitor. visit_expr ( visitor. thir ( ) [ expr] ) ,
170
164
SplitInOut { in_expr, out_expr, reg : _, late : _ } => {
171
- visitor. visit_expr ( & visitor. thir ( ) [ * in_expr] ) ;
165
+ visitor. visit_expr ( visitor. thir ( ) [ in_expr] ) ;
172
166
if let Some ( out_expr) = out_expr {
173
- visitor. visit_expr ( & visitor. thir ( ) [ * out_expr] ) ;
167
+ visitor. visit_expr ( visitor. thir ( ) [ out_expr] ) ;
174
168
}
175
169
}
176
170
Out { expr : None , reg : _, late : _ }
177
171
| Const { value : _, span : _ }
178
172
| SymFn { value : _ }
179
173
| SymStatic { def_id : _ } => { }
180
- Label { block } => visitor. visit_block ( & visitor. thir ( ) [ * block] ) ,
174
+ Label { block } => visitor. visit_block ( visitor. thir ( ) [ block] ) ,
181
175
}
182
176
}
183
177
}
184
178
OffsetOf { container : _, fields : _ } => { }
185
179
ThreadLocalRef ( _) => { }
186
- Yield { value } => visitor. visit_expr ( & visitor. thir ( ) [ value] ) ,
180
+ Yield { value } => visitor. visit_expr ( visitor. thir ( ) [ value] ) ,
187
181
}
188
182
}
189
183
190
184
pub fn walk_stmt < ' thir , ' tcx : ' thir , V : Visitor < ' thir , ' tcx > > (
191
185
visitor : & mut V ,
192
186
stmt : & ' thir Stmt < ' tcx > ,
193
187
) {
194
- match & stmt. kind {
195
- StmtKind :: Expr { expr, scope : _ } => visitor. visit_expr ( & visitor. thir ( ) [ * expr] ) ,
188
+ let Stmt { kind } = stmt;
189
+ match kind {
190
+ StmtKind :: Expr { expr, scope : _ } => visitor. visit_expr ( visitor. thir ( ) [ expr] ) ,
196
191
StmtKind :: Let {
197
192
initializer,
198
193
remainder_scope : _,
@@ -203,11 +198,11 @@ pub fn walk_stmt<'thir, 'tcx: 'thir, V: Visitor<'thir, 'tcx>>(
203
198
span : _,
204
199
} => {
205
200
if let Some ( init) = initializer {
206
- visitor. visit_expr ( & visitor. thir ( ) [ * init] ) ;
201
+ visitor. visit_expr ( visitor. thir ( ) [ init] ) ;
207
202
}
208
203
visitor. visit_pat ( pattern) ;
209
204
if let Some ( block) = else_block {
210
- visitor. visit_block ( & visitor. thir ( ) [ * block] )
205
+ visitor. visit_block ( visitor. thir ( ) [ block] )
211
206
}
212
207
}
213
208
}
@@ -217,23 +212,26 @@ pub fn walk_block<'thir, 'tcx: 'thir, V: Visitor<'thir, 'tcx>>(
217
212
visitor : & mut V ,
218
213
block : & ' thir Block ,
219
214
) {
220
- for & stmt in & * block. stmts {
221
- visitor. visit_stmt ( & visitor. thir ( ) [ stmt] ) ;
215
+ let Block { targeted_by_break : _, region_scope : _, span : _, stmts, expr, safety_mode : _ } =
216
+ block;
217
+ for stmt in stmts {
218
+ visitor. visit_stmt ( visitor. thir ( ) [ stmt] ) ;
222
219
}
223
- if let Some ( expr) = block . expr {
224
- visitor. visit_expr ( & visitor. thir ( ) [ expr] ) ;
220
+ if let Some ( expr) = expr {
221
+ visitor. visit_expr ( visitor. thir ( ) [ expr] ) ;
225
222
}
226
223
}
227
224
228
225
pub fn walk_arm < ' thir , ' tcx : ' thir , V : Visitor < ' thir , ' tcx > > (
229
226
visitor : & mut V ,
230
227
arm : & ' thir Arm < ' tcx > ,
231
228
) {
232
- if let Some ( expr) = arm. guard {
233
- visitor. visit_expr ( & visitor. thir ( ) [ expr] )
229
+ let Arm { pattern, guard, body, lint_level : _, scope : _, span : _ } = arm;
230
+ if let Some ( expr) = guard {
231
+ visitor. visit_expr ( visitor. thir ( ) [ expr] )
234
232
}
235
- visitor. visit_pat ( & arm . pattern ) ;
236
- visitor. visit_expr ( & visitor. thir ( ) [ arm . body ] ) ;
233
+ visitor. visit_pat ( pattern) ;
234
+ visitor. visit_expr ( visitor. thir ( ) [ body] ) ;
237
235
}
238
236
239
237
pub fn walk_pat < ' thir , ' tcx : ' thir , V : Visitor < ' thir , ' tcx > > (
@@ -249,7 +247,8 @@ pub(crate) fn for_each_immediate_subpat<'a, 'tcx>(
249
247
pat : & ' a Pat < ' tcx > ,
250
248
mut callback : impl FnMut ( & ' a Pat < ' tcx > ) ,
251
249
) {
252
- match & pat. kind {
250
+ let Pat { ty : _, span : _, kind } = pat;
251
+ match kind {
253
252
PatKind :: Missing
254
253
| PatKind :: Wild
255
254
| PatKind :: Binding { subpattern : None , .. }
0 commit comments