@@ -107,6 +107,15 @@ pub fn eq_expr_opt(l: &Option<P<Expr>>, r: &Option<P<Expr>>) -> bool {
107
107
both ( l, r, |l, r| eq_expr ( l, r) )
108
108
}
109
109
110
+ pub fn eq_struct_rest ( l : & StructRest , r : & StructRest ) -> bool {
111
+ match ( l, r) {
112
+ ( StructRest :: Base ( lb) , StructRest :: Base ( rb) ) => eq_expr ( lb, rb) ,
113
+ ( StructRest :: Rest ( _) , StructRest :: Rest ( _) ) => true ,
114
+ ( StructRest :: None , StructRest :: None ) => true ,
115
+ _ => false ,
116
+ }
117
+ }
118
+
110
119
pub fn eq_expr ( l : & Expr , r : & Expr ) -> bool {
111
120
use ExprKind :: * ;
112
121
if !over ( & l. attrs , & r. attrs , |l, r| eq_attr ( l, r) ) {
@@ -150,7 +159,7 @@ pub fn eq_expr(l: &Expr, r: &Expr) -> bool {
150
159
( Path ( lq, lp) , Path ( rq, rp) ) => both ( lq, rq, |l, r| eq_qself ( l, r) ) && eq_path ( lp, rp) ,
151
160
( MacCall ( l) , MacCall ( r) ) => eq_mac_call ( l, r) ,
152
161
( Struct ( lp, lfs, lb) , Struct ( rp, rfs, rb) ) => {
153
- eq_path ( lp, rp) && eq_expr_opt ( lb, rb) && unordered_over ( lfs, rfs, |l, r| eq_field ( l, r) )
162
+ eq_path ( lp, rp) && eq_struct_rest ( lb, rb) && unordered_over ( lfs, rfs, |l, r| eq_field ( l, r) )
154
163
} ,
155
164
_ => false ,
156
165
}
0 commit comments