@@ -415,9 +415,36 @@ fn noop_fold_expr(e: expr_, fld: ast_fold) -> expr_ {
415
415
}
416
416
}
417
417
418
- fn noop_fold_ty( t: ty_, _fld: ast_fold) -> ty_ {
419
- //drop in ty::fold_ty here if necessary
420
- ret t;
418
+ fn noop_fold_ty( t: ty_, fld: ast_fold) -> ty_ {
419
+ let fold_mac = bind fold_mac_( _, fld) ;
420
+ fn fold_mt ( mt: mt, fld: ast_fold) -> mt {
421
+ { ty : fld. fold_ty ( mt. ty ) , mut : mt. mut }
422
+ }
423
+ fn fold_field ( f: ty_field, fld: ast_fold) -> ty_field {
424
+ { node : { ident: fld. fold_ident ( f. node . ident ) ,
425
+ mt : fold_mt ( f. node . mt , fld) } ,
426
+ span: fld. new_span ( f. span ) }
427
+ }
428
+ alt t {
429
+ ty_nil | ty_bot | ty_bool | ty_str { t}
430
+ ty_int( _) | ty_uint ( _) | ty_float ( _) { t}
431
+ ty_box ( mt) { ty_box ( fold_mt ( mt, fld) ) }
432
+ ty_uniq ( mt) { ty_uniq ( fold_mt ( mt, fld) ) }
433
+ ty_vec ( mt) { ty_vec ( fold_mt ( mt, fld) ) }
434
+ ty_ptr ( mt) { ty_ptr ( fold_mt ( mt, fld) ) }
435
+ ty_task { t}
436
+ ty_port ( ty) { ty_port ( fld. fold_ty ( ty) ) }
437
+ ty_chan ( ty) { ty_chan ( fld. fold_ty ( ty) ) }
438
+ ty_rec ( fields) { ty_rec ( vec:: map ( fields) { |f| fold_field ( f, fld) } ) }
439
+ ty_fn ( proto, decl) { ty_fn ( proto, fold_fn_decl ( decl, fld) ) }
440
+ ty_tup ( tys) { ty_tup ( vec:: map ( tys) { |ty| fld. fold_ty ( ty) } ) }
441
+ ty_path ( path, id) { ty_path ( fld. fold_path ( path) , fld. new_id ( id) ) }
442
+ ty_type { t}
443
+ // FIXME: constrs likely needs to be folded...
444
+ ty_constr ( ty, constrs) { ty_constr ( fld. fold_ty ( ty) , constrs) }
445
+ ty_mac ( mac) { ty_mac ( fold_mac ( mac) ) }
446
+ ty_infer { t}
447
+ }
421
448
}
422
449
423
450
fn noop_fold_constr( c: constr_, fld: ast_fold) -> constr_ {
0 commit comments