use rustc_errors::{pluralize, struct_span_err};
use rustc_errors::{Applicability, DiagnosticBuilder, DiagnosticStyledString};
use rustc_hir as hir;
-use rustc_hir::def_id::DefId;
+use rustc_hir::def_id::{DefId, LocalDefId};
use rustc_hir::Node;
use rustc_middle::middle::region;
use rustc_middle::ty::error::TypeError;
// it's a actual definition. According to the comments (e.g. in
// librustc_typeck/check/compare_method.rs:compare_predicate_entailment) the latter
// is relied upon by some other code. This might (or might not) need cleanup.
- let body_owner_def_id =
- self.tcx.hir().opt_local_def_id(cause.body_id).unwrap_or_else(|| {
+ let body_owner_def_id = self
+ .tcx
+ .hir()
+ .opt_local_def_id(cause.body_id)
+ .map(LocalDefId::to_def_id)
+ .unwrap_or_else(|| {
self.tcx.hir().body_owner_def_id(hir::BodyId { hir_id: cause.body_id })
});
self.check_and_note_conflicting_crates(diag, terr);
}
pub fn def_path_from_hir_id(&self, id: HirId) -> Option<DefPath> {
- self.opt_local_def_id(id).map(|def_id| self.def_path(def_id.expect_local()))
+ self.opt_local_def_id(id).map(|def_id| self.def_path(def_id))
}
pub fn def_path(&self, def_id: LocalDefId) -> DefPath {
// FIXME(eddyb) this function can and should return `LocalDefId`.
#[inline]
pub fn local_def_id(&self, hir_id: HirId) -> DefId {
- self.opt_local_def_id(hir_id).unwrap_or_else(|| {
- bug!(
- "local_def_id: no entry for `{:?}`, which has a map of `{:?}`",
- hir_id,
- self.find_entry(hir_id)
- )
- })
+ self.opt_local_def_id(hir_id)
+ .unwrap_or_else(|| {
+ bug!(
+ "local_def_id: no entry for `{:?}`, which has a map of `{:?}`",
+ hir_id,
+ self.find_entry(hir_id)
+ )
+ })
+ .to_def_id()
}
#[inline]
- pub fn opt_local_def_id(&self, hir_id: HirId) -> Option<DefId> {
+ pub fn opt_local_def_id(&self, hir_id: HirId) -> Option<LocalDefId> {
let node_id = self.hir_id_to_node_id(hir_id);
- Some(self.opt_local_def_id_from_node_id(node_id)?.to_def_id())
+ self.opt_local_def_id_from_node_id(node_id)
}
#[inline]
use rustc_data_structures::fx::FxHashMap;
use rustc_errors::{pluralize, struct_span_err, Applicability, DiagnosticBuilder};
use rustc_hir as hir;
-use rustc_hir::def_id::{DefId, LOCAL_CRATE};
+use rustc_hir::def_id::{DefId, LocalDefId, LOCAL_CRATE};
use rustc_hir::{Node, QPath, TyKind, WhereBoundPredicate, WherePredicate};
use rustc_middle::mir::interpret::ErrorHandled;
use rustc_middle::ty::error::ExpectedFound;
let enclosing_scope_span = tcx.def_span(
tcx.hir()
.opt_local_def_id(obligation.cause.body_id)
+ .map(LocalDefId::to_def_id)
.unwrap_or_else(|| {
tcx.hir().body_owner_def_id(hir::BodyId {
hir_id: obligation.cause.body_id,
self.tcx
.hir()
.opt_local_def_id(id)
- .and_then(|def_id| self.tcx.lookup_stability(def_id))
+ .and_then(|def_id| self.tcx.lookup_stability(def_id.to_def_id()))
.cloned()
}
pub fn deprecation(&self, id: HirId) -> Option<attr::Deprecation> {
- self.tcx.hir().opt_local_def_id(id).and_then(|def_id| self.tcx.lookup_deprecation(def_id))
+ self.tcx
+ .hir()
+ .opt_local_def_id(id)
+ .and_then(|def_id| self.tcx.lookup_deprecation(def_id.to_def_id()))
}
}