@@ -974,8 +974,16 @@ mod writeback {
974
974
fn visit_stmt_pre( @fn_ctxt fcx, & @ast:: stmt s) {
975
975
resolve_type_vars_for_node( fcx, s. span, ty:: stmt_node_id( s) ) ;
976
976
}
977
- fn visit_expr_pre( @fn_ctxt fcx, & @ast:: expr e) {
977
+ fn visit_expr_pre( @mutable bool ignore , @ fn_ctxt fcx, & @ast:: expr e) {
978
978
resolve_type_vars_for_node( fcx, e. span, e. id) ;
979
+ alt ( e. node) {
980
+ // We don't want to recurse down into lambdas.
981
+ case ( ast:: expr_fn( _) ) { * ignore = true; }
982
+ case ( _) { }
983
+ }
984
+ }
985
+ fn visit_expr_post( @mutable bool ignore, & @ast:: expr e) {
986
+ * ignore = false;
979
987
}
980
988
fn visit_block_pre( @fn_ctxt fcx, & ast:: block b) {
981
989
resolve_type_vars_for_node( fcx, b. span, b. node. id) ;
@@ -1015,7 +1023,8 @@ mod writeback {
1015
1023
visit_item_pre=bind visit_item_pre( ignore, _) ,
1016
1024
visit_item_post=bind visit_item_post( ignore, _) ,
1017
1025
visit_stmt_pre=bind visit_stmt_pre( fcx, _) ,
1018
- visit_expr_pre=bind visit_expr_pre( fcx, _) ,
1026
+ visit_expr_pre=bind visit_expr_pre( ignore, fcx, _) ,
1027
+ visit_expr_post=bind visit_expr_post( ignore, _) ,
1019
1028
visit_block_pre=bind visit_block_pre( fcx, _) ,
1020
1029
visit_pat_pre=bind visit_pat_pre( fcx, _) ,
1021
1030
visit_local_pre=bind visit_local_pre( fcx, _)
0 commit comments