about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDouglas Campos <qmx@qmx.me>2017-09-19 17:31:00 -0400
committerDouglas Campos <qmx@qmx.me>2017-09-29 22:34:46 -0400
commit24fc50fffacef28d580a67b3c881f62d4752a860 (patch)
tree1dc3edbe3aa189963dfd912272481a9896604b57
parent5eb302fba812b2c4105192c88d92cbdb8db7cd6f (diff)
downloadrust-24fc50fffacef28d580a67b3c881f62d4752a860.tar.gz
rust-24fc50fffacef28d580a67b3c881f62d4752a860.zip
make it not to be a method
-rw-r--r--src/librustc/ty/instance.rs15
-rw-r--r--src/librustc_mir/transform/inline.rs2
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,