}
/// Retrieves the `Node` corresponding to `id`, returning `None` if cannot be found.
- pub fn find(&self, id: NodeId) -> Option<Node<'hir>> {
- let hir_id = self.node_to_hir_id(id);
- self.find_by_hir_id(hir_id)
- }
-
- // FIXME(@ljedrz): replace the `NodeId` variant.
pub fn find_by_hir_id(&self, hir_id: HirId) -> Option<Node<'hir>> {
let result = self.find_entry(hir_id).and_then(|entry| {
if let Node::Crate = entry.node {
let nodeid =
nodeid.expect("`pretty flowgraph=..` needs NodeId (int) or unique path \
suffix (b::c::d)");
- let node = tcx.hir().find(nodeid).unwrap_or_else(|| {
+ let hir_id = tcx.hir().node_to_hir_id(nodeid);
+ let node = tcx.hir().find_by_hir_id(hir_id).unwrap_or_else(|| {
tcx.sess.fatal(&format!("--pretty flowgraph couldn't find id: {}", nodeid))
});
- let hir_id = tcx.hir().node_to_hir_id(nodeid);
match blocks::Code::from_node(&tcx.hir(), hir_id) {
Some(code) => {
let variants = gather_flowgraph_variants(tcx.sess);
.into_iter()
.flatten()
.map(|(&var_hir_id, &upvar_id)| {
- let var_node_id = tcx_hir.hir_to_node_id(var_hir_id);
let capture = hir_tables.upvar_capture(upvar_id);
let by_ref = match capture {
ty::UpvarCapture::ByValue => false,
by_ref,
};
let mut mutability = Mutability::Not;
- if let Some(Node::Binding(pat)) = tcx_hir.find(var_node_id) {
+ if let Some(Node::Binding(pat)) = tcx_hir.find_by_hir_id(var_hir_id) {
if let hir::PatKind::Binding(_, _, ident, _) = pat.node {
debuginfo.debug_name = ident.name;
if let Some(&bm) = hir.tables.pat_binding_modes().get(pat.hir_id) {
let mut decl_id = None;
let mut docs = String::new();
let mut attrs = vec![];
- if let Some(Node::ImplItem(item)) = self.tcx.hir().find(id) {
+ let hir_id = self.tcx.hir().node_to_hir_id(id);
+ if let Some(Node::ImplItem(item)) =
+ self.tcx.hir().find_by_hir_id(hir_id)
+ {
docs = self.docs_for_attrs(&item.attrs);
attrs = item.attrs.to_vec();
}
Some(def_id) => {
let mut docs = String::new();
let mut attrs = vec![];
+ let hir_id = self.tcx.hir().node_to_hir_id(id);
- if let Some(Node::TraitItem(item)) = self.tcx.hir().find(id) {
+ if let Some(Node::TraitItem(item)) = self.tcx.hir().find_by_hir_id(hir_id) {
docs = self.docs_for_attrs(&item.attrs);
attrs = item.attrs.to_vec();
}
}
match expr.node {
ast::ExprKind::Field(ref sub_ex, ident) => {
- let hir_node = match self.tcx.hir().find(sub_ex.id) {
+ let sub_ex_hir_id = self.tcx.hir().node_to_hir_id(sub_ex.id);
+ let hir_node = match self.tcx.hir().find_by_hir_id(sub_ex_hir_id) {
Some(Node::Expr(expr)) => expr,
_ => {
debug!(