From 372ba2a03d7180c3a58631ecbd93e8912e697bab Mon Sep 17 00:00:00 2001 From: marmeladema Date: Sat, 30 May 2020 14:38:46 +0100 Subject: [PATCH] Use `LocalDefId` instead of `NodeId` in `resolve_str_path_error` --- src/librustc_resolve/lib.rs | 7 ++----- src/librustdoc/core.rs | 10 +++++++--- src/librustdoc/passes/collect_intra_doc_links.rs | 6 +++--- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index b50f9fe8e907d..e5fc23e14d2ab 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -2902,7 +2902,7 @@ impl<'a> Resolver<'a> { span: Span, path_str: &str, ns: Namespace, - module_id: NodeId, + module_id: LocalDefId, ) -> Result<(ast::Path, Res), ()> { let path = if path_str.starts_with("::") { ast::Path { @@ -2922,10 +2922,7 @@ impl<'a> Resolver<'a> { .collect(), } }; - let module = self.block_map.get(&module_id).copied().unwrap_or_else(|| { - let def_id = self.definitions.local_def_id(module_id); - self.module_map.get(&def_id).copied().unwrap_or(self.graph_root) - }); + let module = self.module_map.get(&module_id).copied().unwrap_or(self.graph_root); let parent_scope = &ParentScope::module(module); let res = self.resolve_ast_path(&path, ns, parent_scope).map_err(|_| ())?; Ok((path, res)) diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs index 99ca7084c30dd..06293a987124e 100644 --- a/src/librustdoc/core.rs +++ b/src/librustdoc/core.rs @@ -1,4 +1,3 @@ -use rustc_ast::ast::CRATE_NODE_ID; use rustc_attr as attr; use rustc_data_structures::fx::{FxHashMap, FxHashSet}; use rustc_data_structures::sync::{self, Lrc}; @@ -7,7 +6,7 @@ use rustc_errors::emitter::{Emitter, EmitterWriter}; use rustc_errors::json::JsonEmitter; use rustc_feature::UnstableFeatures; use rustc_hir::def::Namespace::TypeNS; -use rustc_hir::def_id::{CrateNum, DefId, DefIndex, LOCAL_CRATE}; +use rustc_hir::def_id::{CrateNum, DefId, DefIndex, LocalDefId, CRATE_DEF_INDEX, LOCAL_CRATE}; use rustc_hir::HirId; use rustc_interface::interface; use rustc_middle::middle::cstore::CrateStore; @@ -390,7 +389,12 @@ pub fn run_core(options: RustdocOptions) -> (clean::Crate, RenderInfo, RenderOpt resolver.borrow_mut().access(|resolver| { for extern_name in &extern_names { resolver - .resolve_str_path_error(DUMMY_SP, extern_name, TypeNS, CRATE_NODE_ID) + .resolve_str_path_error( + DUMMY_SP, + extern_name, + TypeNS, + LocalDefId { local_def_index: CRATE_DEF_INDEX }, + ) .unwrap_or_else(|()| { panic!("Unable to resolve external crate {}", extern_name) }); diff --git a/src/librustdoc/passes/collect_intra_doc_links.rs b/src/librustdoc/passes/collect_intra_doc_links.rs index adb7fc3eb9cff..149480ec80f29 100644 --- a/src/librustdoc/passes/collect_intra_doc_links.rs +++ b/src/librustdoc/passes/collect_intra_doc_links.rs @@ -8,7 +8,7 @@ use rustc_hir::def::{ Namespace::{self, *}, PerNS, Res, }; -use rustc_hir::def_id::DefId; +use rustc_hir::def_id::{DefId, LocalDefId}; use rustc_middle::ty; use rustc_resolve::ParentScope; use rustc_session::lint; @@ -61,7 +61,7 @@ impl<'a, 'tcx> LinkCollector<'a, 'tcx> { &self, path_str: &str, current_item: &Option, - module_id: rustc_ast::ast::NodeId, + module_id: LocalDefId, ) -> Result<(Res, Option), ErrorKind> { let cx = self.cx; @@ -137,7 +137,7 @@ impl<'a, 'tcx> LinkCollector<'a, 'tcx> { // In case we're in a module, try to resolve the relative path. if let Some(module_id) = parent_id.or(self.mod_ids.last().cloned()) { - let module_id = cx.tcx.hir().hir_id_to_node_id(module_id); + let module_id = cx.tcx.hir().local_def_id(module_id); let result = cx.enter_resolver(|resolver| { resolver.resolve_str_path_error(DUMMY_SP, &path_str, ns, module_id) });