@@ -41,21 +41,23 @@ pub fn eq_pat(l: &Pat, r: &Pat) -> bool {
4141            b1 == b2 && eq_id ( * i1,  * i2)  && both ( s1. as_deref ( ) ,  s2. as_deref ( ) ,  eq_pat) 
4242        } , 
4343        ( 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 ( ) ) 
4646                && eq_range_end ( & le. node ,  & re. node ) 
4747        } , 
4848        ( Box ( l) ,  Box ( r) ) 
4949        | ( Ref ( l,  Mutability :: Not ) ,  Ref ( r,  Mutability :: Not ) ) 
5050        | ( Ref ( l,  Mutability :: Mut ) ,  Ref ( r,  Mutability :: Mut ) )  => eq_pat ( l,  r) , 
5151        ( 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) , 
5353        ( 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) ) 
5557        } , 
5658        ( Struct ( lqself,  lp,  lfs,  lr) ,  Struct ( rqself,  rp,  rfs,  rr) )  => { 
5759            lr == rr
58-                 && eq_maybe_qself ( lqself. as_ref ( ) ,  rqself. as_ref ( ) ) 
60+                 && eq_maybe_qself ( lqself. as_deref ( ) ,  rqself. as_deref ( ) ) 
5961                && eq_path ( lp,  rp) 
6062                && unordered_over ( lfs,  rfs,  eq_field_pat) 
6163        } , 
@@ -82,11 +84,11 @@ pub fn eq_field_pat(l: &PatField, r: &PatField) -> bool {
8284        && over ( & l. attrs ,  & r. attrs ,  eq_attr) 
8385} 
8486
85- pub  fn  eq_qself ( l :  & Box < QSelf > ,  r :  & Box < QSelf > )  -> bool  { 
87+ pub  fn  eq_qself ( l :  & QSelf ,  r :  & QSelf )  -> bool  { 
8688    l. position  == r. position  && eq_ty ( & l. ty ,  & r. ty ) 
8789} 
8890
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  { 
9092    match  ( l,  r)  { 
9193        ( Some ( l) ,  Some ( r) )  => eq_qself ( l,  r) , 
9294        ( None ,  None )  => true , 
@@ -129,8 +131,8 @@ pub fn eq_generic_arg(l: &GenericArg, r: &GenericArg) -> bool {
129131    } 
130132} 
131133
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) 
134136} 
135137
136138pub  fn  eq_struct_rest ( l :  & StructRest ,  r :  & StructRest )  -> bool  { 
@@ -177,7 +179,7 @@ pub fn eq_expr(l: &Expr, r: &Expr) -> bool {
177179        ( Cast ( l,  lt) ,  Cast ( r,  rt) )  | ( Type ( l,  lt) ,  Type ( r,  rt) )  => eq_expr ( l,  r)  && eq_ty ( lt,  rt) , 
178180        ( Let ( lp,  le,  _,  _) ,  Let ( rp,  re,  _,  _) )  => eq_pat ( lp,  rp)  && eq_expr ( le,  re) , 
179181        ( 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 ( ) ) 
181183        } , 
182184        ( While ( lc,  lt,  ll) ,  While ( rc,  rt,  rl) )  => { 
183185            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 {
201203        ( Loop ( lt,  ll,  _) ,  Loop ( rt,  rl,  _) )  => eq_label ( ll. as_ref ( ) ,  rl. as_ref ( ) )  && eq_block ( lt,  rt) , 
202204        ( Block ( lb,  ll) ,  Block ( rb,  rl) )  => eq_label ( ll. as_ref ( ) ,  rl. as_ref ( ) )  && eq_block ( lb,  rb) , 
203205        ( 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+         } , 
207211        ( Continue ( ll) ,  Continue ( rl) )  => eq_label ( ll. as_ref ( ) ,  rl. as_ref ( ) ) , 
208212        ( Assign ( l1,  l2,  _) ,  Assign ( r1,  r2,  _) )  | ( Index ( l1,  l2,  _) ,  Index ( r1,  r2,  _) )  => { 
209213            eq_expr ( l1,  r1)  && eq_expr ( l2,  r2) 
@@ -240,13 +244,13 @@ pub fn eq_expr(l: &Expr, r: &Expr) -> bool {
240244        } , 
241245        ( Gen ( lc,  lb,  lk,  _) ,  Gen ( rc,  rb,  rk,  _) )  => lc == rc && eq_block ( lb,  rb)  && lk == rk, 
242246        ( 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 ( ) ) 
244248        } , 
245249        ( 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) , 
247251        ( MacCall ( l) ,  MacCall ( r) )  => eq_mac_call ( l,  r) , 
248252        ( 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 ( ) ) 
250254                && eq_path ( & lse. path ,  & rse. path ) 
251255                && eq_struct_rest ( & lse. rest ,  & rse. rest ) 
252256                && unordered_over ( & lse. fields ,  & rse. fields ,  eq_field) 
@@ -278,8 +282,8 @@ pub fn eq_field(l: &ExprField, r: &ExprField) -> bool {
278282pub  fn  eq_arm ( l :  & Arm ,  r :  & Arm )  -> bool  { 
279283    l. is_placeholder  == r. is_placeholder 
280284        && 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 ( ) ) 
283287        && over ( & l. attrs ,  & r. attrs ,  eq_attr) 
284288} 
285289
@@ -347,7 +351,7 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
347351                safety :  rs, 
348352                define_opaque :  _, 
349353            } ) , 
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 ( ) ) , 
351355        ( 
352356            Const ( box ConstItem  { 
353357                defaultness :  ld, 
@@ -370,7 +374,7 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
370374                && eq_id ( * li,  * ri) 
371375                && eq_generics ( lg,  rg) 
372376                && eq_ty ( lt,  rt) 
373-                 && eq_expr_opt ( le. as_ref ( ) ,  re. as_ref ( ) ) 
377+                 && eq_expr_opt ( le. as_deref ( ) ,  re. as_deref ( ) ) 
374378        } , 
375379        ( 
376380            Fn ( box ast:: Fn  { 
@@ -525,7 +529,7 @@ pub fn eq_foreign_item_kind(l: &ForeignItemKind, r: &ForeignItemKind) -> bool {
525529                safety :  rs, 
526530                define_opaque :  _, 
527531            } ) , 
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, 
529533        ( 
530534            Fn ( box ast:: Fn  { 
531535                defaultness :  ld, 
@@ -607,7 +611,7 @@ pub fn eq_assoc_item_kind(l: &AssocItemKind, r: &AssocItemKind) -> bool {
607611                && eq_id ( * li,  * ri) 
608612                && eq_generics ( lg,  rg) 
609613                && eq_ty ( lt,  rt) 
610-                 && eq_expr_opt ( le. as_ref ( ) ,  re. as_ref ( ) ) 
614+                 && eq_expr_opt ( le. as_deref ( ) ,  re. as_deref ( ) ) 
611615        } , 
612616        ( 
613617            Fn ( box ast:: Fn  { 
@@ -723,7 +727,8 @@ pub fn eq_fn_header(l: &FnHeader, r: &FnHeader) -> bool {
723727pub  fn  eq_opt_fn_contract ( l :  & Option < Box < FnContract > > ,  r :  & Option < Box < FnContract > > )  -> bool  { 
724728    match  ( l,  r)  { 
725729        ( 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 ( ) ) 
727732        } , 
728733        ( None ,  None )  => true , 
729734        ( Some ( _) ,  None )  | ( None ,  Some ( _) )  => false , 
@@ -841,7 +846,7 @@ pub fn eq_ty(l: &Ty, r: &Ty) -> bool {
841846                && eq_fn_decl ( & l. decl ,  & r. decl ) 
842847        } , 
843848        ( 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) , 
845850        ( TraitObject ( lg,  ls) ,  TraitObject ( rg,  rs) )  => ls == rs && over ( lg,  rg,  eq_generic_bound) , 
846851        ( ImplTrait ( _,  lg) ,  ImplTrait ( _,  rg) )  => over ( lg,  rg,  eq_generic_bound) , 
847852        ( Typeof ( l) ,  Typeof ( r) )  => eq_expr ( & l. value ,  & r. value ) , 
0 commit comments