@@ -192,7 +192,7 @@ use self::VarianceTerm::*;
192192use self :: ParamKind :: * ;
193193
194194use arena;
195- use arena:: Arena ;
195+ use arena:: TypedArena ;
196196use middle:: resolve_lifetime as rl;
197197use middle:: subst;
198198use middle:: subst:: { ParamSpace , FnSpace , TypeSpace , SelfSpace , VecPerParamSpace } ;
@@ -210,7 +210,7 @@ use util::ppaux::Repr;
210210
211211pub fn infer_variance ( tcx : & ty:: ctxt ) {
212212 let krate = tcx. map . krate ( ) ;
213- let mut arena = arena:: Arena :: new ( ) ;
213+ let mut arena = arena:: TypedArena :: new ( ) ;
214214 let terms_cx = determine_parameters_to_be_inferred ( tcx, & mut arena, krate) ;
215215 let constraints_cx = add_constraints_from_crate ( terms_cx, krate) ;
216216 solve_constraints ( constraints_cx) ;
@@ -254,7 +254,7 @@ impl<'a> fmt::Debug for VarianceTerm<'a> {
254254
255255struct TermsContext < ' a , ' tcx : ' a > {
256256 tcx : & ' a ty:: ctxt < ' tcx > ,
257- arena : & ' a Arena ,
257+ arena : & ' a TypedArena < VarianceTerm < ' a > > ,
258258
259259 empty_variances : Rc < ty:: ItemVariances > ,
260260
@@ -282,7 +282,7 @@ struct InferredInfo<'a> {
282282}
283283
284284fn determine_parameters_to_be_inferred < ' a , ' tcx > ( tcx : & ' a ty:: ctxt < ' tcx > ,
285- arena : & ' a mut Arena ,
285+ arena : & ' a mut TypedArena < VarianceTerm < ' a > > ,
286286 krate : & ast:: Crate )
287287 -> TermsContext < ' a , ' tcx > {
288288 let mut terms_cx = TermsContext {
@@ -312,7 +312,7 @@ impl<'a, 'tcx> TermsContext<'a, 'tcx> {
312312 index : uint ,
313313 param_id : ast:: NodeId ) {
314314 let inf_index = InferredIndex ( self . inferred_infos . len ( ) ) ;
315- let term = self . arena . alloc ( || InferredTerm ( inf_index) ) ;
315+ let term = self . arena . alloc ( InferredTerm ( inf_index) ) ;
316316 self . inferred_infos . push ( InferredInfo { item_id : item_id,
317317 kind : kind,
318318 space : space,
@@ -455,10 +455,10 @@ fn add_constraints_from_crate<'a, 'tcx>(terms_cx: TermsContext<'a, 'tcx>,
455455
456456 let unsafe_lang_item = terms_cx. tcx . lang_items . unsafe_type ( ) ;
457457
458- let covariant = terms_cx. arena . alloc ( || ConstantTerm ( ty:: Covariant ) ) ;
459- let contravariant = terms_cx. arena . alloc ( || ConstantTerm ( ty:: Contravariant ) ) ;
460- let invariant = terms_cx. arena . alloc ( || ConstantTerm ( ty:: Invariant ) ) ;
461- let bivariant = terms_cx. arena . alloc ( || ConstantTerm ( ty:: Bivariant ) ) ;
458+ let covariant = terms_cx. arena . alloc ( ConstantTerm ( ty:: Covariant ) ) ;
459+ let contravariant = terms_cx. arena . alloc ( ConstantTerm ( ty:: Contravariant ) ) ;
460+ let invariant = terms_cx. arena . alloc ( ConstantTerm ( ty:: Invariant ) ) ;
461+ let bivariant = terms_cx. arena . alloc ( ConstantTerm ( ty:: Bivariant ) ) ;
462462 let mut constraint_cx = ConstraintContext {
463463 terms_cx : terms_cx,
464464
@@ -719,7 +719,7 @@ impl<'a, 'tcx> ConstraintContext<'a, 'tcx> {
719719 }
720720
721721 _ => {
722- & * self . terms_cx . arena . alloc ( || TransformTerm ( v1, v2) )
722+ & * self . terms_cx . arena . alloc ( TransformTerm ( v1, v2) )
723723 }
724724 }
725725 }
0 commit comments