@@ -41,21 +41,23 @@ pub fn eq_pat(l: &Pat, r: &Pat) -> bool {
41
41
b1 == b2 && eq_id ( * i1, * i2) && both ( s1. as_deref ( ) , s2. as_deref ( ) , eq_pat)
42
42
} ,
43
43
( Range ( lf, lt, le) , Range ( rf, rt, re) ) => {
44
- eq_expr_opt ( lf. as_ref ( ) , rf. as_ref ( ) )
45
- && eq_expr_opt ( lt. as_ref ( ) , rt. as_ref ( ) )
44
+ eq_expr_opt ( lf. as_deref ( ) , rf. as_deref ( ) )
45
+ && eq_expr_opt ( lt. as_deref ( ) , rt. as_deref ( ) )
46
46
&& eq_range_end ( & le. node , & re. node )
47
47
} ,
48
48
( Box ( l) , Box ( r) )
49
49
| ( Ref ( l, Mutability :: Not ) , Ref ( r, Mutability :: Not ) )
50
50
| ( Ref ( l, Mutability :: Mut ) , Ref ( r, Mutability :: Mut ) ) => eq_pat ( l, r) ,
51
51
( Tuple ( l) , Tuple ( r) ) | ( Slice ( l) , Slice ( r) ) => over ( l, r, |l, r| eq_pat ( l, r) ) ,
52
- ( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq. as_ref ( ) , rq. as_ref ( ) , eq_qself) && eq_path ( lp, rp) ,
52
+ ( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq. as_deref ( ) , rq. as_deref ( ) , eq_qself) && eq_path ( lp, rp) ,
53
53
( TupleStruct ( lqself, lp, lfs) , TupleStruct ( rqself, rp, rfs) ) => {
54
- eq_maybe_qself ( lqself. as_ref ( ) , rqself. as_ref ( ) ) && eq_path ( lp, rp) && over ( lfs, rfs, |l, r| eq_pat ( l, r) )
54
+ eq_maybe_qself ( lqself. as_deref ( ) , rqself. as_deref ( ) )
55
+ && eq_path ( lp, rp)
56
+ && over ( lfs, rfs, |l, r| eq_pat ( l, r) )
55
57
} ,
56
58
( Struct ( lqself, lp, lfs, lr) , Struct ( rqself, rp, rfs, rr) ) => {
57
59
lr == rr
58
- && eq_maybe_qself ( lqself. as_ref ( ) , rqself. as_ref ( ) )
60
+ && eq_maybe_qself ( lqself. as_deref ( ) , rqself. as_deref ( ) )
59
61
&& eq_path ( lp, rp)
60
62
&& unordered_over ( lfs, rfs, eq_field_pat)
61
63
} ,
@@ -82,11 +84,11 @@ pub fn eq_field_pat(l: &PatField, r: &PatField) -> bool {
82
84
&& over ( & l. attrs , & r. attrs , eq_attr)
83
85
}
84
86
85
- pub fn eq_qself ( l : & Box < QSelf > , r : & Box < QSelf > ) -> bool {
87
+ pub fn eq_qself ( l : & QSelf , r : & QSelf ) -> bool {
86
88
l. position == r. position && eq_ty ( & l. ty , & r. ty )
87
89
}
88
90
89
- pub fn eq_maybe_qself ( l : Option < & Box < QSelf > > , r : Option < & Box < QSelf > > ) -> bool {
91
+ pub fn eq_maybe_qself ( l : Option < & QSelf > , r : Option < & QSelf > ) -> bool {
90
92
match ( l, r) {
91
93
( Some ( l) , Some ( r) ) => eq_qself ( l, r) ,
92
94
( None , None ) => true ,
@@ -129,8 +131,8 @@ pub fn eq_generic_arg(l: &GenericArg, r: &GenericArg) -> bool {
129
131
}
130
132
}
131
133
132
- pub fn eq_expr_opt ( l : Option < & Box < Expr > > , r : Option < & Box < Expr > > ) -> bool {
133
- both ( l, r, |l , r| eq_expr ( l , r ) )
134
+ pub fn eq_expr_opt ( l : Option < & Expr > , r : Option < & Expr > ) -> bool {
135
+ both ( l, r, eq_expr)
134
136
}
135
137
136
138
pub fn eq_struct_rest ( l : & StructRest , r : & StructRest ) -> bool {
@@ -177,7 +179,7 @@ pub fn eq_expr(l: &Expr, r: &Expr) -> bool {
177
179
( Cast ( l, lt) , Cast ( r, rt) ) | ( Type ( l, lt) , Type ( r, rt) ) => eq_expr ( l, r) && eq_ty ( lt, rt) ,
178
180
( Let ( lp, le, _, _) , Let ( rp, re, _, _) ) => eq_pat ( lp, rp) && eq_expr ( le, re) ,
179
181
( If ( lc, lt, le) , If ( rc, rt, re) ) => {
180
- eq_expr ( lc, rc) && eq_block ( lt, rt) && eq_expr_opt ( le. as_ref ( ) , re. as_ref ( ) )
182
+ eq_expr ( lc, rc) && eq_block ( lt, rt) && eq_expr_opt ( le. as_deref ( ) , re. as_deref ( ) )
181
183
} ,
182
184
( While ( lc, lt, ll) , While ( rc, rt, rl) ) => {
183
185
eq_label ( ll. as_ref ( ) , rl. as_ref ( ) ) && eq_expr ( lc, rc) && eq_block ( lt, rt)
@@ -201,9 +203,11 @@ pub fn eq_expr(l: &Expr, r: &Expr) -> bool {
201
203
( Loop ( lt, ll, _) , Loop ( rt, rl, _) ) => eq_label ( ll. as_ref ( ) , rl. as_ref ( ) ) && eq_block ( lt, rt) ,
202
204
( Block ( lb, ll) , Block ( rb, rl) ) => eq_label ( ll. as_ref ( ) , rl. as_ref ( ) ) && eq_block ( lb, rb) ,
203
205
( TryBlock ( l) , TryBlock ( r) ) => eq_block ( l, r) ,
204
- ( Yield ( l) , Yield ( r) ) => eq_expr_opt ( l. expr ( ) , r. expr ( ) ) && l. same_kind ( r) ,
205
- ( Ret ( l) , Ret ( r) ) => eq_expr_opt ( l. as_ref ( ) , r. as_ref ( ) ) ,
206
- ( Break ( ll, le) , Break ( rl, re) ) => eq_label ( ll. as_ref ( ) , rl. as_ref ( ) ) && eq_expr_opt ( le. as_ref ( ) , re. as_ref ( ) ) ,
206
+ ( Yield ( l) , Yield ( r) ) => eq_expr_opt ( l. expr ( ) . map ( Box :: as_ref) , r. expr ( ) . map ( Box :: as_ref) ) && l. same_kind ( r) ,
207
+ ( Ret ( l) , Ret ( r) ) => eq_expr_opt ( l. as_deref ( ) , r. as_deref ( ) ) ,
208
+ ( Break ( ll, le) , Break ( rl, re) ) => {
209
+ eq_label ( ll. as_ref ( ) , rl. as_ref ( ) ) && eq_expr_opt ( le. as_deref ( ) , re. as_deref ( ) )
210
+ } ,
207
211
( Continue ( ll) , Continue ( rl) ) => eq_label ( ll. as_ref ( ) , rl. as_ref ( ) ) ,
208
212
( Assign ( l1, l2, _) , Assign ( r1, r2, _) ) | ( Index ( l1, l2, _) , Index ( r1, r2, _) ) => {
209
213
eq_expr ( l1, r1) && eq_expr ( l2, r2)
@@ -240,13 +244,13 @@ pub fn eq_expr(l: &Expr, r: &Expr) -> bool {
240
244
} ,
241
245
( Gen ( lc, lb, lk, _) , Gen ( rc, rb, rk, _) ) => lc == rc && eq_block ( lb, rb) && lk == rk,
242
246
( Range ( lf, lt, ll) , Range ( rf, rt, rl) ) => {
243
- ll == rl && eq_expr_opt ( lf. as_ref ( ) , rf. as_ref ( ) ) && eq_expr_opt ( lt. as_ref ( ) , rt. as_ref ( ) )
247
+ ll == rl && eq_expr_opt ( lf. as_deref ( ) , rf. as_deref ( ) ) && eq_expr_opt ( lt. as_deref ( ) , rt. as_deref ( ) )
244
248
} ,
245
249
( AddrOf ( lbk, lm, le) , AddrOf ( rbk, rm, re) ) => lbk == rbk && lm == rm && eq_expr ( le, re) ,
246
- ( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq. as_ref ( ) , rq. as_ref ( ) , eq_qself) && eq_path ( lp, rp) ,
250
+ ( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq. as_deref ( ) , rq. as_deref ( ) , eq_qself) && eq_path ( lp, rp) ,
247
251
( MacCall ( l) , MacCall ( r) ) => eq_mac_call ( l, r) ,
248
252
( Struct ( lse) , Struct ( rse) ) => {
249
- eq_maybe_qself ( lse. qself . as_ref ( ) , rse. qself . as_ref ( ) )
253
+ eq_maybe_qself ( lse. qself . as_deref ( ) , rse. qself . as_deref ( ) )
250
254
&& eq_path ( & lse. path , & rse. path )
251
255
&& eq_struct_rest ( & lse. rest , & rse. rest )
252
256
&& unordered_over ( & lse. fields , & rse. fields , eq_field)
@@ -278,8 +282,8 @@ pub fn eq_field(l: &ExprField, r: &ExprField) -> bool {
278
282
pub fn eq_arm ( l : & Arm , r : & Arm ) -> bool {
279
283
l. is_placeholder == r. is_placeholder
280
284
&& eq_pat ( & l. pat , & r. pat )
281
- && eq_expr_opt ( l. body . as_ref ( ) , r. body . as_ref ( ) )
282
- && eq_expr_opt ( l. guard . as_ref ( ) , r. guard . as_ref ( ) )
285
+ && eq_expr_opt ( l. body . as_deref ( ) , r. body . as_deref ( ) )
286
+ && eq_expr_opt ( l. guard . as_deref ( ) , r. guard . as_deref ( ) )
283
287
&& over ( & l. attrs , & r. attrs , eq_attr)
284
288
}
285
289
@@ -347,7 +351,7 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
347
351
safety : rs,
348
352
define_opaque : _,
349
353
} ) ,
350
- ) => eq_id ( * li, * ri) && lm == rm && ls == rs && eq_ty ( lt, rt) && eq_expr_opt ( le. as_ref ( ) , re. as_ref ( ) ) ,
354
+ ) => eq_id ( * li, * ri) && lm == rm && ls == rs && eq_ty ( lt, rt) && eq_expr_opt ( le. as_deref ( ) , re. as_deref ( ) ) ,
351
355
(
352
356
Const ( box ConstItem {
353
357
defaultness : ld,
@@ -370,7 +374,7 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
370
374
&& eq_id ( * li, * ri)
371
375
&& eq_generics ( lg, rg)
372
376
&& eq_ty ( lt, rt)
373
- && eq_expr_opt ( le. as_ref ( ) , re. as_ref ( ) )
377
+ && eq_expr_opt ( le. as_deref ( ) , re. as_deref ( ) )
374
378
} ,
375
379
(
376
380
Fn ( box ast:: Fn {
@@ -525,7 +529,7 @@ pub fn eq_foreign_item_kind(l: &ForeignItemKind, r: &ForeignItemKind) -> bool {
525
529
safety : rs,
526
530
define_opaque : _,
527
531
} ) ,
528
- ) => eq_id ( * li, * ri) && eq_ty ( lt, rt) && lm == rm && eq_expr_opt ( le. as_ref ( ) , re. as_ref ( ) ) && ls == rs,
532
+ ) => eq_id ( * li, * ri) && eq_ty ( lt, rt) && lm == rm && eq_expr_opt ( le. as_deref ( ) , re. as_deref ( ) ) && ls == rs,
529
533
(
530
534
Fn ( box ast:: Fn {
531
535
defaultness : ld,
@@ -607,7 +611,7 @@ pub fn eq_assoc_item_kind(l: &AssocItemKind, r: &AssocItemKind) -> bool {
607
611
&& eq_id ( * li, * ri)
608
612
&& eq_generics ( lg, rg)
609
613
&& eq_ty ( lt, rt)
610
- && eq_expr_opt ( le. as_ref ( ) , re. as_ref ( ) )
614
+ && eq_expr_opt ( le. as_deref ( ) , re. as_deref ( ) )
611
615
} ,
612
616
(
613
617
Fn ( box ast:: Fn {
@@ -723,7 +727,8 @@ pub fn eq_fn_header(l: &FnHeader, r: &FnHeader) -> bool {
723
727
pub fn eq_opt_fn_contract ( l : & Option < Box < FnContract > > , r : & Option < Box < FnContract > > ) -> bool {
724
728
match ( l, r) {
725
729
( Some ( l) , Some ( r) ) => {
726
- eq_expr_opt ( l. requires . as_ref ( ) , r. requires . as_ref ( ) ) && eq_expr_opt ( l. ensures . as_ref ( ) , r. ensures . as_ref ( ) )
730
+ eq_expr_opt ( l. requires . as_deref ( ) , r. requires . as_deref ( ) )
731
+ && eq_expr_opt ( l. ensures . as_deref ( ) , r. ensures . as_deref ( ) )
727
732
} ,
728
733
( None , None ) => true ,
729
734
( Some ( _) , None ) | ( None , Some ( _) ) => false ,
@@ -841,7 +846,7 @@ pub fn eq_ty(l: &Ty, r: &Ty) -> bool {
841
846
&& eq_fn_decl ( & l. decl , & r. decl )
842
847
} ,
843
848
( Tup ( l) , Tup ( r) ) => over ( l, r, |l, r| eq_ty ( l, r) ) ,
844
- ( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq. as_ref ( ) , rq. as_ref ( ) , eq_qself) && eq_path ( lp, rp) ,
849
+ ( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq. as_deref ( ) , rq. as_deref ( ) , eq_qself) && eq_path ( lp, rp) ,
845
850
( TraitObject ( lg, ls) , TraitObject ( rg, rs) ) => ls == rs && over ( lg, rg, eq_generic_bound) ,
846
851
( ImplTrait ( _, lg) , ImplTrait ( _, rg) ) => over ( lg, rg, eq_generic_bound) ,
847
852
( Typeof ( l) , Typeof ( r) ) => eq_expr ( & l. value , & r. value ) ,
0 commit comments