6
6
7
7
use crate :: { both, over} ;
8
8
use rustc_ast:: { self as ast, * } ;
9
- use rustc_span:: symbol:: Ident ;
10
9
use std:: mem;
11
10
12
11
pub mod ident_iter;
@@ -25,10 +24,6 @@ pub fn unordered_over<X, Y>(left: &[X], right: &[Y], mut eq_fn: impl FnMut(&X, &
25
24
left. len ( ) == right. len ( ) && left. iter ( ) . all ( |l| right. iter ( ) . any ( |r| eq_fn ( l, r) ) )
26
25
}
27
26
28
- pub fn eq_id ( l : Ident , r : Ident ) -> bool {
29
- l. name == r. name
30
- }
31
-
32
27
pub fn eq_pat ( l : & Pat , r : & Pat ) -> bool {
33
28
use PatKind :: * ;
34
29
match ( & l. kind , & r. kind ) {
@@ -38,7 +33,7 @@ pub fn eq_pat(l: &Pat, r: &Pat) -> bool {
38
33
( Wild , Wild ) | ( Rest , Rest ) => true ,
39
34
( Expr ( l) , Expr ( r) ) => eq_expr ( l, r) ,
40
35
( Ident ( b1, i1, s1) , Ident ( b2, i2, s2) ) => {
41
- b1 == b2 && eq_id ( * i1 , * i2 ) && both ( s1. as_deref ( ) , s2. as_deref ( ) , eq_pat)
36
+ b1 == b2 && i1 . name == i2 . name && both ( s1. as_deref ( ) , s2. as_deref ( ) , eq_pat)
42
37
} ,
43
38
( Range ( lf, lt, le) , Range ( rf, rt, re) ) => {
44
39
eq_expr_opt ( lf. as_deref ( ) , rf. as_deref ( ) )
@@ -79,7 +74,7 @@ pub fn eq_range_end(l: &RangeEnd, r: &RangeEnd) -> bool {
79
74
80
75
pub fn eq_field_pat ( l : & PatField , r : & PatField ) -> bool {
81
76
l. is_placeholder == r. is_placeholder
82
- && eq_id ( l. ident , r. ident )
77
+ && l. ident . name == r. ident . name
83
78
&& eq_pat ( & l. pat , & r. pat )
84
79
&& over ( & l. attrs , & r. attrs , eq_attr)
85
80
}
@@ -101,7 +96,7 @@ pub fn eq_path(l: &Path, r: &Path) -> bool {
101
96
}
102
97
103
98
pub fn eq_path_seg ( l : & PathSegment , r : & PathSegment ) -> bool {
104
- eq_id ( l. ident , r. ident ) && both ( l. args . as_ref ( ) , r. args . as_ref ( ) , |l, r| eq_generic_args ( l, r) )
99
+ l. ident . name == r. ident . name && both ( l. args . as_ref ( ) , r. args . as_ref ( ) , |l, r| eq_generic_args ( l, r) )
105
100
}
106
101
107
102
pub fn eq_generic_args ( l : & GenericArgs , r : & GenericArgs ) -> bool {
@@ -124,7 +119,7 @@ pub fn eq_angle_arg(l: &AngleBracketedArg, r: &AngleBracketedArg) -> bool {
124
119
125
120
pub fn eq_generic_arg ( l : & GenericArg , r : & GenericArg ) -> bool {
126
121
match ( l, r) {
127
- ( GenericArg :: Lifetime ( l) , GenericArg :: Lifetime ( r) ) => eq_id ( l. ident , r. ident ) ,
122
+ ( GenericArg :: Lifetime ( l) , GenericArg :: Lifetime ( r) ) => l. ident . name == r. ident . name ,
128
123
( GenericArg :: Type ( l) , GenericArg :: Type ( r) ) => eq_ty ( l, r) ,
129
124
( GenericArg :: Const ( l) , GenericArg :: Const ( r) ) => eq_expr ( & l. value , & r. value ) ,
130
125
_ => false ,
@@ -213,7 +208,7 @@ pub fn eq_expr(l: &Expr, r: &Expr) -> bool {
213
208
eq_expr ( l1, r1) && eq_expr ( l2, r2)
214
209
} ,
215
210
( AssignOp ( lo, lp, lv) , AssignOp ( ro, rp, rv) ) => lo. node == ro. node && eq_expr ( lp, rp) && eq_expr ( lv, rv) ,
216
- ( Field ( lp, lf) , Field ( rp, rf) ) => eq_id ( * lf , * rf ) && eq_expr ( lp, rp) ,
211
+ ( Field ( lp, lf) , Field ( rp, rf) ) => lf . name == rf . name && eq_expr ( lp, rp) ,
217
212
( Match ( ls, la, lkind) , Match ( rs, ra, rkind) ) => ( lkind == rkind) && eq_expr ( ls, rs) && over ( la, ra, eq_arm) ,
218
213
(
219
214
Closure ( box ast:: Closure {
@@ -274,7 +269,7 @@ fn eq_coroutine_kind(a: Option<CoroutineKind>, b: Option<CoroutineKind>) -> bool
274
269
275
270
pub fn eq_field ( l : & ExprField , r : & ExprField ) -> bool {
276
271
l. is_placeholder == r. is_placeholder
277
- && eq_id ( l. ident , r. ident )
272
+ && l. ident . name == r. ident . name
278
273
&& eq_expr ( & l. expr , & r. expr )
279
274
&& over ( & l. attrs , & r. attrs , eq_attr)
280
275
}
@@ -288,7 +283,7 @@ pub fn eq_arm(l: &Arm, r: &Arm) -> bool {
288
283
}
289
284
290
285
pub fn eq_label ( l : Option < & Label > , r : Option < & Label > ) -> bool {
291
- both ( l, r, |l, r| eq_id ( l. ident , r. ident ) )
286
+ both ( l, r, |l, r| l. ident . name == r. ident . name )
292
287
}
293
288
294
289
pub fn eq_block ( l : & Block , r : & Block ) -> bool {
@@ -332,7 +327,7 @@ pub fn eq_item<K>(l: &Item<K>, r: &Item<K>, mut eq_kind: impl FnMut(&K, &K) -> b
332
327
pub fn eq_item_kind ( l : & ItemKind , r : & ItemKind ) -> bool {
333
328
use ItemKind :: * ;
334
329
match ( l, r) {
335
- ( ExternCrate ( ls, li) , ExternCrate ( rs, ri) ) => ls == rs && eq_id ( * li , * ri ) ,
330
+ ( ExternCrate ( ls, li) , ExternCrate ( rs, ri) ) => ls == rs && li . name == ri . name ,
336
331
( Use ( l) , Use ( r) ) => eq_use_tree ( l, r) ,
337
332
(
338
333
Static ( box StaticItem {
@@ -351,7 +346,7 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
351
346
safety : rs,
352
347
define_opaque : _,
353
348
} ) ,
354
- ) => eq_id ( * li , * ri ) && lm == rm && ls == rs && eq_ty ( lt, rt) && eq_expr_opt ( le. as_deref ( ) , re. as_deref ( ) ) ,
349
+ ) => li . name == ri . name && lm == rm && ls == rs && eq_ty ( lt, rt) && eq_expr_opt ( le. as_deref ( ) , re. as_deref ( ) ) ,
355
350
(
356
351
Const ( box ConstItem {
357
352
defaultness : ld,
@@ -371,7 +366,7 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
371
366
} ) ,
372
367
) => {
373
368
eq_defaultness ( * ld, * rd)
374
- && eq_id ( * li , * ri )
369
+ && li . name == ri . name
375
370
&& eq_generics ( lg, rg)
376
371
&& eq_ty ( lt, rt)
377
372
&& eq_expr_opt ( le. as_deref ( ) , re. as_deref ( ) )
@@ -398,14 +393,14 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
398
393
) => {
399
394
eq_defaultness ( * ld, * rd)
400
395
&& eq_fn_sig ( lf, rf)
401
- && eq_id ( * li , * ri )
396
+ && li . name == ri . name
402
397
&& eq_generics ( lg, rg)
403
398
&& eq_opt_fn_contract ( lc, rc)
404
399
&& both ( lb. as_ref ( ) , rb. as_ref ( ) , |l, r| eq_block ( l, r) )
405
400
} ,
406
401
( Mod ( ls, li, lmk) , Mod ( rs, ri, rmk) ) => {
407
402
ls == rs
408
- && eq_id ( * li , * ri )
403
+ && li . name == ri . name
409
404
&& match ( lmk, rmk) {
410
405
( ModKind :: Loaded ( litems, linline, _) , ModKind :: Loaded ( ritems, rinline, _) ) => {
411
406
linline == rinline && over ( litems, ritems, |l, r| eq_item ( l, r, eq_item_kind) )
@@ -440,10 +435,10 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
440
435
&& both ( lt. as_ref ( ) , rt. as_ref ( ) , |l, r| eq_ty ( l, r) )
441
436
} ,
442
437
( Enum ( li, lg, le) , Enum ( ri, rg, re) ) => {
443
- eq_id ( * li , * ri ) && eq_generics ( lg, rg) && over ( & le. variants , & re. variants , eq_variant)
438
+ li . name == ri . name && eq_generics ( lg, rg) && over ( & le. variants , & re. variants , eq_variant)
444
439
} ,
445
440
( Struct ( li, lg, lv) , Struct ( ri, rg, rv) ) | ( Union ( li, lg, lv) , Union ( ri, rg, rv) ) => {
446
- eq_id ( * li , * ri ) && eq_generics ( lg, rg) && eq_variant_data ( lv, rv)
441
+ li . name == ri . name && eq_generics ( lg, rg) && eq_variant_data ( lv, rv)
447
442
} ,
448
443
(
449
444
Trait ( box ast:: Trait {
@@ -468,13 +463,13 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
468
463
matches ! ( lc, ast:: Const :: No ) == matches ! ( rc, ast:: Const :: No )
469
464
&& la == ra
470
465
&& matches ! ( lu, Safety :: Default ) == matches ! ( ru, Safety :: Default )
471
- && eq_id ( * li , * ri )
466
+ && li . name == ri . name
472
467
&& eq_generics ( lg, rg)
473
468
&& over ( lb, rb, eq_generic_bound)
474
469
&& over ( lis, ris, |l, r| eq_item ( l, r, eq_assoc_item_kind) )
475
470
} ,
476
471
( TraitAlias ( li, lg, lb) , TraitAlias ( ri, rg, rb) ) => {
477
- eq_id ( * li , * ri ) && eq_generics ( lg, rg) && over ( lb, rb, eq_generic_bound)
472
+ li . name == ri . name && eq_generics ( lg, rg) && over ( lb, rb, eq_generic_bound)
478
473
} ,
479
474
(
480
475
Impl ( ast:: Impl {
@@ -503,7 +498,7 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
503
498
} ,
504
499
( MacCall ( l) , MacCall ( r) ) => eq_mac_call ( l, r) ,
505
500
( MacroDef ( li, ld) , MacroDef ( ri, rd) ) => {
506
- eq_id ( * li , * ri ) && ld. macro_rules == rd. macro_rules && eq_delim_args ( & ld. body , & rd. body )
501
+ li . name == ri . name && ld. macro_rules == rd. macro_rules && eq_delim_args ( & ld. body , & rd. body )
507
502
} ,
508
503
_ => false ,
509
504
}
@@ -529,7 +524,7 @@ pub fn eq_foreign_item_kind(l: &ForeignItemKind, r: &ForeignItemKind) -> bool {
529
524
safety : rs,
530
525
define_opaque : _,
531
526
} ) ,
532
- ) => eq_id ( * li , * ri ) && eq_ty ( lt, rt) && lm == rm && eq_expr_opt ( le. as_deref ( ) , re. as_deref ( ) ) && ls == rs,
527
+ ) => li . name == ri . name && eq_ty ( lt, rt) && lm == rm && eq_expr_opt ( le. as_deref ( ) , re. as_deref ( ) ) && ls == rs,
533
528
(
534
529
Fn ( box ast:: Fn {
535
530
defaultness : ld,
@@ -552,7 +547,7 @@ pub fn eq_foreign_item_kind(l: &ForeignItemKind, r: &ForeignItemKind) -> bool {
552
547
) => {
553
548
eq_defaultness ( * ld, * rd)
554
549
&& eq_fn_sig ( lf, rf)
555
- && eq_id ( * li , * ri )
550
+ && li . name == ri . name
556
551
&& eq_generics ( lg, rg)
557
552
&& eq_opt_fn_contract ( lc, rc)
558
553
&& both ( lb. as_ref ( ) , rb. as_ref ( ) , |l, r| eq_block ( l, r) )
@@ -576,7 +571,7 @@ pub fn eq_foreign_item_kind(l: &ForeignItemKind, r: &ForeignItemKind) -> bool {
576
571
} ) ,
577
572
) => {
578
573
eq_defaultness ( * ld, * rd)
579
- && eq_id ( * li , * ri )
574
+ && li . name == ri . name
580
575
&& eq_generics ( lg, rg)
581
576
&& over ( lb, rb, eq_generic_bound)
582
577
&& both ( lt. as_ref ( ) , rt. as_ref ( ) , |l, r| eq_ty ( l, r) )
@@ -608,7 +603,7 @@ pub fn eq_assoc_item_kind(l: &AssocItemKind, r: &AssocItemKind) -> bool {
608
603
} ) ,
609
604
) => {
610
605
eq_defaultness ( * ld, * rd)
611
- && eq_id ( * li , * ri )
606
+ && li . name == ri . name
612
607
&& eq_generics ( lg, rg)
613
608
&& eq_ty ( lt, rt)
614
609
&& eq_expr_opt ( le. as_deref ( ) , re. as_deref ( ) )
@@ -635,7 +630,7 @@ pub fn eq_assoc_item_kind(l: &AssocItemKind, r: &AssocItemKind) -> bool {
635
630
) => {
636
631
eq_defaultness ( * ld, * rd)
637
632
&& eq_fn_sig ( lf, rf)
638
- && eq_id ( * li , * ri )
633
+ && li . name == ri . name
639
634
&& eq_generics ( lg, rg)
640
635
&& eq_opt_fn_contract ( lc, rc)
641
636
&& both ( lb. as_ref ( ) , rb. as_ref ( ) , |l, r| eq_block ( l, r) )
@@ -659,7 +654,7 @@ pub fn eq_assoc_item_kind(l: &AssocItemKind, r: &AssocItemKind) -> bool {
659
654
} ) ,
660
655
) => {
661
656
eq_defaultness ( * ld, * rd)
662
- && eq_id ( * li , * ri )
657
+ && li . name == ri . name
663
658
&& eq_generics ( lg, rg)
664
659
&& over ( lb, rb, eq_generic_bound)
665
660
&& both ( lt. as_ref ( ) , rt. as_ref ( ) , |l, r| eq_ty ( l, r) )
@@ -673,7 +668,7 @@ pub fn eq_variant(l: &Variant, r: &Variant) -> bool {
673
668
l. is_placeholder == r. is_placeholder
674
669
&& over ( & l. attrs , & r. attrs , eq_attr)
675
670
&& eq_vis ( & l. vis , & r. vis )
676
- && eq_id ( l. ident , r. ident )
671
+ && l. ident . name == r. ident . name
677
672
&& eq_variant_data ( & l. data , & r. data )
678
673
&& both ( l. disr_expr . as_ref ( ) , r. disr_expr . as_ref ( ) , |l, r| {
679
674
eq_expr ( & l. value , & r. value )
@@ -695,7 +690,7 @@ pub fn eq_struct_field(l: &FieldDef, r: &FieldDef) -> bool {
695
690
l. is_placeholder == r. is_placeholder
696
691
&& over ( & l. attrs , & r. attrs , eq_attr)
697
692
&& eq_vis ( & l. vis , & r. vis )
698
- && both ( l. ident . as_ref ( ) , r. ident . as_ref ( ) , |l, r| eq_id ( * l , * r ) )
693
+ && both ( l. ident . as_ref ( ) , r. ident . as_ref ( ) , |l, r| l . name == r . name )
699
694
&& eq_ty ( & l. ty , & r. ty )
700
695
}
701
696
@@ -753,7 +748,7 @@ pub fn eq_where_predicate(l: &WherePredicate, r: &WherePredicate) -> bool {
753
748
&& over ( & l. bounds , & r. bounds , eq_generic_bound)
754
749
} ,
755
750
( RegionPredicate ( l) , RegionPredicate ( r) ) => {
756
- eq_id ( l. lifetime . ident , r. lifetime . ident ) && over ( & l. bounds , & r. bounds , eq_generic_bound)
751
+ l. lifetime . ident . name == r. lifetime . ident . name && over ( & l. bounds , & r. bounds , eq_generic_bound)
757
752
} ,
758
753
( EqPredicate ( l) , EqPredicate ( r) ) => eq_ty ( & l. lhs_ty , & r. lhs_ty ) && eq_ty ( & l. rhs_ty , & r. rhs_ty ) ,
759
754
_ => false ,
@@ -772,7 +767,7 @@ pub fn eq_use_tree_kind(l: &UseTreeKind, r: &UseTreeKind) -> bool {
772
767
use UseTreeKind :: * ;
773
768
match ( l, r) {
774
769
( Glob , Glob ) => true ,
775
- ( Simple ( l) , Simple ( r) ) => both ( l. as_ref ( ) , r. as_ref ( ) , |l, r| eq_id ( * l , * r ) ) ,
770
+ ( Simple ( l) , Simple ( r) ) => both ( l. as_ref ( ) , r. as_ref ( ) , |l, r| l . name == r . name ) ,
776
771
( Nested { items : l, .. } , Nested { items : r, .. } ) => over ( l, r, |( l, _) , ( r, _) | eq_use_tree ( l, r) ) ,
777
772
_ => false ,
778
773
}
@@ -834,10 +829,14 @@ pub fn eq_ty(l: &Ty, r: &Ty) -> bool {
834
829
( Array ( le, ls) , Array ( re, rs) ) => eq_ty ( le, re) && eq_expr ( & ls. value , & rs. value ) ,
835
830
( Ptr ( l) , Ptr ( r) ) => l. mutbl == r. mutbl && eq_ty ( & l. ty , & r. ty ) ,
836
831
( Ref ( ll, l) , Ref ( rl, r) ) => {
837
- 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 )
832
+ both ( ll. as_ref ( ) , rl. as_ref ( ) , |l, r| l. ident . name == r. ident . name )
833
+ && l. mutbl == r. mutbl
834
+ && eq_ty ( & l. ty , & r. ty )
838
835
} ,
839
836
( PinnedRef ( ll, l) , PinnedRef ( rl, r) ) => {
840
- 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 )
837
+ both ( ll. as_ref ( ) , rl. as_ref ( ) , |l, r| l. ident . name == r. ident . name )
838
+ && l. mutbl == r. mutbl
839
+ && eq_ty ( & l. ty , & r. ty )
841
840
} ,
842
841
( FnPtr ( l) , FnPtr ( r) ) => {
843
842
l. safety == r. safety
@@ -879,7 +878,7 @@ pub fn eq_poly_ref_trait(l: &PolyTraitRef, r: &PolyTraitRef) -> bool {
879
878
pub fn eq_generic_param ( l : & GenericParam , r : & GenericParam ) -> bool {
880
879
use GenericParamKind :: * ;
881
880
l. is_placeholder == r. is_placeholder
882
- && eq_id ( l. ident , r. ident )
881
+ && l. ident . name == r. ident . name
883
882
&& over ( & l. bounds , & r. bounds , eq_generic_bound)
884
883
&& match ( & l. kind , & r. kind ) {
885
884
( Lifetime , Lifetime ) => true ,
@@ -905,7 +904,7 @@ pub fn eq_generic_bound(l: &GenericBound, r: &GenericBound) -> bool {
905
904
use GenericBound :: * ;
906
905
match ( l, r) {
907
906
( Trait ( ptr1) , Trait ( ptr2) ) => eq_poly_ref_trait ( ptr1, ptr2) ,
908
- ( Outlives ( l) , Outlives ( r) ) => eq_id ( l. ident , r. ident ) ,
907
+ ( Outlives ( l) , Outlives ( r) ) => l. ident . name == r. ident . name ,
909
908
_ => false ,
910
909
}
911
910
}
@@ -928,7 +927,7 @@ fn eq_term(l: &Term, r: &Term) -> bool {
928
927
929
928
pub fn eq_assoc_item_constraint ( l : & AssocItemConstraint , r : & AssocItemConstraint ) -> bool {
930
929
use AssocItemConstraintKind :: * ;
931
- eq_id ( l. ident , r. ident )
930
+ l. ident . name == r. ident . name
932
931
&& match ( & l. kind , & r. kind ) {
933
932
( Equality { term : l } , Equality { term : r } ) => eq_term ( l, r) ,
934
933
( Bound { bounds : l } , Bound { bounds : r } ) => over ( l, r, eq_generic_bound) ,
0 commit comments