@@ -775,6 +775,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
775
775
}
776
776
777
777
fn process_path ( & mut self , id : NodeId , path : & ' l ast:: Path ) {
778
+ debug ! ( "process_path {:?}" , path) ;
778
779
let path_data = self . save_ctxt . get_path_data ( id, path) ;
779
780
if generated_code ( path. span ) && path_data. is_none ( ) {
780
781
return ;
@@ -862,14 +863,26 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> DumpVisitor<'l, 'tcx, 'll, O> {
862
863
walk_list ! ( self , visit_expr, base) ;
863
864
}
864
865
865
- fn process_method_call ( & mut self , ex : & ' l ast:: Expr , args : & ' l [ P < ast:: Expr > ] ) {
866
+ fn process_method_call ( & mut self ,
867
+ ex : & ' l ast:: Expr ,
868
+ seg : & ' l ast:: PathSegment ,
869
+ args : & ' l [ P < ast:: Expr > ] ) {
866
870
if let Some ( mcd) = self . save_ctxt . get_expr_data ( ex) {
867
871
down_cast_data ! ( mcd, RefData , ex. span) ;
868
872
if !generated_code ( ex. span ) {
869
873
self . dumper . dump_ref ( mcd) ;
870
874
}
871
875
}
872
876
877
+ // Explicit types in the turbo-fish.
878
+ if let Some ( ref params) = seg. parameters {
879
+ if let ast:: PathParameters :: AngleBracketed ( ref data) = * * params {
880
+ for t in & data. types {
881
+ self . visit_ty ( t) ;
882
+ }
883
+ }
884
+ }
885
+
873
886
// walk receiver and args
874
887
walk_list ! ( self , visit_expr, args) ;
875
888
}
@@ -1330,7 +1343,7 @@ impl<'l, 'tcx: 'l, 'll, O: DumpOutput + 'll> Visitor<'l> for DumpVisitor<'l, 'tc
1330
1343
let def = self . save_ctxt . get_path_def ( hir_expr. id ) ;
1331
1344
self . process_struct_lit ( ex, path, fields, adt. variant_of_def ( def) , base)
1332
1345
}
1333
- ast:: ExprKind :: MethodCall ( .. , ref args) => self . process_method_call ( ex, args) ,
1346
+ ast:: ExprKind :: MethodCall ( ref seg , ref args) => self . process_method_call ( ex, seg , args) ,
1334
1347
ast:: ExprKind :: Field ( ref sub_ex, _) => {
1335
1348
self . visit_expr ( & sub_ex) ;
1336
1349
0 commit comments