@@ -37,20 +37,27 @@ pub fn eq_pat(l: &Pat, r: &Pat) -> bool {
37
37
( _, Paren ( r) ) => eq_pat ( l, r) ,
38
38
( Wild , Wild ) | ( Rest , Rest ) => true ,
39
39
( Lit ( l) , Lit ( r) ) => eq_expr ( l, r) ,
40
- ( Ident ( b1, i1, s1) , Ident ( b2, i2, s2) ) => b1 == b2 && eq_id ( * i1, * i2) && both ( s1, s2, |l, r| eq_pat ( l, r) ) ,
40
+ ( Ident ( b1, i1, s1) , Ident ( b2, i2, s2) ) => {
41
+ b1 == b2 && eq_id ( * i1, * i2) && both ( s1. as_deref ( ) , s2. as_deref ( ) , eq_pat)
42
+ } ,
41
43
( Range ( lf, lt, le) , Range ( rf, rt, re) ) => {
42
- eq_expr_opt ( lf, rf) && eq_expr_opt ( lt, rt) && eq_range_end ( & le. node , & re. node )
44
+ eq_expr_opt ( lf. as_ref ( ) , rf. as_ref ( ) )
45
+ && eq_expr_opt ( lt. as_ref ( ) , rt. as_ref ( ) )
46
+ && eq_range_end ( & le. node , & re. node )
43
47
} ,
44
48
( Box ( l) , Box ( r) )
45
49
| ( Ref ( l, Mutability :: Not ) , Ref ( r, Mutability :: Not ) )
46
50
| ( Ref ( l, Mutability :: Mut ) , Ref ( r, Mutability :: Mut ) ) => eq_pat ( l, r) ,
47
51
( Tuple ( l) , Tuple ( r) ) | ( Slice ( l) , Slice ( r) ) => over ( l, r, |l, r| eq_pat ( l, r) ) ,
48
- ( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq, rq, eq_qself) && eq_path ( lp, rp) ,
52
+ ( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq. as_ref ( ) , rq. as_ref ( ) , eq_qself) && eq_path ( lp, rp) ,
49
53
( TupleStruct ( lqself, lp, lfs) , TupleStruct ( rqself, rp, rfs) ) => {
50
- eq_maybe_qself ( lqself, rqself) && eq_path ( lp, rp) && over ( lfs, rfs, |l, r| eq_pat ( l, r) )
54
+ eq_maybe_qself ( lqself. as_ref ( ) , rqself. as_ref ( ) ) && eq_path ( lp, rp) && over ( lfs, rfs, |l, r| eq_pat ( l, r) )
51
55
} ,
52
56
( Struct ( lqself, lp, lfs, lr) , Struct ( rqself, rp, rfs, rr) ) => {
53
- lr == rr && eq_maybe_qself ( lqself, rqself) && eq_path ( lp, rp) && unordered_over ( lfs, rfs, eq_field_pat)
57
+ lr == rr
58
+ && eq_maybe_qself ( lqself. as_ref ( ) , rqself. as_ref ( ) )
59
+ && eq_path ( lp, rp)
60
+ && unordered_over ( lfs, rfs, eq_field_pat)
54
61
} ,
55
62
( Or ( ls) , Or ( rs) ) => unordered_over ( ls, rs, |l, r| eq_pat ( l, r) ) ,
56
63
( MacCall ( l) , MacCall ( r) ) => eq_mac_call ( l, r) ,
@@ -79,7 +86,7 @@ pub fn eq_qself(l: &P<QSelf>, r: &P<QSelf>) -> bool {
79
86
l. position == r. position && eq_ty ( & l. ty , & r. ty )
80
87
}
81
88
82
- pub fn eq_maybe_qself ( l : & Option < P < QSelf > > , r : & Option < P < QSelf > > ) -> bool {
89
+ pub fn eq_maybe_qself ( l : Option < & P < QSelf > > , r : Option < & P < QSelf > > ) -> bool {
83
90
match ( l, r) {
84
91
( Some ( l) , Some ( r) ) => eq_qself ( l, r) ,
85
92
( None , None ) => true ,
@@ -92,7 +99,7 @@ pub fn eq_path(l: &Path, r: &Path) -> bool {
92
99
}
93
100
94
101
pub fn eq_path_seg ( l : & PathSegment , r : & PathSegment ) -> bool {
95
- eq_id ( l. ident , r. ident ) && both ( & l. args , & r. args , |l, r| eq_generic_args ( l, r) )
102
+ eq_id ( l. ident , r. ident ) && both ( l. args . as_ref ( ) , r. args . as_ref ( ) , |l, r| eq_generic_args ( l, r) )
96
103
}
97
104
98
105
pub fn eq_generic_args ( l : & GenericArgs , r : & GenericArgs ) -> bool {
@@ -122,7 +129,7 @@ pub fn eq_generic_arg(l: &GenericArg, r: &GenericArg) -> bool {
122
129
}
123
130
}
124
131
125
- pub fn eq_expr_opt ( l : & Option < P < Expr > > , r : & Option < P < Expr > > ) -> bool {
132
+ pub fn eq_expr_opt ( l : Option < & P < Expr > > , r : Option < & P < Expr > > ) -> bool {
126
133
both ( l, r, |l, r| eq_expr ( l, r) )
127
134
}
128
135
@@ -169,8 +176,12 @@ pub fn eq_expr(l: &Expr, r: &Expr) -> bool {
169
176
( Lit ( l) , Lit ( r) ) => l == r,
170
177
( Cast ( l, lt) , Cast ( r, rt) ) | ( Type ( l, lt) , Type ( r, rt) ) => eq_expr ( l, r) && eq_ty ( lt, rt) ,
171
178
( Let ( lp, le, _, _) , Let ( rp, re, _, _) ) => eq_pat ( lp, rp) && eq_expr ( le, re) ,
172
- ( If ( lc, lt, le) , If ( rc, rt, re) ) => eq_expr ( lc, rc) && eq_block ( lt, rt) && eq_expr_opt ( le, re) ,
173
- ( While ( lc, lt, ll) , While ( rc, rt, rl) ) => eq_label ( ll, rl) && eq_expr ( lc, rc) && eq_block ( lt, rt) ,
179
+ ( 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 ( ) )
181
+ } ,
182
+ ( While ( lc, lt, ll) , While ( rc, rt, rl) ) => {
183
+ eq_label ( ll. as_ref ( ) , rl. as_ref ( ) ) && eq_expr ( lc, rc) && eq_block ( lt, rt)
184
+ } ,
174
185
(
175
186
ForLoop {
176
187
pat : lp,
@@ -186,13 +197,13 @@ pub fn eq_expr(l: &Expr, r: &Expr) -> bool {
186
197
label : rl,
187
198
kind : rk,
188
199
} ,
189
- ) => eq_label ( ll, rl) && eq_pat ( lp, rp) && eq_expr ( li, ri) && eq_block ( lt, rt) && lk == rk,
190
- ( Loop ( lt, ll, _) , Loop ( rt, rl, _) ) => eq_label ( ll, rl) && eq_block ( lt, rt) ,
191
- ( Block ( lb, ll) , Block ( rb, rl) ) => eq_label ( ll, rl) && eq_block ( lb, rb) ,
200
+ ) => eq_label ( ll. as_ref ( ) , rl. as_ref ( ) ) && eq_pat ( lp, rp) && eq_expr ( li, ri) && eq_block ( lt, rt) && lk == rk,
201
+ ( Loop ( lt, ll, _) , Loop ( rt, rl, _) ) => eq_label ( ll. as_ref ( ) , rl. as_ref ( ) ) && eq_block ( lt, rt) ,
202
+ ( Block ( lb, ll) , Block ( rb, rl) ) => eq_label ( ll. as_ref ( ) , rl. as_ref ( ) ) && eq_block ( lb, rb) ,
192
203
( TryBlock ( l) , TryBlock ( r) ) => eq_block ( l, r) ,
193
- ( Yield ( l) , Yield ( r) ) | ( Ret ( l) , Ret ( r) ) => eq_expr_opt ( l, r) ,
194
- ( Break ( ll, le) , Break ( rl, re) ) => eq_label ( ll, rl) && eq_expr_opt ( le, re) ,
195
- ( Continue ( ll) , Continue ( rl) ) => eq_label ( ll, rl) ,
204
+ ( Yield ( l) , Yield ( r) ) | ( Ret ( l) , Ret ( r) ) => eq_expr_opt ( l. as_ref ( ) , r. as_ref ( ) ) ,
205
+ ( Break ( ll, le) , Break ( rl, re) ) => eq_label ( ll. as_ref ( ) , rl. as_ref ( ) ) && eq_expr_opt ( le. as_ref ( ) , re. as_ref ( ) ) ,
206
+ ( Continue ( ll) , Continue ( rl) ) => eq_label ( ll. as_ref ( ) , rl. as_ref ( ) ) ,
196
207
( Assign ( l1, l2, _) , Assign ( r1, r2, _) ) | ( Index ( l1, l2, _) , Index ( r1, r2, _) ) => {
197
208
eq_expr ( l1, r1) && eq_expr ( l2, r2)
198
209
} ,
@@ -227,12 +238,14 @@ pub fn eq_expr(l: &Expr, r: &Expr) -> bool {
227
238
&& eq_expr ( le, re)
228
239
} ,
229
240
( Gen ( lc, lb, lk, _) , Gen ( rc, rb, rk, _) ) => lc == rc && eq_block ( lb, rb) && lk == rk,
230
- ( Range ( lf, lt, ll) , Range ( rf, rt, rl) ) => ll == rl && eq_expr_opt ( lf, rf) && eq_expr_opt ( lt, rt) ,
241
+ ( Range ( lf, lt, ll) , Range ( rf, rt, rl) ) => {
242
+ ll == rl && eq_expr_opt ( lf. as_ref ( ) , rf. as_ref ( ) ) && eq_expr_opt ( lt. as_ref ( ) , rt. as_ref ( ) )
243
+ } ,
231
244
( AddrOf ( lbk, lm, le) , AddrOf ( rbk, rm, re) ) => lbk == rbk && lm == rm && eq_expr ( le, re) ,
232
- ( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq, rq, eq_qself) && eq_path ( lp, rp) ,
245
+ ( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq. as_ref ( ) , rq. as_ref ( ) , eq_qself) && eq_path ( lp, rp) ,
233
246
( MacCall ( l) , MacCall ( r) ) => eq_mac_call ( l, r) ,
234
247
( Struct ( lse) , Struct ( rse) ) => {
235
- eq_maybe_qself ( & lse. qself , & rse. qself )
248
+ eq_maybe_qself ( lse. qself . as_ref ( ) , rse. qself . as_ref ( ) )
236
249
&& eq_path ( & lse. path , & rse. path )
237
250
&& eq_struct_rest ( & lse. rest , & rse. rest )
238
251
&& unordered_over ( & lse. fields , & rse. fields , eq_field)
@@ -264,12 +277,12 @@ pub fn eq_field(l: &ExprField, r: &ExprField) -> bool {
264
277
pub fn eq_arm ( l : & Arm , r : & Arm ) -> bool {
265
278
l. is_placeholder == r. is_placeholder
266
279
&& eq_pat ( & l. pat , & r. pat )
267
- && eq_expr_opt ( & l. body , & r. body )
268
- && eq_expr_opt ( & l. guard , & r. guard )
280
+ && eq_expr_opt ( l. body . as_ref ( ) , r. body . as_ref ( ) )
281
+ && eq_expr_opt ( l. guard . as_ref ( ) , r. guard . as_ref ( ) )
269
282
&& over ( & l. attrs , & r. attrs , eq_attr)
270
283
}
271
284
272
- pub fn eq_label ( l : & Option < Label > , r : & Option < Label > ) -> bool {
285
+ pub fn eq_label ( l : Option < & Label > , r : Option < & Label > ) -> bool {
273
286
both ( l, r, |l, r| eq_id ( l. ident , r. ident ) )
274
287
}
275
288
@@ -282,7 +295,7 @@ pub fn eq_stmt(l: &Stmt, r: &Stmt) -> bool {
282
295
match ( & l. kind , & r. kind ) {
283
296
( Let ( l) , Let ( r) ) => {
284
297
eq_pat ( & l. pat , & r. pat )
285
- && both ( & l. ty , & r. ty , |l, r| eq_ty ( l, r) )
298
+ && both ( l. ty . as_ref ( ) , r. ty . as_ref ( ) , |l, r| eq_ty ( l, r) )
286
299
&& eq_local_kind ( & l. kind , & r. kind )
287
300
&& over ( & l. attrs , & r. attrs , eq_attr)
288
301
} ,
@@ -329,7 +342,7 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
329
342
expr : re,
330
343
safety : rs,
331
344
} ) ,
332
- ) => lm == rm && ls == rs && eq_ty ( lt, rt) && eq_expr_opt ( le, re) ,
345
+ ) => lm == rm && ls == rs && eq_ty ( lt, rt) && eq_expr_opt ( le. as_ref ( ) , re. as_ref ( ) ) ,
333
346
(
334
347
Const ( box ConstItem {
335
348
defaultness : ld,
@@ -343,7 +356,7 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
343
356
ty : rt,
344
357
expr : re,
345
358
} ) ,
346
- ) => eq_defaultness ( * ld, * rd) && eq_generics ( lg, rg) && eq_ty ( lt, rt) && eq_expr_opt ( le, re) ,
359
+ ) => eq_defaultness ( * ld, * rd) && eq_generics ( lg, rg) && eq_ty ( lt, rt) && eq_expr_opt ( le. as_ref ( ) , re. as_ref ( ) ) ,
347
360
(
348
361
Fn ( box ast:: Fn {
349
362
defaultness : ld,
@@ -358,7 +371,10 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
358
371
body : rb,
359
372
} ) ,
360
373
) => {
361
- eq_defaultness ( * ld, * rd) && eq_fn_sig ( lf, rf) && eq_generics ( lg, rg) && both ( lb, rb, |l, r| eq_block ( l, r) )
374
+ eq_defaultness ( * ld, * rd)
375
+ && eq_fn_sig ( lf, rf)
376
+ && eq_generics ( lg, rg)
377
+ && both ( lb. as_ref ( ) , rb. as_ref ( ) , |l, r| eq_block ( l, r) )
362
378
} ,
363
379
( Mod ( lu, lmk) , Mod ( ru, rmk) ) => {
364
380
lu == ru
@@ -371,7 +387,8 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
371
387
}
372
388
} ,
373
389
( ForeignMod ( l) , ForeignMod ( r) ) => {
374
- both ( & l. abi , & r. abi , eq_str_lit) && over ( & l. items , & r. items , |l, r| eq_item ( l, r, eq_foreign_item_kind) )
390
+ both ( l. abi . as_ref ( ) , r. abi . as_ref ( ) , eq_str_lit)
391
+ && over ( & l. items , & r. items , |l, r| eq_item ( l, r, eq_foreign_item_kind) )
375
392
} ,
376
393
(
377
394
TyAlias ( box ast:: TyAlias {
@@ -392,7 +409,7 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
392
409
eq_defaultness ( * ld, * rd)
393
410
&& eq_generics ( lg, rg)
394
411
&& over ( lb, rb, eq_generic_bound)
395
- && both ( lt, rt, |l, r| eq_ty ( l, r) )
412
+ && both ( lt. as_ref ( ) , rt. as_ref ( ) , |l, r| eq_ty ( l, r) )
396
413
} ,
397
414
( Enum ( le, lg) , Enum ( re, rg) ) => over ( & le. variants , & re. variants , eq_variant) && eq_generics ( lg, rg) ,
398
415
( Struct ( lv, lg) , Struct ( rv, rg) ) | ( Union ( lv, lg) , Union ( rv, rg) ) => {
@@ -448,7 +465,7 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
448
465
&& eq_defaultness ( * ld, * rd)
449
466
&& matches ! ( lc, ast:: Const :: No ) == matches ! ( rc, ast:: Const :: No )
450
467
&& eq_generics ( lg, rg)
451
- && both ( lot, rot, |l, r| eq_path ( & l. path , & r. path ) )
468
+ && both ( lot. as_ref ( ) , rot. as_ref ( ) , |l, r| eq_path ( & l. path , & r. path ) )
452
469
&& eq_ty ( lst, rst)
453
470
&& over ( li, ri, |l, r| eq_item ( l, r, eq_assoc_item_kind) )
454
471
} ,
@@ -474,7 +491,7 @@ pub fn eq_foreign_item_kind(l: &ForeignItemKind, r: &ForeignItemKind) -> bool {
474
491
expr : re,
475
492
safety : rs,
476
493
} ) ,
477
- ) => lm == rm && eq_ty ( lt, rt) && eq_expr_opt ( le, re) && ls == rs,
494
+ ) => lm == rm && eq_ty ( lt, rt) && eq_expr_opt ( le. as_ref ( ) , re. as_ref ( ) ) && ls == rs,
478
495
(
479
496
Fn ( box ast:: Fn {
480
497
defaultness : ld,
@@ -489,7 +506,10 @@ pub fn eq_foreign_item_kind(l: &ForeignItemKind, r: &ForeignItemKind) -> bool {
489
506
body : rb,
490
507
} ) ,
491
508
) => {
492
- eq_defaultness ( * ld, * rd) && eq_fn_sig ( lf, rf) && eq_generics ( lg, rg) && both ( lb, rb, |l, r| eq_block ( l, r) )
509
+ eq_defaultness ( * ld, * rd)
510
+ && eq_fn_sig ( lf, rf)
511
+ && eq_generics ( lg, rg)
512
+ && both ( lb. as_ref ( ) , rb. as_ref ( ) , |l, r| eq_block ( l, r) )
493
513
} ,
494
514
(
495
515
TyAlias ( box ast:: TyAlias {
@@ -510,7 +530,7 @@ pub fn eq_foreign_item_kind(l: &ForeignItemKind, r: &ForeignItemKind) -> bool {
510
530
eq_defaultness ( * ld, * rd)
511
531
&& eq_generics ( lg, rg)
512
532
&& over ( lb, rb, eq_generic_bound)
513
- && both ( lt, rt, |l, r| eq_ty ( l, r) )
533
+ && both ( lt. as_ref ( ) , rt. as_ref ( ) , |l, r| eq_ty ( l, r) )
514
534
} ,
515
535
( MacCall ( l) , MacCall ( r) ) => eq_mac_call ( l, r) ,
516
536
_ => false ,
@@ -533,7 +553,7 @@ pub fn eq_assoc_item_kind(l: &AssocItemKind, r: &AssocItemKind) -> bool {
533
553
ty : rt,
534
554
expr : re,
535
555
} ) ,
536
- ) => eq_defaultness ( * ld, * rd) && eq_generics ( lg, rg) && eq_ty ( lt, rt) && eq_expr_opt ( le, re) ,
556
+ ) => eq_defaultness ( * ld, * rd) && eq_generics ( lg, rg) && eq_ty ( lt, rt) && eq_expr_opt ( le. as_ref ( ) , re. as_ref ( ) ) ,
537
557
(
538
558
Fn ( box ast:: Fn {
539
559
defaultness : ld,
@@ -548,7 +568,10 @@ pub fn eq_assoc_item_kind(l: &AssocItemKind, r: &AssocItemKind) -> bool {
548
568
body : rb,
549
569
} ) ,
550
570
) => {
551
- eq_defaultness ( * ld, * rd) && eq_fn_sig ( lf, rf) && eq_generics ( lg, rg) && both ( lb, rb, |l, r| eq_block ( l, r) )
571
+ eq_defaultness ( * ld, * rd)
572
+ && eq_fn_sig ( lf, rf)
573
+ && eq_generics ( lg, rg)
574
+ && both ( lb. as_ref ( ) , rb. as_ref ( ) , |l, r| eq_block ( l, r) )
552
575
} ,
553
576
(
554
577
Type ( box TyAlias {
@@ -569,7 +592,7 @@ pub fn eq_assoc_item_kind(l: &AssocItemKind, r: &AssocItemKind) -> bool {
569
592
eq_defaultness ( * ld, * rd)
570
593
&& eq_generics ( lg, rg)
571
594
&& over ( lb, rb, eq_generic_bound)
572
- && both ( lt, rt, |l, r| eq_ty ( l, r) )
595
+ && both ( lt. as_ref ( ) , rt. as_ref ( ) , |l, r| eq_ty ( l, r) )
573
596
} ,
574
597
( MacCall ( l) , MacCall ( r) ) => eq_mac_call ( l, r) ,
575
598
_ => false ,
@@ -582,7 +605,9 @@ pub fn eq_variant(l: &Variant, r: &Variant) -> bool {
582
605
&& eq_vis ( & l. vis , & r. vis )
583
606
&& eq_id ( l. ident , r. ident )
584
607
&& eq_variant_data ( & l. data , & r. data )
585
- && both ( & l. disr_expr , & r. disr_expr , |l, r| eq_expr ( & l. value , & r. value ) )
608
+ && both ( l. disr_expr . as_ref ( ) , r. disr_expr . as_ref ( ) , |l, r| {
609
+ eq_expr ( & l. value , & r. value )
610
+ } )
586
611
}
587
612
588
613
pub fn eq_variant_data ( l : & VariantData , r : & VariantData ) -> bool {
@@ -600,7 +625,7 @@ pub fn eq_struct_field(l: &FieldDef, r: &FieldDef) -> bool {
600
625
l. is_placeholder == r. is_placeholder
601
626
&& over ( & l. attrs , & r. attrs , eq_attr)
602
627
&& eq_vis ( & l. vis , & r. vis )
603
- && both ( & l. ident , & r. ident , |l, r| eq_id ( * l, * r) )
628
+ && both ( l. ident . as_ref ( ) , r. ident . as_ref ( ) , |l, r| eq_id ( * l, * r) )
604
629
&& eq_ty ( & l. ty , & r. ty )
605
630
}
606
631
@@ -664,7 +689,7 @@ pub fn eq_use_tree_kind(l: &UseTreeKind, r: &UseTreeKind) -> bool {
664
689
use UseTreeKind :: * ;
665
690
match ( l, r) {
666
691
( Glob , Glob ) => true ,
667
- ( Simple ( l) , Simple ( r) ) => both ( l, r, |l, r| eq_id ( * l, * r) ) ,
692
+ ( Simple ( l) , Simple ( r) ) => both ( l. as_ref ( ) , r. as_ref ( ) , |l, r| eq_id ( * l, * r) ) ,
668
693
( Nested { items : l, .. } , Nested { items : r, .. } ) => over ( l, r, |( l, _) , ( r, _) | eq_use_tree ( l, r) ) ,
669
694
_ => false ,
670
695
}
@@ -726,7 +751,7 @@ pub fn eq_ty(l: &Ty, r: &Ty) -> bool {
726
751
( Array ( le, ls) , Array ( re, rs) ) => eq_ty ( le, re) && eq_expr ( & ls. value , & rs. value ) ,
727
752
( Ptr ( l) , Ptr ( r) ) => l. mutbl == r. mutbl && eq_ty ( & l. ty , & r. ty ) ,
728
753
( Ref ( ll, l) , Ref ( rl, r) ) => {
729
- both ( ll, rl, |l, r| eq_id ( l. ident , r. ident ) ) && l. mutbl == r. mutbl && eq_ty ( & l. ty , & r. ty )
754
+ both ( ll. as_ref ( ) , rl. as_ref ( ) , |l, r| eq_id ( l. ident , r. ident ) ) && l. mutbl == r. mutbl && eq_ty ( & l. ty , & r. ty )
730
755
} ,
731
756
( BareFn ( l) , BareFn ( r) ) => {
732
757
l. safety == r. safety
@@ -735,7 +760,7 @@ pub fn eq_ty(l: &Ty, r: &Ty) -> bool {
735
760
&& eq_fn_decl ( & l. decl , & r. decl )
736
761
} ,
737
762
( Tup ( l) , Tup ( r) ) => over ( l, r, |l, r| eq_ty ( l, r) ) ,
738
- ( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq, rq, eq_qself) && eq_path ( lp, rp) ,
763
+ ( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq. as_ref ( ) , rq. as_ref ( ) , eq_qself) && eq_path ( lp, rp) ,
739
764
( TraitObject ( lg, ls) , TraitObject ( rg, rs) ) => ls == rs && over ( lg, rg, eq_generic_bound) ,
740
765
( ImplTrait ( _, lg) , ImplTrait ( _, rg) ) => over ( lg, rg, eq_generic_bound) ,
741
766
( Typeof ( l) , Typeof ( r) ) => eq_expr ( & l. value , & r. value ) ,
@@ -771,7 +796,7 @@ pub fn eq_generic_param(l: &GenericParam, r: &GenericParam) -> bool {
771
796
&& over ( & l. bounds , & r. bounds , eq_generic_bound)
772
797
&& match ( & l. kind , & r. kind ) {
773
798
( Lifetime , Lifetime ) => true ,
774
- ( Type { default : l } , Type { default : r } ) => both ( l, r, |l, r| eq_ty ( l, r) ) ,
799
+ ( Type { default : l } , Type { default : r } ) => both ( l. as_ref ( ) , r. as_ref ( ) , |l, r| eq_ty ( l, r) ) ,
775
800
(
776
801
Const {
777
802
ty : lt,
@@ -783,7 +808,7 @@ pub fn eq_generic_param(l: &GenericParam, r: &GenericParam) -> bool {
783
808
kw_span : _,
784
809
default : rd,
785
810
} ,
786
- ) => eq_ty ( lt, rt) && both ( ld, rd, eq_anon_const) ,
811
+ ) => eq_ty ( lt, rt) && both ( ld. as_ref ( ) , rd. as_ref ( ) , eq_anon_const) ,
787
812
_ => false ,
788
813
}
789
814
&& over ( & l. attrs , & r. attrs , eq_attr)
0 commit comments