make mk_closure
take a ClosureSubsts
This commit is contained in:
parent
3349e7bb45
commit
0ac8542abc
4 changed files with 19 additions and 16 deletions
|
@ -256,7 +256,7 @@ impl<'a, 'gcx, 'tcx> TypeFolder<'gcx, 'tcx> for TypeFreshener<'a, 'gcx, 'tcx> {
|
|||
let closure_sig = this.infcx.fn_sig(def_id);
|
||||
(tcx.mk_fn_ptr(closure_sig.fold_with(this)), tcx.types.char)
|
||||
},
|
||||
|substs| tcx.mk_closure(def_id, substs)
|
||||
|substs| tcx.mk_closure(def_id, ty::ClosureSubsts { substs })
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -1981,11 +1981,9 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
|
|||
|
||||
pub fn mk_closure(self,
|
||||
closure_id: DefId,
|
||||
substs: &'tcx Substs<'tcx>)
|
||||
-> Ty<'tcx> {
|
||||
self.mk_closure_from_closure_substs(closure_id, ClosureSubsts {
|
||||
substs,
|
||||
})
|
||||
substs: ClosureSubsts<'tcx>)
|
||||
-> Ty<'tcx> {
|
||||
self.mk_closure_from_closure_substs(closure_id, substs)
|
||||
}
|
||||
|
||||
pub fn mk_closure_from_closure_substs(self,
|
||||
|
|
|
@ -103,11 +103,11 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
|
|||
.next_ty_var(TypeVariableOrigin::ClosureSynthetic(expr.span))
|
||||
},
|
||||
);
|
||||
let substs = ty::ClosureSubsts { substs };
|
||||
let closure_type = self.tcx.mk_closure(expr_def_id, substs);
|
||||
|
||||
if let Some(interior) = interior {
|
||||
let closure_substs = ty::ClosureSubsts { substs: substs };
|
||||
return self.tcx.mk_generator(expr_def_id, closure_substs, interior);
|
||||
return self.tcx.mk_generator(expr_def_id, substs, interior);
|
||||
}
|
||||
|
||||
debug!(
|
||||
|
|
|
@ -1163,14 +1163,19 @@ fn type_of<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
|
|||
return tcx.typeck_tables_of(def_id).node_id_to_type(hir_id);
|
||||
}
|
||||
|
||||
tcx.mk_closure(def_id, Substs::for_item(
|
||||
tcx, def_id,
|
||||
|def, _| {
|
||||
let region = def.to_early_bound_region_data();
|
||||
tcx.mk_region(ty::ReEarlyBound(region))
|
||||
},
|
||||
|def, _| tcx.mk_param_from_def(def)
|
||||
))
|
||||
let substs = ty::ClosureSubsts {
|
||||
substs: Substs::for_item(
|
||||
tcx,
|
||||
def_id,
|
||||
|def, _| {
|
||||
let region = def.to_early_bound_region_data();
|
||||
tcx.mk_region(ty::ReEarlyBound(region))
|
||||
},
|
||||
|def, _| tcx.mk_param_from_def(def)
|
||||
)
|
||||
};
|
||||
|
||||
tcx.mk_closure(def_id, substs)
|
||||
}
|
||||
|
||||
NodeExpr(_) => match tcx.hir.get(tcx.hir.get_parent_node(node_id)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue