@@ -397,27 +397,17 @@ impl id_range {
397
397
}
398
398
}
399
399
400
- pub fn id_visitor ( operation : @IdVisitingOperation , pass_through_items : bool )
401
- -> @mut Visitor < ( ) > {
402
- let visitor = @mut IdVisitor {
403
- operation : operation,
404
- pass_through_items : pass_through_items,
405
- visited_outermost : false ,
406
- } ;
407
- visitor as @mut Visitor < ( ) >
408
- }
409
-
410
400
pub trait IdVisitingOperation {
411
401
fn visit_id ( & self , node_id : NodeId ) ;
412
402
}
413
403
414
- pub struct IdVisitor {
415
- operation : @ IdVisitingOperation ,
404
+ pub struct IdVisitor < ' self , O > {
405
+ operation : & ' self O ,
416
406
pass_through_items : bool ,
417
407
visited_outermost : bool ,
418
408
}
419
409
420
- impl IdVisitor {
410
+ impl < ' self , O : IdVisitingOperation > IdVisitor < ' self , O > {
421
411
fn visit_generics_helper ( & self , generics : & Generics ) {
422
412
for type_parameter in generics. ty_params . iter ( ) {
423
413
self . operation . visit_id ( type_parameter. id )
@@ -428,7 +418,7 @@ impl IdVisitor {
428
418
}
429
419
}
430
420
431
- impl Visitor < ( ) > for IdVisitor {
421
+ impl < ' self , O : IdVisitingOperation > Visitor < ( ) > for IdVisitor < ' self , O > {
432
422
fn visit_mod ( & mut self ,
433
423
module : & _mod ,
434
424
_: Span ,
@@ -601,10 +591,18 @@ impl Visitor<()> for IdVisitor {
601
591
struct_def. ctor_id . map ( |& ctor_id| self . operation . visit_id ( ctor_id) ) ;
602
592
visit:: walk_struct_def ( self , struct_def, ident, generics, id, ( ) ) ;
603
593
}
594
+
595
+ fn visit_trait_method ( & mut self , tm : & ast:: trait_method , _: ( ) ) {
596
+ match * tm {
597
+ ast:: required( ref m) => self . operation . visit_id ( m. id ) ,
598
+ ast:: provided( ref m) => self . operation . visit_id ( m. id ) ,
599
+ }
600
+ visit:: walk_trait_method ( self , tm, ( ) ) ;
601
+ }
604
602
}
605
603
606
- pub fn visit_ids_for_inlined_item ( item : & inlined_item ,
607
- operation : @ IdVisitingOperation ) {
604
+ pub fn visit_ids_for_inlined_item < O : IdVisitingOperation > ( item : & inlined_item ,
605
+ operation : & O ) {
608
606
let mut id_visitor = IdVisitor {
609
607
operation : operation,
610
608
pass_through_items : true ,
@@ -623,18 +621,14 @@ impl IdVisitingOperation for IdRangeComputingVisitor {
623
621
}
624
622
}
625
623
626
- pub fn compute_id_range ( visit_ids_fn : & fn ( @ IdVisitingOperation ) ) -> id_range {
624
+ pub fn compute_id_range_for_inlined_item ( item : & inlined_item ) -> id_range {
627
625
let result = @mut id_range:: max ( ) ;
628
- visit_ids_fn ( @ IdRangeComputingVisitor {
626
+ visit_ids_for_inlined_item ( item , & IdRangeComputingVisitor {
629
627
result : result,
630
- } as @ IdVisitingOperation ) ;
628
+ } ) ;
631
629
* result
632
630
}
633
631
634
- pub fn compute_id_range_for_inlined_item ( item : & inlined_item ) -> id_range {
635
- compute_id_range ( |f| visit_ids_for_inlined_item ( item, f) )
636
- }
637
-
638
632
pub fn is_item_impl ( item : @ast:: item ) -> bool {
639
633
match item. node {
640
634
item_impl( * ) => true ,
5 commit comments
bors commentedon Oct 3, 2013
saw approval from thestinger
at alexcrichton@c0388cd
bors commentedon Oct 3, 2013
merging alexcrichton/rust/lint = c0388cd into auto
bors commentedon Oct 3, 2013
alexcrichton/rust/lint = c0388cd merged ok, testing candidate = 9344e2a
bors commentedon Oct 3, 2013
all tests pass:
success: http://buildbot.rust-lang.org/builders/auto-mac-32-opt/builds/1831
success: http://buildbot.rust-lang.org/builders/auto-mac-64-opt/builds/1835
success: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-c/builds/941
success: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-t/builds/940
success: http://buildbot.rust-lang.org/builders/auto-linux-32-opt/builds/1849
success: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-c/builds/941
success: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-t/builds/941
success: http://buildbot.rust-lang.org/builders/auto-linux-64-opt/builds/1850
success: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-c/builds/941
success: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-t/builds/941
success: http://buildbot.rust-lang.org/builders/auto-linux-64-x-android/builds/1021
success: http://buildbot.rust-lang.org/builders/auto-win-32-opt/builds/1834
success: http://buildbot.rust-lang.org/builders/auto-win-32-nopt-c/builds/940
success: http://buildbot.rust-lang.org/builders/auto-win-32-nopt-t/builds/941
success: http://buildbot.rust-lang.org/builders/auto-bsd-64-opt/builds/1619
bors commentedon Oct 3, 2013
fast-forwarding master to auto = 9344e2a