diff options
Diffstat (limited to 'src/librustdoc/html/render.rs')
| -rw-r--r-- | src/librustdoc/html/render.rs | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index b34f1a01a2b..cf03482e18b 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -53,8 +53,9 @@ use externalfiles::ExternalHtml; use serialize::json::{self, ToJson}; use syntax::{abi, ast, attr}; -use rustc::middle::def_id::{DefId, LOCAL_CRATE}; -use rustc::util::nodemap::NodeSet; +use rustc::metadata::cstore::LOCAL_CRATE; +use rustc::middle::def_id::{CRATE_DEF_INDEX, DefId}; +use rustc::util::nodemap::DefIdSet; use rustc_front::hir; use clean::{self, SelfTy}; @@ -205,7 +206,7 @@ pub struct Cache { search_index: Vec<IndexItem>, privmod: bool, remove_priv: bool, - public_items: NodeSet, + public_items: DefIdSet, deref_trait_did: Option<DefId>, // In rare case where a structure is defined in one module but implemented @@ -213,7 +214,7 @@ pub struct Cache { // then the fully qualified name of the structure isn't presented in `paths` // yet when its implementation methods are being indexed. Caches such methods // and their parent id here and indexes them at the end of crate parsing. - orphan_methods: Vec<(ast::NodeId, clean::Item)>, + orphan_methods: Vec<(DefId, clean::Item)>, } /// Helper struct to render all source code to HTML pages @@ -377,7 +378,7 @@ pub fn run(mut krate: clean::Crate, let analysis = ::ANALYSISKEY.with(|a| a.clone()); let analysis = analysis.borrow(); let public_items = analysis.as_ref().map(|a| a.public_items.clone()); - let public_items = public_items.unwrap_or(NodeSet()); + let public_items = public_items.unwrap_or(DefIdSet()); let paths: HashMap<DefId, (Vec<String>, ItemType)> = analysis.as_ref().map(|a| { let paths = a.external_paths.borrow_mut().take().unwrap(); @@ -412,7 +413,7 @@ pub fn run(mut krate: clean::Crate, for &(n, ref e) in &krate.externs { cache.extern_locations.insert(n, (e.name.clone(), extern_location(e, &cx.dst))); - let did = DefId { krate: n, node: ast::CRATE_NODE_ID }; + let did = DefId { krate: n, index: CRATE_DEF_INDEX }; cache.paths.insert(did, (vec![e.name.to_string()], ItemType::Module)); } @@ -459,8 +460,7 @@ fn build_index(krate: &clean::Crate, cache: &mut Cache) -> io::Result<String> { // Attach all orphan methods to the type's definition if the type // has since been learned. - for &(pid, ref item) in orphan_methods { - let did = DefId::local(pid); + for &(did, ref item) in orphan_methods { match paths.get(&did) { Some(&(ref fqp, _)) => { // Needed to determine `self` type. @@ -968,7 +968,7 @@ impl DocFolder for Cache { if parent.is_local() { // We have a parent, but we don't know where they're // defined yet. Wait for later to index this item. - self.orphan_methods.push((parent.node, item.clone())) + self.orphan_methods.push((parent, item.clone())) } } _ => {} @@ -994,10 +994,11 @@ impl DocFolder for Cache { // `public_items` map, so we can skip inserting into the // paths map if there was already an entry present and we're // not a public item. - let id = item.def_id.node; - if !self.paths.contains_key(&item.def_id) || - !item.def_id.is_local() || - self.public_items.contains(&id) { + if + !self.paths.contains_key(&item.def_id) || + !item.def_id.is_local() || + self.public_items.contains(&item.def_id) + { self.paths.insert(item.def_id, (self.stack.clone(), shortty(&item))); } @@ -1033,7 +1034,7 @@ impl DocFolder for Cache { ref t => { match t.primitive_type() { Some(prim) => { - let did = DefId::local(prim.to_node_id()); + let did = DefId::local(prim.to_def_index()); self.parent_stack.push(did); true } @@ -1078,8 +1079,8 @@ impl DocFolder for Cache { ref t => { t.primitive_type().and_then(|t| { self.primitive_locations.get(&t).map(|n| { - let id = t.to_node_id(); - DefId { krate: *n, node: id } + let id = t.to_def_index(); + DefId { krate: *n, index: id } }) }) } @@ -1420,7 +1421,7 @@ impl<'a> Item<'a> { root = root, path = path[..path.len() - 1].join("/"), file = item_path(self.item), - goto = self.item.def_id.node)) + goto = self.item.def_id.index.as_usize())) } } } @@ -1480,7 +1481,7 @@ impl<'a> fmt::Display for Item<'a> { Some(l) => { try!(write!(fmt, "<a id='src-{}' class='srclink' \ href='{}' title='{}'>[src]</a>", - self.item.def_id.node, l, "goto source code")); + self.item.def_id.index.as_usize(), l, "goto source code")); } None => {} } @@ -2336,7 +2337,7 @@ fn render_deref_methods(w: &mut fmt::Formatter, cx: &Context, impl_: &Impl) -> f _ => { if let Some(prim) = target.primitive_type() { if let Some(c) = cache().primitive_locations.get(&prim) { - let did = DefId { krate: *c, node: prim.to_node_id() }; + let did = DefId { krate: *c, index: prim.to_def_index() }; try!(render_assoc_items(w, cx, did, what)); } } |
