diff --git a/src/Cargo.lock b/src/Cargo.lock index 21b167f6d42..7b1a1ec7d26 100644 --- a/src/Cargo.lock +++ b/src/Cargo.lock @@ -793,6 +793,7 @@ dependencies = [ "rustc_metadata 0.0.0", "rustc_resolve 0.0.0", "rustc_trans 0.0.0", + "rustc_typeck 0.0.0", "serialize 0.0.0", "syntax 0.0.0", "syntax_pos 0.0.0", diff --git a/src/librustdoc/Cargo.toml b/src/librustdoc/Cargo.toml index 7caae51e889..0e8a6606ae7 100644 --- a/src/librustdoc/Cargo.toml +++ b/src/librustdoc/Cargo.toml @@ -21,6 +21,7 @@ rustc_errors = { path = "../librustc_errors" } rustc_lint = { path = "../librustc_lint" } rustc_metadata = { path = "../librustc_metadata" } rustc_resolve = { path = "../librustc_resolve" } +rustc_typeck = { path = "../librustc_typeck" } rustc_trans = { path = "../librustc_trans" } serialize = { path = "../libserialize" } syntax = { path = "../libsyntax" } diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 0a748487244..24d056035ce 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -36,6 +36,7 @@ use rustc::ty::subst::Substs; use rustc::ty::{self, AdtKind}; use rustc::middle::stability; use rustc::util::nodemap::{FxHashMap, FxHashSet}; +use rustc_typeck::hir_ty_to_ty; use rustc::hir; @@ -1779,10 +1780,9 @@ impl Clean for hir::Ty { } TyPath(hir::QPath::TypeRelative(ref qself, ref segment)) => { let mut def = Def::Err; - if let Some(ty) = cx.tcx.ast_ty_to_ty_cache.borrow().get(&self.id) { - if let ty::TyProjection(proj) = ty.sty { - def = Def::Trait(proj.trait_ref.def_id); - } + let ty = hir_ty_to_ty(cx.tcx, self); + if let ty::TyProjection(proj) = ty.sty { + def = Def::Trait(proj.trait_ref.def_id); } let trait_path = hir::Path { span: self.span, diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index 2a6134fde5c..d4be1aba62d 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -41,6 +41,7 @@ extern crate rustc_resolve; extern crate rustc_lint; extern crate rustc_back; extern crate rustc_metadata; +extern crate rustc_typeck; extern crate serialize; #[macro_use] extern crate syntax; extern crate syntax_pos;