use llvm::{ModuleRef, ContextRef, ValueRef};
use llvm::debuginfo::{DIFile, DIType, DIScope, DIBuilderRef, DISubprogram, DIArray, DIFlags};
use rustc::hir::def_id::{DefId, CrateNum};
-use rustc::ty::subst::Substs;
+use rustc::ty::subst::{Subst, Substs};
use abi::Abi;
use common::CrateContext;
// If the method does *not* belong to a trait, proceed
if cx.tcx().trait_id_of_impl(impl_def_id).is_none() {
let impl_self_ty =
- Instance::new(impl_def_id, instance.substs).ty(cx.tcx());
+ cx.tcx().type_of(impl_def_id).subst(cx.tcx(), instance.substs);
// Only "class" methods are generally understood by LLVM,
// so avoid methods on other types (e.g. `<*mut T>::null`).
use syntax::ast::NodeId;
use syntax::symbol::{Symbol, InternedString};
use trans_item::{MonoItem, BaseMonoItemExt, MonoItemExt, InstantiationMode};
-use rustc::ty::Instance;
+use rustc::ty::subst::Subst;
pub use rustc::mir::mono::CodegenUnit;
if let Some(impl_def_id) = tcx.impl_of_method(def_id) {
// This is a method within an inherent impl, find out what the
// self-type is:
- let impl_self_ty = Instance::new(impl_def_id, instance.substs).ty(tcx);
+ let impl_self_ty = tcx.type_of(impl_def_id).subst(tcx, instance.substs);
if let Some(def_id) = characteristic_def_id_of_type(impl_self_ty) {
return Some(def_id);
}