@@ -51,21 +51,21 @@ use std::rc::Rc;
5151use llvm:: { ValueRef , True , IntEQ , IntNE } ;
5252use back:: abi:: FAT_PTR_ADDR ;
5353use middle:: subst;
54- use middle:: subst:: Subst ;
54+ use middle:: ty:: { mod, Ty , UnboxedClosureTyper } ;
55+ use middle:: ty:: Disr ;
56+ use syntax:: ast;
57+ use syntax:: attr;
58+ use syntax:: attr:: IntType ;
5559use trans:: _match;
5660use trans:: build:: * ;
5761use trans:: cleanup;
5862use trans:: cleanup:: CleanupMethods ;
5963use trans:: common:: * ;
6064use trans:: datum;
6165use trans:: machine;
66+ use trans:: monomorphize;
6267use trans:: type_:: Type ;
6368use trans:: type_of;
64- use middle:: ty:: { self , Ty , UnboxedClosureTyper } ;
65- use middle:: ty:: Disr ;
66- use syntax:: ast;
67- use syntax:: attr;
68- use syntax:: attr:: IntType ;
6969use util:: ppaux:: ty_to_string;
7070
7171type Hint = attr:: ReprAttr ;
@@ -159,7 +159,8 @@ fn represent_type_uncached<'a, 'tcx>(cx: &CrateContext<'a, 'tcx>,
159159 ty:: ty_struct( def_id, substs) => {
160160 let fields = ty:: lookup_struct_fields ( cx. tcx ( ) , def_id) ;
161161 let mut ftys = fields. iter ( ) . map ( |field| {
162- ty:: lookup_field_type ( cx. tcx ( ) , def_id, field. id , substs)
162+ let fty = ty:: lookup_field_type ( cx. tcx ( ) , def_id, field. id , substs) ;
163+ monomorphize:: normalize_associated_type ( cx. tcx ( ) , & fty)
163164 } ) . collect :: < Vec < _ > > ( ) ;
164165 let packed = ty:: lookup_packed ( cx. tcx ( ) , def_id) ;
165166 let dtor = ty:: ty_dtor ( cx. tcx ( ) , def_id) . has_drop_flag ( ) ;
@@ -432,7 +433,7 @@ fn get_cases<'tcx>(tcx: &ty::ctxt<'tcx>,
432433 -> Vec < Case < ' tcx > > {
433434 ty:: enum_variants ( tcx, def_id) . iter ( ) . map ( |vi| {
434435 let arg_tys = vi. args . iter ( ) . map ( |& raw_ty| {
435- raw_ty . subst ( tcx, substs)
436+ monomorphize :: apply_param_substs ( tcx, substs, & raw_ty )
436437 } ) . collect ( ) ;
437438 Case { discr : vi. disr_val , tys : arg_tys }
438439 } ) . collect ( )
0 commit comments