@@ -229,47 +229,64 @@ impl HirEqInterExpr<'_, '_, '_> {
229
229
( & ExprKind :: AddrOf ( lb, l_mut, le) , & ExprKind :: AddrOf ( rb, r_mut, re) ) => {
230
230
lb == rb && l_mut == r_mut && self . eq_expr ( le, re)
231
231
} ,
232
- ( & ExprKind :: Continue ( li ) , & ExprKind :: Continue ( ri ) ) => {
233
- both ( & li . label , & ri . label , |l , r| l . ident . name == r . ident . name )
234
- } ,
232
+ ( & ExprKind :: AddrOf ( .. ) , _ ) => false ,
233
+ ( & ExprKind :: Array ( l ) , & ExprKind :: Array ( r ) ) => self . eq_exprs ( l , r ) ,
234
+ ( & ExprKind :: Array ( _ ) , _ ) => false ,
235
235
( & ExprKind :: Assign ( ll, lr, _) , & ExprKind :: Assign ( rl, rr, _) ) => {
236
236
self . inner . allow_side_effects && self . eq_expr ( ll, rl) && self . eq_expr ( lr, rr)
237
237
} ,
238
+ ( & ExprKind :: Assign ( ..) , _) => false ,
238
239
( & ExprKind :: AssignOp ( ref lo, ll, lr) , & ExprKind :: AssignOp ( ref ro, rl, rr) ) => {
239
240
self . inner . allow_side_effects && lo. node == ro. node && self . eq_expr ( ll, rl) && self . eq_expr ( lr, rr)
240
241
} ,
241
- ( & ExprKind :: Block ( l , _ ) , & ExprKind :: Block ( r , _ ) ) => self . eq_block ( l , r ) ,
242
+ ( & ExprKind :: AssignOp ( .. ) , _ ) => false ,
242
243
( & ExprKind :: Binary ( l_op, ll, lr) , & ExprKind :: Binary ( r_op, rl, rr) ) => {
243
244
l_op. node == r_op. node && self . eq_expr ( ll, rl) && self . eq_expr ( lr, rr)
244
245
|| swap_binop ( l_op. node , ll, lr) . map_or ( false , |( l_op, ll, lr) | {
245
246
l_op == r_op. node && self . eq_expr ( ll, rl) && self . eq_expr ( lr, rr)
246
247
} )
247
248
} ,
249
+ ( & ExprKind :: Binary ( ..) , _) => false ,
250
+ ( & ExprKind :: Block ( l, _) , & ExprKind :: Block ( r, _) ) => self . eq_block ( l, r) ,
251
+ ( & ExprKind :: Block ( ..) , _) => false ,
252
+ ( & ExprKind :: Box ( l) , & ExprKind :: Box ( r) ) => self . eq_expr ( l, r) ,
253
+ ( & ExprKind :: Box ( ..) , _) => false ,
248
254
( & ExprKind :: Break ( li, ref le) , & ExprKind :: Break ( ri, ref re) ) => {
249
255
both ( & li. label , & ri. label , |l, r| l. ident . name == r. ident . name )
250
256
&& both ( le, re, |l, r| self . eq_expr ( l, r) )
251
257
} ,
252
- ( & ExprKind :: Box ( l) , & ExprKind :: Box ( r) ) => self . eq_expr ( l, r) ,
253
- ( & ExprKind :: Call ( l_fun, l_args) , & ExprKind :: Call ( r_fun, r_args) ) => {
254
- self . inner . allow_side_effects && self . eq_expr ( l_fun, r_fun) && self . eq_exprs ( l_args, r_args)
255
- } ,
258
+ ( & ExprKind :: Break ( ..) , _) => false ,
259
+ ( & ExprKind :: Call ( ..) , _) => false ,
256
260
( & ExprKind :: Cast ( lx, lt) , & ExprKind :: Cast ( rx, rt) ) | ( & ExprKind :: Type ( lx, lt) , & ExprKind :: Type ( rx, rt) ) => {
257
261
self . eq_expr ( lx, rx) && self . eq_ty ( lt, rt)
258
262
} ,
263
+ ( & ExprKind :: Cast ( ..) , _) => false ,
264
+ ( & ExprKind :: Continue ( li) , & ExprKind :: Continue ( ri) ) => {
265
+ both ( & li. label , & ri. label , |l, r| l. ident . name == r. ident . name )
266
+ } ,
267
+ ( & ExprKind :: Continue ( ..) , _) => false ,
268
+ ( & ExprKind :: DropTemps ( le) , & ExprKind :: DropTemps ( re) ) => self . eq_expr ( le, re) ,
269
+ ( & ExprKind :: DropTemps ( ..) , _) => false ,
259
270
( & ExprKind :: Field ( l_f_exp, ref l_f_ident) , & ExprKind :: Field ( r_f_exp, ref r_f_ident) ) => {
260
271
l_f_ident. name == r_f_ident. name && self . eq_expr ( l_f_exp, r_f_exp)
261
272
} ,
273
+ ( & ExprKind :: Field ( ..) , _) => false ,
262
274
( & ExprKind :: Index ( la, li) , & ExprKind :: Index ( ra, ri) ) => self . eq_expr ( la, ra) && self . eq_expr ( li, ri) ,
275
+ ( & ExprKind :: Index ( ..) , _) => false ,
263
276
( & ExprKind :: If ( lc, lt, ref le) , & ExprKind :: If ( rc, rt, ref re) ) => {
264
277
self . eq_expr ( lc, rc) && self . eq_expr ( lt, rt) && both ( le, re, |l, r| self . eq_expr ( l, r) )
265
278
} ,
279
+ ( & ExprKind :: If ( ..) , _) => false ,
266
280
( & ExprKind :: Let ( l) , & ExprKind :: Let ( r) ) => {
267
281
self . eq_pat ( l. pat , r. pat ) && both ( & l. ty , & r. ty , |l, r| self . eq_ty ( l, r) ) && self . eq_expr ( l. init , r. init )
268
282
} ,
283
+ ( & ExprKind :: Let ( ..) , _) => false ,
269
284
( ExprKind :: Lit ( l) , ExprKind :: Lit ( r) ) => l. node == r. node ,
285
+ ( ExprKind :: Lit ( ..) , _) => false ,
270
286
( & ExprKind :: Loop ( lb, ref ll, ref lls, _) , & ExprKind :: Loop ( rb, ref rl, ref rls, _) ) => {
271
287
lls == rls && self . eq_block ( lb, rb) && both ( ll, rl, |l, r| l. ident . name == r. ident . name )
272
288
} ,
289
+ ( & ExprKind :: Loop ( ..) , _) => false ,
273
290
( & ExprKind :: Match ( le, la, ref ls) , & ExprKind :: Match ( re, ra, ref rs) ) => {
274
291
ls == rs
275
292
&& self . eq_expr ( le, re)
@@ -279,6 +296,7 @@ impl HirEqInterExpr<'_, '_, '_> {
279
296
&& self . eq_expr ( l. body , r. body )
280
297
} )
281
298
} ,
299
+ ( & ExprKind :: Match ( ..) , _) => false ,
282
300
(
283
301
& ExprKind :: MethodCall ( l_path, l_receiver, l_args, _) ,
284
302
& ExprKind :: MethodCall ( r_path, r_receiver, r_args, _) ,
@@ -288,21 +306,31 @@ impl HirEqInterExpr<'_, '_, '_> {
288
306
&& self . eq_expr ( l_receiver, r_receiver)
289
307
&& self . eq_exprs ( l_args, r_args)
290
308
} ,
309
+ ( & ExprKind :: MethodCall ( ..) , _) => false ,
310
+ ( ExprKind :: Path ( l) , ExprKind :: Path ( r) ) => self . eq_qpath ( l, r) ,
311
+ ( ExprKind :: Path ( ..) , _) => false ,
291
312
( & ExprKind :: Repeat ( le, ll) , & ExprKind :: Repeat ( re, rl) ) => {
292
313
self . eq_expr ( le, re) && self . eq_array_length ( ll, rl)
293
314
} ,
315
+ ( & ExprKind :: Repeat ( ..) , _) => false ,
294
316
( ExprKind :: Ret ( l) , ExprKind :: Ret ( r) ) => both ( l, r, |l, r| self . eq_expr ( l, r) ) ,
295
- ( ExprKind :: Path ( l ) , ExprKind :: Path ( r ) ) => self . eq_qpath ( l , r ) ,
317
+ ( ExprKind :: Ret ( .. ) , _ ) => false ,
296
318
( & ExprKind :: Struct ( l_path, lf, ref lo) , & ExprKind :: Struct ( r_path, rf, ref ro) ) => {
297
319
self . eq_qpath ( l_path, r_path)
298
320
&& both ( lo, ro, |l, r| self . eq_expr ( l, r) )
299
321
&& over ( lf, rf, |l, r| self . eq_expr_field ( l, r) )
300
322
} ,
323
+ ( & ExprKind :: Struct ( ..) , _) => false ,
301
324
( & ExprKind :: Tup ( l_tup) , & ExprKind :: Tup ( r_tup) ) => self . eq_exprs ( l_tup, r_tup) ,
325
+ ( & ExprKind :: Tup ( ..) , _) => false ,
302
326
( & ExprKind :: Unary ( l_op, le) , & ExprKind :: Unary ( r_op, re) ) => l_op == r_op && self . eq_expr ( le, re) ,
303
- ( & ExprKind :: Array ( l) , & ExprKind :: Array ( r) ) => self . eq_exprs ( l, r) ,
304
- ( & ExprKind :: DropTemps ( le) , & ExprKind :: DropTemps ( re) ) => self . eq_expr ( le, re) ,
305
- _ => false ,
327
+ ( & ExprKind :: Unary ( ..) , _) => false ,
328
+ ( & ExprKind :: ConstBlock ( _) , _)
329
+ | ( & ExprKind :: Closure ( _) , _)
330
+ | ( & ExprKind :: InlineAsm ( _) , _)
331
+ | ( & ExprKind :: Yield ( ..) , _)
332
+ | ( & ExprKind :: Type ( ..) , _)
333
+ | ( & ExprKind :: Err , _) => false ,
306
334
} ;
307
335
( is_eq && ( !self . should_ignore ( left) || !self . should_ignore ( right) ) )
308
336
|| self . inner . expr_fallback . as_mut ( ) . map_or ( false , |f| f ( left, right) )
0 commit comments