diff options
| author | Jared Roesch <roeschinc@gmail.com> | 2015-06-30 02:39:47 -0700 |
|---|---|---|
| committer | Jared Roesch <roeschinc@gmail.com> | 2015-06-30 02:41:40 -0700 |
| commit | 7a8f83a6e59abb53adaafe7a9f70ff7069feefae (patch) | |
| tree | d2dc260b97dd50b915e6a3aa823d50839ad7e94c | |
| parent | 9faae6a5ca1c5579a8185138b1e534285324db87 (diff) | |
| download | rust-7a8f83a6e59abb53adaafe7a9f70ff7069feefae.tar.gz rust-7a8f83a6e59abb53adaafe7a9f70ff7069feefae.zip | |
Clean up patch
| -rw-r--r-- | src/librustc/middle/infer/mod.rs | 18 | ||||
| -rw-r--r-- | src/librustc/middle/mem_categorization.rs | 1 | ||||
| -rw-r--r-- | src/librustc/middle/traits/mod.rs | 22 | ||||
| -rw-r--r-- | src/librustc_typeck/check/assoc.rs | 2 | ||||
| -rw-r--r-- | src/librustc_typeck/check/mod.rs | 3 | ||||
| -rw-r--r-- | src/librustc_typeck/coherence/mod.rs | 1 |
6 files changed, 14 insertions, 33 deletions
diff --git a/src/librustc/middle/infer/mod.rs b/src/librustc/middle/infer/mod.rs index a64fe8b9128..43be1beba91 100644 --- a/src/librustc/middle/infer/mod.rs +++ b/src/librustc/middle/infer/mod.rs @@ -1386,16 +1386,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> { .subst(self.tcx, substs); if self.normalize { - // NOTE: this flag is currently *always* set to false, we are slowly folding - // normalization into this trait and will come back to remove this in the near - // future. - - // code from NormalizingClosureTyper: - // the substitutions in `substs` are already monomorphized, - // but we still must normalize associated types - // normalize_associated_type(self.param_env.tcx, &closure_ty) normalize_associated_type(&self.tcx, &closure_ty) - // panic!("see issue 26597: fufillment context refactor must occur") } else { closure_ty } @@ -1409,15 +1400,6 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> { let result = ty::ctxt::closure_upvars(self, def_id, substs); if self.normalize { - // NOTE: this flag is currently *always* set to false, we are slowly folding - // normalization into this trait and will come back to remove this in the near - // future. - - // code from NormalizingClosureTyper: - // the substitutions in `substs` are already monomorphized, - // but we still must normalize associated types - // monomorphize::normalize_associated_type(self.param_env.tcx, &result) - // panic!("see issue 26597: fufillment context refactor must occur") normalize_associated_type(&self.tcx, &result) } else { result diff --git a/src/librustc/middle/mem_categorization.rs b/src/librustc/middle/mem_categorization.rs index 32fbd773900..f506de525ff 100644 --- a/src/librustc/middle/mem_categorization.rs +++ b/src/librustc/middle/mem_categorization.rs @@ -257,7 +257,6 @@ impl ast_node for ast::Pat { #[derive(Copy, Clone)] pub struct MemCategorizationContext<'t, 'a: 't, 'tcx : 'a> { pub typer: &'t infer::InferCtxt<'a, 'tcx>, - // pub monomorphize: bool, } pub type McResult<T> = Result<T, ()>; diff --git a/src/librustc/middle/traits/mod.rs b/src/librustc/middle/traits/mod.rs index a39fe453664..47002497acc 100644 --- a/src/librustc/middle/traits/mod.rs +++ b/src/librustc/middle/traits/mod.rs @@ -436,17 +436,20 @@ pub fn fully_normalize<'a,'tcx,T>(infcx: &InferCtxt<'a,'tcx>, debug!("normalize_param_env(value={:?})", value); let mut selcx = &mut SelectionContext::new(infcx); - // FIXME (@jroesch): I'm not sure if this is a bug or not, needs - // further investigation. It appears that by reusing the fulfillment_cx - // here we incur more obligations and later trip an asssertion on - // regionck.rs line 337. The two possibilities I see is that - // normalization is not actually fully happening and we - // have a bug else where or that we are adding a duplicate - // bound into the list causing its size to change. I think - // we should probably land this refactor and then come + // FIXME (@jroesch): + // I'm not sure if this is a bug or not, needs further investigation. + // It appears that by reusing the fulfillment_cx here we incur more + // obligations and later trip an asssertion on regionck.rs line 337. + // + // The two possibilities I see is: + // - normalization is not actually fully happening and we + // have a bug else where + // - we are adding a duplicate bound into the list causing + // its size to change. + // + // I think we should probably land this refactor and then come // back to this is a follow-up patch. let mut fulfill_cx = FulfillmentContext::new(false); - // let mut fulfill_cx = infcx.fulfillment_cx.borrow_mut(); let Normalized { value: normalized_value, obligations } = project::normalize(selcx, cause, value); @@ -456,6 +459,7 @@ pub fn fully_normalize<'a,'tcx,T>(infcx: &InferCtxt<'a,'tcx>, for obligation in obligations { fulfill_cx.register_predicate_obligation(selcx.infcx(), obligation); } + try!(fulfill_cx.select_all_or_error(infcx)); let resolved_value = infcx.resolve_type_vars_if_possible(&normalized_value); debug!("normalize_param_env: resolved_value={:?}", resolved_value); diff --git a/src/librustc_typeck/check/assoc.rs b/src/librustc_typeck/check/assoc.rs index 75263c35d59..c80c48a9692 100644 --- a/src/librustc_typeck/check/assoc.rs +++ b/src/librustc_typeck/check/assoc.rs @@ -16,7 +16,7 @@ use middle::ty_fold::TypeFoldable; use syntax::ast; use syntax::codemap::Span; -//FIME(@jroesch): Refactor this +//FIXME(@jroesch): Ideally we should be able to drop the fulfillment_cx argument. pub fn normalize_associated_types_in<'a,'tcx,T>(infcx: &InferCtxt<'a,'tcx>, fulfillment_cx: &mut FulfillmentContext<'tcx>, span: Span, diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index 477b6e98256..b7ebf1abd2d 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -158,9 +158,6 @@ pub struct Inherited<'a, 'tcx: 'a> { // one is never copied into the tcx: it is only used by regionck. fn_sig_map: RefCell<NodeMap<Vec<Ty<'tcx>>>>, - // Tracks trait obligations incurred during this function body. - // fulfillment_cx: RefCell<traits::FulfillmentContext<'tcx>>, - // When we process a call like `c()` where `c` is a closure type, // we may not have decided yet whether `c` is a `Fn`, `FnMut`, or // `FnOnce` closure. In that case, we defer full resolution of the diff --git a/src/librustc_typeck/coherence/mod.rs b/src/librustc_typeck/coherence/mod.rs index fca23a1b029..a1c5ad51dcd 100644 --- a/src/librustc_typeck/coherence/mod.rs +++ b/src/librustc_typeck/coherence/mod.rs @@ -631,7 +631,6 @@ fn subst_receiver_types_in_method_ty<'tcx>(tcx: &ty::ctxt<'tcx>, pub fn check_coherence(crate_context: &CrateCtxt) { CoherenceChecker { crate_context: crate_context, - // XXXJAREDXXX: not sure if the bool is right here? inference_context: new_infer_ctxt(crate_context.tcx, &crate_context.tcx.tables, None, true), inherent_impls: RefCell::new(FnvHashMap()), }.check(crate_context.tcx.map.krate()); |
