}
/// Retrieves the `Node` corresponding to `id`, panicking if it cannot be found.
- pub fn get(&self, id: NodeId) -> Node<'hir> {
- let hir_id = self.node_to_hir_id(id);
- self.get_by_hir_id(hir_id)
- }
-
- // FIXME(@ljedrz): replace the `NodeId` variant.
pub fn get_by_hir_id(&self, id: HirId) -> Node<'hir> {
// read recorded by `find`
self.find_by_hir_id(id).unwrap_or_else(||
}
pub fn get_if_local(&self, id: DefId) -> Option<Node<'hir>> {
- self.as_local_node_id(id).map(|id| self.get(id)) // read recorded by `get`
+ self.as_local_hir_id(id).map(|id| self.get_by_hir_id(id)) // read recorded by `get`
}
pub fn get_generics(&self, id: DefId) -> Option<&'hir Generics> {
box out,
annotation.pp_ann());
for node_id in uii.all_matching_node_ids(hir_map) {
- let node = hir_map.get(node_id);
+ let hir_id = tcx.hir().node_to_hir_id(node_id);
+ let node = hir_map.get_by_hir_id(hir_id);
pp_state.print_node(node)?;
pp_state.s.space()?;
let path = annotation.node_path(node_id)
s.call_with_pp_support_hir(tcx, move |_annotation, _krate| {
debug!("pretty printing source code {:?}", s);
for node_id in uii.all_matching_node_ids(tcx.hir()) {
- let node = tcx.hir().get(node_id);
+ let hir_id = tcx.hir().node_to_hir_id(node_id);
+ let node = tcx.hir().get_by_hir_id(hir_id);
write!(out, "{:#?}", node)?;
}
Ok(())
}
fn lookup_def_id(&self, ref_id: NodeId) -> Option<DefId> {
- match self.save_ctxt.get_path_res(ref_id) {
+ let hir_id = self.save_ctxt.tcx.hir().node_to_hir_id(ref_id);
+ match self.save_ctxt.get_path_res(hir_id) {
Res::PrimTy(..) | Res::SelfTy(..) | Res::Err => None,
def => Some(def.def_id()),
}
return;
}
};
- let variant = adt.variant_of_res(self.save_ctxt.get_path_res(p.id));
+ let hir_id = self.save_ctxt.tcx.hir().node_to_hir_id(p.id);
+ let variant = adt.variant_of_res(self.save_ctxt.get_path_res(hir_id));
for &Spanned { node: ref field, .. } in fields {
if let Some(index) = self.tcx.find_field_index(field.ident, variant) {
// process collected paths
for (id, ident, immut) in collector.collected_idents {
- match self.save_ctxt.get_path_res(id) {
+ let hir_id = self.save_ctxt.tcx.hir().node_to_hir_id(id);
+ match self.save_ctxt.get_path_res(hir_id) {
Res::Local(hir_id) => {
let mut value = if immut == ast::Mutability::Immutable {
self.span.snippet(ident.span)
return;
}
};
- let node_id = self.save_ctxt.tcx.hir().hir_to_node_id(hir_expr.hir_id);
- let res = self.save_ctxt.get_path_res(node_id);
+ let res = self.save_ctxt.get_path_res(hir_expr.hir_id);
self.process_struct_lit(ex, path, fields, adt.variant_of_res(res), base)
}
ast::ExprKind::MethodCall(ref seg, ref args) => self.process_method_call(ex, seg, args),
}
}
- pub fn get_path_res(&self, id: NodeId) -> Res {
- match self.tcx.hir().get(id) {
+ pub fn get_path_res(&self, hir_id: hir::HirId) -> Res {
+ match self.tcx.hir().get_by_hir_id(hir_id) {
Node::TraitRef(tr) => tr.path.res,
Node::Item(&hir::Item {
Node::PathSegment(seg) => {
match seg.res {
Some(res) if res != Res::Err => res,
- _ => self.get_path_res(self.tcx.hir().get_parent_node(id)),
+ _ => self.get_path_res(self.tcx.hir().get_parent_node_by_hir_id(hir_id)),
}
}
node: hir::ExprKind::Struct(ref qpath, ..),
..
}) => {
- let hir_id = self.tcx.hir().node_to_hir_id(id);
self.tables.qpath_res(qpath, hir_id)
}
node: hir::TyKind::Path(ref qpath),
..
}) => {
- let hir_id = self.tcx.hir().node_to_hir_id(id);
self.tables.qpath_res(qpath, hir_id)
}
return None;
}
- let res = self.get_path_res(id);
+ let hir_id = self.tcx.hir().node_to_hir_id(id);
+ let res = self.get_path_res(hir_id);
let span = path_seg.ident.span;
filter!(self.span_utils, span);
let span = self.span_from_span(span);
}
fn lookup_ref_id(&self, ref_id: NodeId) -> Option<DefId> {
- match self.get_path_res(ref_id) {
+ let hir_id = self.tcx.hir().node_to_hir_id(ref_id);
+ match self.get_path_res(hir_id) {
Res::PrimTy(_) | Res::SelfTy(..) | Res::Err => None,
def => Some(def.def_id()),
}
};
let name = pprust::path_segment_to_string(path.segments.last().ok_or("Bad path")?);
- let res = scx.get_path_res(id.ok_or("Missing id for Path")?);
+ let hir_id = id.map(|node_id| scx.tcx.hir().node_to_hir_id(node_id));
+ let res = scx.get_path_res(hir_id.ok_or("Missing id for Path")?);
let id = id_from_def_id(res.def_id());
if path.segments.len() - qself.position == 1 {
let start = offset + prefix.len();
impl Sig for ast::Path {
fn make(&self, offset: usize, id: Option<NodeId>, scx: &SaveContext<'_, '_>) -> Result {
- let res = scx.get_path_res(id.ok_or("Missing id for Path")?);
+ let hir_id = id.map(|node_id| scx.tcx.hir().node_to_hir_id(node_id));
+ let res = scx.get_path_res(hir_id.ok_or("Missing id for Path")?);
let (name, start, end) = match res {
Res::PrimTy(..) | Res::SelfTy(..) | Res::Err => {