typeck: remove remaining boxed closures

This commit is contained in:
Jorge Aparicio 2015-01-04 17:22:50 -05:00
parent 8570f0acc7
commit 977e151b9a
2 changed files with 14 additions and 13 deletions
src/librustc_typeck/check

View File

@ -387,14 +387,18 @@ impl<'a,'tcx> ProbeContext<'a,'tcx> {
// Do a search through a list of bounds, using a callback to actually
// create the candidates.
fn elaborate_bounds(
fn elaborate_bounds<F>(
&mut self,
bounds: &[ty::PolyTraitRef<'tcx>],
num_includes_types: bool,
mk_cand: for<'b> |this: &mut ProbeContext<'b, 'tcx>,
tr: ty::PolyTraitRef<'tcx>,
m: Rc<ty::Method<'tcx>>,
method_num: uint|)
mut mk_cand: F,
) where
F: for<'b> FnMut(
&mut ProbeContext<'b, 'tcx>,
ty::PolyTraitRef<'tcx>,
Rc<ty::Method<'tcx>>,
uint,
),
{
debug!("elaborate_bounds(bounds={})", bounds.repr(self.tcx()));

View File

@ -81,10 +81,9 @@ impl<'ccx, 'tcx> CheckTypeWellFormedVisitor<'ccx, 'tcx> {
}
}
fn with_fcx(&mut self,
item: &ast::Item,
f: for<'fcx> |&mut CheckTypeWellFormedVisitor<'ccx, 'tcx>,
&FnCtxt<'fcx, 'tcx>|) {
fn with_fcx<F>(&mut self, item: &ast::Item, mut f: F) where
F: for<'fcx> FnMut(&mut CheckTypeWellFormedVisitor<'ccx, 'tcx>, &FnCtxt<'fcx, 'tcx>),
{
let ccx = self.ccx;
let item_def_id = local_def(item.id);
let polytype = ty::lookup_item_type(ccx.tcx, item_def_id);
@ -100,10 +99,8 @@ impl<'ccx, 'tcx> CheckTypeWellFormedVisitor<'ccx, 'tcx> {
}
/// In a type definition, we check that to ensure that the types of the fields are well-formed.
fn check_type_defn(&mut self,
item: &ast::Item,
lookup_fields: for<'fcx> |&FnCtxt<'fcx, 'tcx>|
-> Vec<AdtVariant<'tcx>>)
fn check_type_defn<F>(&mut self, item: &ast::Item, mut lookup_fields: F) where
F: for<'fcx> FnMut(&FnCtxt<'fcx, 'tcx>) -> Vec<AdtVariant<'tcx>>,
{
self.with_fcx(item, |this, fcx| {
let variants = lookup_fields(fcx);