diff options
| author | Douglas Campos <qmx@qmx.me> | 2017-09-19 17:31:00 -0400 |
|---|---|---|
| committer | Douglas Campos <qmx@qmx.me> | 2017-09-29 22:34:46 -0400 |
| commit | 24fc50fffacef28d580a67b3c881f62d4752a860 (patch) | |
| tree | 1dc3edbe3aa189963dfd912272481a9896604b57 | |
| parent | 5eb302fba812b2c4105192c88d92cbdb8db7cd6f (diff) | |
| download | rust-24fc50fffacef28d580a67b3c881f62d4752a860.tar.gz rust-24fc50fffacef28d580a67b3c881f62d4752a860.zip | |
make it not to be a method
| -rw-r--r-- | src/librustc/ty/instance.rs | 15 | ||||
| -rw-r--r-- | src/librustc_mir/transform/inline.rs | 2 |
2 files changed, 8 insertions, 9 deletions
diff --git a/src/librustc/ty/instance.rs b/src/librustc/ty/instance.rs index b14715615f2..fee4b292359 100644 --- a/src/librustc/ty/instance.rs +++ b/src/librustc/ty/instance.rs @@ -118,16 +118,15 @@ impl<'a, 'b, 'tcx> Instance<'tcx> { /// The point where linking happens. Resolve a (def_id, substs) /// pair to an instance. - pub fn resolve(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>) -> Option<Instance<'tcx>> { - let def_id = self.def_id(); - debug!("resolve(def_id={:?}, substs={:?})", def_id, self.substs); + pub fn resolve(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId, substs: &'tcx Substs<'tcx>) -> Option<Instance<'tcx>> { + debug!("resolve(def_id={:?}, substs={:?})", def_id, substs); let result = if let Some(trait_def_id) = tcx.trait_of_item(def_id) { debug!(" => associated item, attempting to find impl"); let item = tcx.associated_item(def_id); - resolve_associated_item(tcx, &item, trait_def_id, self.substs) + resolve_associated_item(tcx, &item, trait_def_id, substs) } else { let ty = tcx.type_of(def_id); - let item_type = tcx.trans_apply_param_substs(self.substs, &ty); + let item_type = tcx.trans_apply_param_substs(substs, &ty); let def = match item_type.sty { ty::TyFnDef(..) if { @@ -141,7 +140,7 @@ impl<'a, 'b, 'tcx> Instance<'tcx> { } _ => { if Some(def_id) == tcx.lang_items().drop_in_place_fn() { - let ty = self.substs.type_at(0); + let ty = substs.type_at(0); if ty.needs_drop(tcx, ty::ParamEnv::empty(traits::Reveal::All)) { debug!(" => nontrivial drop glue"); ty::InstanceDef::DropGlue(def_id, Some(ty)) @@ -157,10 +156,10 @@ impl<'a, 'b, 'tcx> Instance<'tcx> { }; Some(Instance { def: def, - substs: self.substs + substs: substs }) }; - debug!("resolve(def_id={:?}, substs={:?}) = {:?}", def_id, self.substs, result); + debug!("resolve(def_id={:?}, substs={:?}) = {:?}", def_id, substs, result); result } diff --git a/src/librustc_mir/transform/inline.rs b/src/librustc_mir/transform/inline.rs index f8bdca519ce..426dce4da1a 100644 --- a/src/librustc_mir/transform/inline.rs +++ b/src/librustc_mir/transform/inline.rs @@ -88,7 +88,7 @@ impl<'a, 'tcx> Inliner<'a, 'tcx> { if let TerminatorKind::Call { func: Operand::Constant(ref f), .. } = terminator.kind { if let ty::TyFnDef(callee_def_id, substs) = f.ty.sty { - if let Some(instance) = Instance::new(callee_def_id, substs).resolve(self.tcx) { + if let Some(instance) = Instance::resolve(self.tcx, callee_def_id, substs) { callsites.push_back(CallSite { callee: instance.def_id(), substs: instance.substs, |
