mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-16 21:15:18 +03:00
Rollup merge of #62091 - ljedrz:hiridification_almost_there, r=Zoxc
HirIdification: almost there
I'm beginning to run out of stuff to HirIdify 😉.
This time I targeted mainly `hir::map::{find, get_parent_node}`, but a few other bits got changed too.
r? @Zoxc
This commit is contained in:
@@ -87,7 +87,7 @@ pub fn from_node(map: &map::Map<'a>, id: ast::HirId) -> Option<Code<'a>> {
|
||||
match map.get(id) {
|
||||
map::Node::Block(_) => {
|
||||
// Use the parent, hopefully an expression node.
|
||||
Code::from_node(map, map.get_parent_node_by_hir_id(id))
|
||||
Code::from_node(map, map.get_parent_node(id))
|
||||
}
|
||||
map::Node::Expr(expr) => Some(Code::Expr(expr)),
|
||||
node => FnLikeNode::from_node(node).map(Code::FnLike)
|
||||
|
||||
+25
-38
@@ -292,7 +292,7 @@ pub fn local_def_id_to_hir_id(&self, def_id: LocalDefId) -> HirId {
|
||||
}
|
||||
|
||||
fn def_kind(&self, hir_id: HirId) -> Option<DefKind> {
|
||||
let node = if let Some(node) = self.find_by_hir_id(hir_id) {
|
||||
let node = if let Some(node) = self.find(hir_id) {
|
||||
node
|
||||
} else {
|
||||
return None
|
||||
@@ -347,7 +347,7 @@ fn def_kind(&self, hir_id: HirId) -> Option<DefKind> {
|
||||
if variant_data.ctor_hir_id().is_none() {
|
||||
return None;
|
||||
}
|
||||
let ctor_of = match self.find_by_hir_id(self.get_parent_node_by_hir_id(hir_id)) {
|
||||
let ctor_of = match self.find(self.get_parent_node(hir_id)) {
|
||||
Some(Node::Item(..)) => def::CtorOf::Struct,
|
||||
Some(Node::Variant(..)) => def::CtorOf::Variant,
|
||||
_ => unreachable!(),
|
||||
@@ -424,7 +424,7 @@ pub fn fn_decl_by_hir_id(&self, hir_id: HirId) -> Option<&'hir FnDecl> {
|
||||
/// which this is the body of, i.e., a `fn`, `const` or `static`
|
||||
/// item (possibly associated), a closure, or a `hir::AnonConst`.
|
||||
pub fn body_owner(&self, BodyId { hir_id }: BodyId) -> HirId {
|
||||
let parent = self.get_parent_node_by_hir_id(hir_id);
|
||||
let parent = self.get_parent_node(hir_id);
|
||||
assert!(self.lookup(parent).map_or(false, |e| e.is_body_owner(hir_id)));
|
||||
parent
|
||||
}
|
||||
@@ -485,7 +485,7 @@ pub fn ty_param_owner(&self, id: HirId) -> HirId {
|
||||
match self.get(id) {
|
||||
Node::Item(&Item { node: ItemKind::Trait(..), .. }) |
|
||||
Node::Item(&Item { node: ItemKind::TraitAlias(..), .. }) => id,
|
||||
Node::GenericParam(_) => self.get_parent_node_by_hir_id(id),
|
||||
Node::GenericParam(_) => self.get_parent_node(id),
|
||||
_ => bug!("ty_param_owner: {} not a type parameter", self.node_to_string(id))
|
||||
}
|
||||
}
|
||||
@@ -563,7 +563,7 @@ pub fn visit_item_likes_in_module<V>(&self, module: DefId, visitor: &mut V)
|
||||
/// Retrieves the `Node` corresponding to `id`, panicking if it cannot be found.
|
||||
pub fn get(&self, id: HirId) -> Node<'hir> {
|
||||
// read recorded by `find`
|
||||
self.find_by_hir_id(id).unwrap_or_else(||
|
||||
self.find(id).unwrap_or_else(||
|
||||
bug!("couldn't find hir id {} in the HIR map", id))
|
||||
}
|
||||
|
||||
@@ -595,13 +595,7 @@ pub fn get_generics(&self, id: DefId) -> Option<&'hir Generics> {
|
||||
}
|
||||
|
||||
/// 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>> {
|
||||
pub fn find(&self, hir_id: HirId) -> Option<Node<'hir>> {
|
||||
let result = self.find_entry(hir_id).and_then(|entry| {
|
||||
if let Node::Crate = entry.node {
|
||||
None
|
||||
@@ -615,24 +609,17 @@ pub fn find_by_hir_id(&self, hir_id: HirId) -> Option<Node<'hir>> {
|
||||
result
|
||||
}
|
||||
|
||||
/// Similar to `get_parent`; returns the parent node-ID, or just `hir_id` if there
|
||||
/// is no parent. Note that the parent may be `CRATE_NODE_ID`, which is not itself
|
||||
/// Similar to `get_parent`; returns the parent HIR Id, or just `hir_id` if there
|
||||
/// is no parent. Note that the parent may be `CRATE_HIR_ID`, which is not itself
|
||||
/// present in the map, so passing the return value of `get_parent_node` to
|
||||
/// `get` may in fact panic.
|
||||
/// This function returns the immediate parent in the AST, whereas `get_parent`
|
||||
/// This function returns the immediate parent in the HIR, whereas `get_parent`
|
||||
/// returns the enclosing item. Note that this might not be the actual parent
|
||||
/// node in the AST -- some kinds of nodes are not in the map and these will
|
||||
/// node in the HIR -- some kinds of nodes are not in the map and these will
|
||||
/// never appear as the parent node. Thus, you can always walk the parent nodes
|
||||
/// from a node to the root of the AST (unless you get back the same ID here,
|
||||
/// from a node to the root of the HIR (unless you get back the same ID here,
|
||||
/// which can happen if the ID is not in the map itself or is just weird).
|
||||
pub fn get_parent_node(&self, id: NodeId) -> NodeId {
|
||||
let hir_id = self.node_to_hir_id(id);
|
||||
let parent_hir_id = self.get_parent_node_by_hir_id(hir_id);
|
||||
self.hir_to_node_id(parent_hir_id)
|
||||
}
|
||||
|
||||
// FIXME(@ljedrz): replace the `NodeId` variant.
|
||||
pub fn get_parent_node_by_hir_id(&self, hir_id: HirId) -> HirId {
|
||||
pub fn get_parent_node(&self, hir_id: HirId) -> HirId {
|
||||
if self.dep_graph.is_fully_enabled() {
|
||||
let hir_id_owner = hir_id.owner;
|
||||
let def_path_hash = self.definitions.def_path_hash(hir_id_owner);
|
||||
@@ -646,7 +633,7 @@ pub fn get_parent_node_by_hir_id(&self, hir_id: HirId) -> HirId {
|
||||
|
||||
/// Check if the node is an argument. An argument is a local variable whose
|
||||
/// immediate parent is an item or a closure.
|
||||
pub fn is_argument(&self, id: NodeId) -> bool {
|
||||
pub fn is_argument(&self, id: HirId) -> bool {
|
||||
match self.find(id) {
|
||||
Some(Node::Binding(_)) => (),
|
||||
_ => return false,
|
||||
@@ -687,7 +674,7 @@ fn walk_parent_nodes<F, F2>(&self,
|
||||
{
|
||||
let mut id = start_id;
|
||||
loop {
|
||||
let parent_id = self.get_parent_node_by_hir_id(id);
|
||||
let parent_id = self.get_parent_node(id);
|
||||
if parent_id == CRATE_HIR_ID {
|
||||
return Ok(CRATE_HIR_ID);
|
||||
}
|
||||
@@ -872,28 +859,28 @@ pub fn get_foreign_abi(&self, hir_id: HirId) -> Abi {
|
||||
}
|
||||
|
||||
pub fn expect_item(&self, id: HirId) -> &'hir Item {
|
||||
match self.find_by_hir_id(id) { // read recorded by `find`
|
||||
match self.find(id) { // read recorded by `find`
|
||||
Some(Node::Item(item)) => item,
|
||||
_ => bug!("expected item, found {}", self.node_to_string(id))
|
||||
}
|
||||
}
|
||||
|
||||
pub fn expect_impl_item(&self, id: HirId) -> &'hir ImplItem {
|
||||
match self.find_by_hir_id(id) {
|
||||
match self.find(id) {
|
||||
Some(Node::ImplItem(item)) => item,
|
||||
_ => bug!("expected impl item, found {}", self.node_to_string(id))
|
||||
}
|
||||
}
|
||||
|
||||
pub fn expect_trait_item(&self, id: HirId) -> &'hir TraitItem {
|
||||
match self.find_by_hir_id(id) {
|
||||
match self.find(id) {
|
||||
Some(Node::TraitItem(item)) => item,
|
||||
_ => bug!("expected trait item, found {}", self.node_to_string(id))
|
||||
}
|
||||
}
|
||||
|
||||
pub fn expect_variant_data(&self, id: HirId) -> &'hir VariantData {
|
||||
match self.find_by_hir_id(id) {
|
||||
match self.find(id) {
|
||||
Some(Node::Item(i)) => {
|
||||
match i.node {
|
||||
ItemKind::Struct(ref struct_def, _) |
|
||||
@@ -908,21 +895,21 @@ pub fn expect_variant_data(&self, id: HirId) -> &'hir VariantData {
|
||||
}
|
||||
|
||||
pub fn expect_variant(&self, id: HirId) -> &'hir Variant {
|
||||
match self.find_by_hir_id(id) {
|
||||
match self.find(id) {
|
||||
Some(Node::Variant(variant)) => variant,
|
||||
_ => bug!("expected variant, found {}", self.node_to_string(id)),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn expect_foreign_item(&self, id: HirId) -> &'hir ForeignItem {
|
||||
match self.find_by_hir_id(id) {
|
||||
match self.find(id) {
|
||||
Some(Node::ForeignItem(item)) => item,
|
||||
_ => bug!("expected foreign item, found {}", self.node_to_string(id))
|
||||
}
|
||||
}
|
||||
|
||||
pub fn expect_expr(&self, id: HirId) -> &'hir Expr {
|
||||
match self.find_by_hir_id(id) { // read recorded by find
|
||||
match self.find(id) { // read recorded by find
|
||||
Some(Node::Expr(expr)) => expr,
|
||||
_ => bug!("expected expr, found {}", self.node_to_string(id))
|
||||
}
|
||||
@@ -1028,8 +1015,8 @@ pub fn span(&self, hir_id: HirId) -> Span {
|
||||
Some(Node::Pat(pat)) => pat.span,
|
||||
Some(Node::Arm(arm)) => arm.span,
|
||||
Some(Node::Block(block)) => block.span,
|
||||
Some(Node::Ctor(..)) => match self.find_by_hir_id(
|
||||
self.get_parent_node_by_hir_id(hir_id))
|
||||
Some(Node::Ctor(..)) => match self.find(
|
||||
self.get_parent_node(hir_id))
|
||||
{
|
||||
Some(Node::Item(item)) => item.span,
|
||||
Some(Node::Variant(variant)) => variant.span,
|
||||
@@ -1100,7 +1087,7 @@ fn suffix_matches(&self, parent: HirId) -> bool {
|
||||
// chain, then returns `None`.
|
||||
fn find_first_mod_parent<'a>(map: &'a Map<'_>, mut id: HirId) -> Option<(HirId, Name)> {
|
||||
loop {
|
||||
if let Node::Item(item) = map.find_by_hir_id(id)? {
|
||||
if let Node::Item(item) = map.find(id)? {
|
||||
if item_is_mod(&item) {
|
||||
return Some((id, item.ident.name))
|
||||
}
|
||||
@@ -1273,7 +1260,7 @@ fn hir_id_to_string(map: &Map<'_>, id: HirId, include_id: bool) -> String {
|
||||
})
|
||||
};
|
||||
|
||||
match map.find_by_hir_id(id) {
|
||||
match map.find(id) {
|
||||
Some(Node::Item(item)) => {
|
||||
let item_str = match item.node {
|
||||
ItemKind::ExternCrate(..) => "extern crate",
|
||||
|
||||
@@ -86,7 +86,7 @@ pub fn note_and_explain_region(
|
||||
)
|
||||
};
|
||||
let span = scope.span(self, region_scope_tree);
|
||||
let tag = match self.hir().find_by_hir_id(scope.hir_id(region_scope_tree)) {
|
||||
let tag = match self.hir().find(scope.hir_id(region_scope_tree)) {
|
||||
Some(Node::Block(_)) => "block",
|
||||
Some(Node::Expr(expr)) => match expr.node {
|
||||
hir::ExprKind::Call(..) => "call",
|
||||
@@ -182,7 +182,7 @@ fn msg_span_from_early_bound_and_free_regions(
|
||||
|
||||
let scope = region.free_region_binding_scope(self);
|
||||
let node = self.hir().as_local_hir_id(scope).unwrap_or(hir::DUMMY_HIR_ID);
|
||||
let tag = match self.hir().find_by_hir_id(node) {
|
||||
let tag = match self.hir().find(node) {
|
||||
Some(Node::Block(_)) | Some(Node::Expr(_)) => "body",
|
||||
Some(Node::Item(it)) => Self::item_scope_tag(&it),
|
||||
Some(Node::TraitItem(it)) => Self::trait_item_scope_tag(&it),
|
||||
|
||||
@@ -777,7 +777,7 @@ fn instantiate_opaque_types_in_map<T: TypeFoldable<'tcx>>(&mut self, value: &T)
|
||||
.local_def_id_from_hir_id(opaque_parent_hir_id)
|
||||
};
|
||||
let (in_definition_scope, origin) =
|
||||
match tcx.hir().find_by_hir_id(opaque_hir_id)
|
||||
match tcx.hir().find(opaque_hir_id)
|
||||
{
|
||||
Some(Node::Item(item)) => match item.node {
|
||||
// Anonymous `impl Trait`
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// function, then we should explore its block to check for codes that
|
||||
// may need to be marked as live.
|
||||
fn should_explore<'tcx>(tcx: TyCtxt<'tcx>, hir_id: hir::HirId) -> bool {
|
||||
match tcx.hir().find_by_hir_id(hir_id) {
|
||||
match tcx.hir().find(hir_id) {
|
||||
Some(Node::Item(..)) |
|
||||
Some(Node::ImplItem(..)) |
|
||||
Some(Node::ForeignItem(..)) |
|
||||
@@ -145,7 +145,7 @@ fn mark_live_symbols(&mut self) {
|
||||
// tuple struct constructor function
|
||||
let id = self.struct_constructors.get(&id).cloned().unwrap_or(id);
|
||||
|
||||
if let Some(node) = self.tcx.hir().find_by_hir_id(id) {
|
||||
if let Some(node) = self.tcx.hir().find(id) {
|
||||
self.live_symbols.insert(id);
|
||||
self.visit_node(node);
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
use std::io::prelude::*;
|
||||
use std::io;
|
||||
use std::rc::Rc;
|
||||
use syntax::ast::{self, NodeId};
|
||||
use syntax::ast;
|
||||
use syntax::ptr::P;
|
||||
use syntax::symbol::{kw, sym};
|
||||
use syntax_pos::Span;
|
||||
@@ -369,7 +369,7 @@ fn visit_fn<'tcx>(
|
||||
// Don't run unused pass for #[derive()]
|
||||
if let FnKind::Method(..) = fk {
|
||||
let parent = ir.tcx.hir().get_parent_item(id);
|
||||
if let Some(Node::Item(i)) = ir.tcx.hir().find_by_hir_id(parent) {
|
||||
if let Some(Node::Item(i)) = ir.tcx.hir().find(parent) {
|
||||
if i.attrs.iter().any(|a| a.check_name(sym::automatically_derived)) {
|
||||
return;
|
||||
}
|
||||
@@ -1327,12 +1327,11 @@ fn write_place(&mut self, expr: &Expr, succ: LiveNode, acc: u32) -> LiveNode {
|
||||
}
|
||||
}
|
||||
|
||||
fn access_var(&mut self, hir_id: HirId, nid: NodeId, succ: LiveNode, acc: u32, span: Span)
|
||||
fn access_var(&mut self, hir_id: HirId, var_hid: HirId, succ: LiveNode, acc: u32, span: Span)
|
||||
-> LiveNode {
|
||||
let ln = self.live_node(hir_id, span);
|
||||
if acc != 0 {
|
||||
self.init_from_succ(ln, succ);
|
||||
let var_hid = self.ir.tcx.hir().node_to_hir_id(nid);
|
||||
let var = self.variable(var_hid, span);
|
||||
self.acc(ln, var, acc);
|
||||
}
|
||||
@@ -1345,8 +1344,7 @@ fn access_path(&mut self, hir_id: HirId, path: &hir::Path, succ: LiveNode, acc:
|
||||
Res::Local(hid) => {
|
||||
let upvars = self.ir.tcx.upvars(self.ir.body_owner);
|
||||
if !upvars.map_or(false, |upvars| upvars.contains_key(&hid)) {
|
||||
let nid = self.ir.tcx.hir().hir_to_node_id(hid);
|
||||
self.access_var(hir_id, nid, succ, acc, path.span)
|
||||
self.access_var(hir_id, hid, succ, acc, path.span)
|
||||
} else {
|
||||
succ
|
||||
}
|
||||
|
||||
@@ -1526,7 +1526,7 @@ pub fn descriptive_string(&self, tcx: TyCtxt<'_>) -> Cow<'static, str> {
|
||||
"non-place".into()
|
||||
}
|
||||
Categorization::Local(vid) => {
|
||||
if tcx.hir().is_argument(tcx.hir().hir_to_node_id(vid)) {
|
||||
if tcx.hir().is_argument(vid) {
|
||||
"argument"
|
||||
} else {
|
||||
"local variable"
|
||||
|
||||
@@ -53,7 +53,7 @@ fn method_might_be_inlined<'tcx>(
|
||||
return true
|
||||
}
|
||||
if let Some(impl_hir_id) = tcx.hir().as_local_hir_id(impl_src) {
|
||||
match tcx.hir().find_by_hir_id(impl_hir_id) {
|
||||
match tcx.hir().find(impl_hir_id) {
|
||||
Some(Node::Item(item)) =>
|
||||
item_might_be_inlined(tcx, &item, codegen_fn_attrs),
|
||||
Some(..) | None =>
|
||||
@@ -147,7 +147,7 @@ fn def_id_represents_local_inlined_item(&self, def_id: DefId) -> bool {
|
||||
None => { return false; }
|
||||
};
|
||||
|
||||
match self.tcx.hir().find_by_hir_id(hir_id) {
|
||||
match self.tcx.hir().find(hir_id) {
|
||||
Some(Node::Item(item)) => {
|
||||
match item.node {
|
||||
hir::ItemKind::Fn(..) =>
|
||||
@@ -205,7 +205,7 @@ fn propagate(&mut self) {
|
||||
continue
|
||||
}
|
||||
|
||||
if let Some(ref item) = self.tcx.hir().find_by_hir_id(search_item) {
|
||||
if let Some(ref item) = self.tcx.hir().find(search_item) {
|
||||
self.propagate_node(item, search_item);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -662,7 +662,7 @@ fn visit_ty(&mut self, ty: &'tcx hir::Ty) {
|
||||
if let Some(Region::LateBound(_, def_id, _)) = def {
|
||||
if let Some(hir_id) = self.tcx.hir().as_local_hir_id(def_id) {
|
||||
// Ensure that the parent of the def is an item, not HRTB
|
||||
let parent_id = self.tcx.hir().get_parent_node_by_hir_id(hir_id);
|
||||
let parent_id = self.tcx.hir().get_parent_node(hir_id);
|
||||
let parent_impl_id = hir::ImplItemId { hir_id: parent_id };
|
||||
let parent_trait_id = hir::TraitItemId { hir_id: parent_id };
|
||||
let krate = self.tcx.hir().forest.krate();
|
||||
@@ -1489,7 +1489,7 @@ fn suggest_eliding_single_use_lifetime(
|
||||
}
|
||||
};
|
||||
if let Node::Lifetime(hir_lifetime) = self.tcx.hir().get(lifetime.hir_id) {
|
||||
if let Some(parent) = self.tcx.hir().find_by_hir_id(
|
||||
if let Some(parent) = self.tcx.hir().find(
|
||||
self.tcx.hir().get_parent_item(hir_lifetime.hir_id))
|
||||
{
|
||||
match parent {
|
||||
@@ -2051,7 +2051,7 @@ fn visit_fn_like_elision(&mut self, inputs: &'tcx [hir::Ty], output: Option<&'tc
|
||||
// and whether there's a `self` argument (treated specially).
|
||||
let mut assoc_item_kind = None;
|
||||
let mut impl_self = None;
|
||||
let parent = self.tcx.hir().get_parent_node_by_hir_id(output.hir_id);
|
||||
let parent = self.tcx.hir().get_parent_node(output.hir_id);
|
||||
let body = match self.tcx.hir().get(parent) {
|
||||
// `fn` definitions and methods.
|
||||
Node::Item(&hir::Item {
|
||||
|
||||
@@ -938,8 +938,8 @@ fn suggest_borrow_on_unsized_slice(
|
||||
err: &mut DiagnosticBuilder<'tcx>,
|
||||
) {
|
||||
if let &ObligationCauseCode::VariableType(hir_id) = code {
|
||||
let parent_node = self.tcx.hir().get_parent_node_by_hir_id(hir_id);
|
||||
if let Some(Node::Local(ref local)) = self.tcx.hir().find_by_hir_id(parent_node) {
|
||||
let parent_node = self.tcx.hir().get_parent_node(hir_id);
|
||||
if let Some(Node::Local(ref local)) = self.tcx.hir().find(parent_node) {
|
||||
if let Some(ref expr) = local.init {
|
||||
if let hir::ExprKind::Index(_, _) = expr.node {
|
||||
if let Ok(snippet) = self.tcx.sess.source_map().span_to_snippet(expr.span) {
|
||||
@@ -1013,8 +1013,8 @@ fn suggest_semicolon_removal(
|
||||
trait_ref: &ty::Binder<ty::TraitRef<'tcx>>,
|
||||
) {
|
||||
let hir = self.tcx.hir();
|
||||
let parent_node = hir.get_parent_node_by_hir_id(obligation.cause.body_id);
|
||||
let node = hir.find_by_hir_id(parent_node);
|
||||
let parent_node = hir.get_parent_node(obligation.cause.body_id);
|
||||
let node = hir.find(parent_node);
|
||||
if let Some(hir::Node::Item(hir::Item {
|
||||
node: hir::ItemKind::Fn(decl, _, _, body_id),
|
||||
..
|
||||
|
||||
@@ -1589,7 +1589,7 @@ pub fn is_suitable_region(&self, region: Region<'tcx>) -> Option<FreeRegionInfo>
|
||||
let hir_id = self.hir()
|
||||
.as_local_hir_id(suitable_region_binding_scope)
|
||||
.unwrap();
|
||||
let is_impl_item = match self.hir().find_by_hir_id(hir_id) {
|
||||
let is_impl_item = match self.hir().find(hir_id) {
|
||||
Some(Node::Item(..)) | Some(Node::TraitItem(..)) => false,
|
||||
Some(Node::ImplItem(..)) => {
|
||||
self.is_bound_region_in_impl_item(suitable_region_binding_scope)
|
||||
@@ -2880,7 +2880,7 @@ pub fn maybe_lint_level_root_bounded(
|
||||
if lint::maybe_lint_level_root(self, id) {
|
||||
return id;
|
||||
}
|
||||
let next = self.hir().get_parent_node_by_hir_id(id);
|
||||
let next = self.hir().get_parent_node(id);
|
||||
if next == id {
|
||||
bug!("lint traversal reached the root of the crate");
|
||||
}
|
||||
@@ -2898,7 +2898,7 @@ pub fn lint_level_at_node(
|
||||
if let Some(pair) = sets.level_and_source(lint, id, self.sess) {
|
||||
return pair
|
||||
}
|
||||
let next = self.hir().get_parent_node_by_hir_id(id);
|
||||
let next = self.hir().get_parent_node(id);
|
||||
if next == id {
|
||||
bug!("lint traversal reached the root of the crate");
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use std::mem;
|
||||
use smallvec::SmallVec;
|
||||
use syntax::ast::CRATE_NODE_ID;
|
||||
use rustc::hir::CRATE_HIR_ID;
|
||||
use crate::ty::context::TyCtxt;
|
||||
use crate::ty::{DefId, DefIdTree};
|
||||
|
||||
@@ -33,7 +33,7 @@ pub fn empty() -> DefIdForest {
|
||||
/// crate.
|
||||
#[inline]
|
||||
pub fn full(tcx: TyCtxt<'tcx>) -> DefIdForest {
|
||||
let crate_id = tcx.hir().local_def_id(CRATE_NODE_ID);
|
||||
let crate_id = tcx.hir().local_def_id_from_hir_id(CRATE_HIR_ID);
|
||||
DefIdForest::from_id(crate_id)
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ pub enum PatternSource<'tcx> {
|
||||
/// with a reference to the let
|
||||
fn get_pattern_source<'tcx>(tcx: TyCtxt<'tcx>, pat: &Pat) -> PatternSource<'tcx> {
|
||||
|
||||
let parent = tcx.hir().get_parent_node_by_hir_id(pat.hir_id);
|
||||
let parent = tcx.hir().get_parent_node(pat.hir_id);
|
||||
|
||||
match tcx.hir().get(parent) {
|
||||
Node::Expr(ref e) => {
|
||||
|
||||
@@ -1022,7 +1022,7 @@ fn report_bckerr(&self, err: &BckError<'a, 'tcx>) {
|
||||
|
||||
if let ty::ReScope(scope) = *super_scope {
|
||||
let hir_id = scope.hir_id(&self.region_scope_tree);
|
||||
match self.tcx.hir().find_by_hir_id(hir_id) {
|
||||
match self.tcx.hir().find(hir_id) {
|
||||
Some(Node::Stmt(_)) => {
|
||||
if *sub_scope != ty::ReStatic {
|
||||
db.note("consider using a `let` binding to increase its lifetime");
|
||||
@@ -1189,7 +1189,7 @@ fn local_binding_mode(&self, hir_id: hir::HirId) -> ty::BindingMode {
|
||||
}
|
||||
|
||||
fn local_ty(&self, hir_id: hir::HirId) -> (Option<&hir::Ty>, bool) {
|
||||
let parent = self.tcx.hir().get_parent_node_by_hir_id(hir_id);
|
||||
let parent = self.tcx.hir().get_parent_node(hir_id);
|
||||
let parent_node = self.tcx.hir().get(parent);
|
||||
|
||||
// The parent node is like a fn
|
||||
@@ -1287,7 +1287,7 @@ fn note_immutable_local(&self,
|
||||
},
|
||||
)) = ty.map(|t| &t.node)
|
||||
{
|
||||
let borrow_expr_id = self.tcx.hir().get_parent_node_by_hir_id(borrowed_hir_id);
|
||||
let borrow_expr_id = self.tcx.hir().get_parent_node(borrowed_hir_id);
|
||||
db.span_suggestion(
|
||||
self.tcx.hir().span(borrow_expr_id),
|
||||
"consider removing the `&mut`, as it is an \
|
||||
|
||||
@@ -253,10 +253,9 @@ trait HirPrinterSupport<'hir>: pprust_hir::PpAnn {
|
||||
fn pp_ann<'a>(&'a self) -> &'a dyn pprust_hir::PpAnn;
|
||||
|
||||
/// Computes an user-readable representation of a path, if possible.
|
||||
fn node_path(&self, id: ast::NodeId) -> Option<String> {
|
||||
fn node_path(&self, id: hir::HirId) -> Option<String> {
|
||||
self.hir_map().and_then(|map| {
|
||||
let hir_id = map.node_to_hir_id(id);
|
||||
map.def_path_from_hir_id(hir_id)
|
||||
map.def_path_from_hir_id(id)
|
||||
}).map(|path| {
|
||||
path.data
|
||||
.into_iter()
|
||||
@@ -471,8 +470,8 @@ fn pp_ann<'a>(&'a self) -> &'a dyn pprust_hir::PpAnn {
|
||||
self
|
||||
}
|
||||
|
||||
fn node_path(&self, id: ast::NodeId) -> Option<String> {
|
||||
Some(self.tcx.def_path_str(self.tcx.hir().local_def_id(id)))
|
||||
fn node_path(&self, id: hir::HirId) -> Option<String> {
|
||||
Some(self.tcx.def_path_str(self.tcx.hir().local_def_id_from_hir_id(id)))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -631,7 +630,7 @@ fn print_flowgraph<'tcx, W: Write>(
|
||||
if let Some(n) = hir::map::blocks::FnLikeNode::from_node(node) {
|
||||
break n.body();
|
||||
}
|
||||
let parent = tcx.hir().get_parent_node_by_hir_id(hir_id);
|
||||
let parent = tcx.hir().get_parent_node(hir_id);
|
||||
assert_ne!(hir_id, parent);
|
||||
hir_id = parent;
|
||||
}
|
||||
@@ -834,7 +833,7 @@ pub fn print_after_hir_lowering<'tcx>(
|
||||
let node = hir_map.get(hir_id);
|
||||
pp_state.print_node(node)?;
|
||||
pp_state.s.space()?;
|
||||
let path = annotation.node_path(node_id)
|
||||
let path = annotation.node_path(hir_id)
|
||||
.expect("-Z unpretty missing node paths");
|
||||
pp_state.synth_comment(path)?;
|
||||
pp_state.s.hardbreak()?;
|
||||
@@ -907,11 +906,11 @@ fn print_with_analysis<'tcx>(
|
||||
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(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);
|
||||
|
||||
@@ -405,7 +405,7 @@ fn check_item(&mut self, cx: &LateContext<'_, '_>, it: &hir::Item) {
|
||||
// reported for missing docs.
|
||||
let real_trait = trait_ref.path.res.def_id();
|
||||
if let Some(hir_id) = cx.tcx.hir().as_local_hir_id(real_trait) {
|
||||
match cx.tcx.hir().find_by_hir_id(hir_id) {
|
||||
match cx.tcx.hir().find(hir_id) {
|
||||
Some(Node::Item(item)) => {
|
||||
if let hir::VisibilityKind::Inherited = item.vis.node {
|
||||
for impl_item_ref in impl_item_refs {
|
||||
|
||||
@@ -275,7 +275,7 @@ fn lint_int_literal<'a, 'tcx>(
|
||||
return;
|
||||
}
|
||||
|
||||
let par_id = cx.tcx.hir().get_parent_node_by_hir_id(e.hir_id);
|
||||
let par_id = cx.tcx.hir().get_parent_node(e.hir_id);
|
||||
if let Node::Expr(par_e) = cx.tcx.hir().get(par_id) {
|
||||
if let hir::ExprKind::Struct(..) = par_e.node {
|
||||
if is_range_literal(cx.sess(), par_e)
|
||||
@@ -314,7 +314,7 @@ fn lint_uint_literal<'a, 'tcx>(
|
||||
_ => bug!(),
|
||||
};
|
||||
if lit_val < min || lit_val > max {
|
||||
let parent_id = cx.tcx.hir().get_parent_node_by_hir_id(e.hir_id);
|
||||
let parent_id = cx.tcx.hir().get_parent_node(e.hir_id);
|
||||
if let Node::Expr(par_e) = cx.tcx.hir().get(parent_id) {
|
||||
match par_e.node {
|
||||
hir::ExprKind::Cast(..) => {
|
||||
|
||||
@@ -304,7 +304,7 @@ pub(super) fn report_mutability_error(
|
||||
err.span_label(span, format!("cannot {ACT}", ACT = act));
|
||||
|
||||
let upvar_hir_id = self.upvars[upvar_index.index()].var_hir_id;
|
||||
if let Some(Node::Binding(pat)) = self.infcx.tcx.hir().find_by_hir_id(upvar_hir_id)
|
||||
if let Some(Node::Binding(pat)) = self.infcx.tcx.hir().find(upvar_hir_id)
|
||||
{
|
||||
if let hir::PatKind::Binding(
|
||||
hir::BindingAnnotation::Unannotated,
|
||||
@@ -633,7 +633,7 @@ fn annotate_struct_field(
|
||||
let field = def.all_fields().nth(field.index())?;
|
||||
// Use the HIR types to construct the diagnostic message.
|
||||
let hir_id = tcx.hir().as_local_hir_id(field.did)?;
|
||||
let node = tcx.hir().find_by_hir_id(hir_id)?;
|
||||
let node = tcx.hir().find(hir_id)?;
|
||||
// Now we're dealing with the actual struct that we're going to suggest a change to,
|
||||
// we can expect a field that is an immutable reference to a type.
|
||||
if let hir::Node::Field(field) = node {
|
||||
|
||||
@@ -552,7 +552,6 @@ fn construct_fn<'a, 'tcx, A>(
|
||||
.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,
|
||||
@@ -563,7 +562,7 @@ fn construct_fn<'a, 'tcx, A>(
|
||||
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(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) {
|
||||
|
||||
@@ -909,7 +909,7 @@ fn convert_path_expr<'a, 'tcx>(
|
||||
|
||||
Res::Def(DefKind::ConstParam, def_id) => {
|
||||
let hir_id = cx.tcx.hir().as_local_hir_id(def_id).unwrap();
|
||||
let item_id = cx.tcx.hir().get_parent_node_by_hir_id(hir_id);
|
||||
let item_id = cx.tcx.hir().get_parent_node(hir_id);
|
||||
let item_def_id = cx.tcx.hir().local_def_id_from_hir_id(item_id);
|
||||
let generics = cx.tcx.generics_of(item_def_id);
|
||||
let local_def_id = cx.tcx.hir().local_def_id_from_hir_id(hir_id);
|
||||
|
||||
@@ -570,14 +570,14 @@ fn is_enclosed(
|
||||
used_unsafe: &FxHashSet<hir::HirId>,
|
||||
id: hir::HirId,
|
||||
) -> Option<(String, hir::HirId)> {
|
||||
let parent_id = tcx.hir().get_parent_node_by_hir_id(id);
|
||||
let parent_id = tcx.hir().get_parent_node(id);
|
||||
if parent_id != id {
|
||||
if used_unsafe.contains(&parent_id) {
|
||||
Some(("block".to_string(), parent_id))
|
||||
} else if let Some(Node::Item(&hir::Item {
|
||||
node: hir::ItemKind::Fn(_, header, _, _),
|
||||
..
|
||||
})) = tcx.hir().find_by_hir_id(parent_id) {
|
||||
})) = tcx.hir().find(parent_id) {
|
||||
match header.unsafety {
|
||||
hir::Unsafety::Unsafe => Some(("fn".to_string(), parent_id)),
|
||||
hir::Unsafety::Normal => None,
|
||||
|
||||
@@ -107,7 +107,7 @@ fn visit_expr(&mut self, e: &'hir hir::Expr) {
|
||||
};
|
||||
|
||||
if loop_id != hir::DUMMY_HIR_ID {
|
||||
if let Node::Block(_) = self.hir_map.find_by_hir_id(loop_id).unwrap() {
|
||||
if let Node::Block(_) = self.hir_map.find(loop_id).unwrap() {
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -155,7 +155,7 @@ fn visit_expr(&mut self, e: &'hir hir::Expr) {
|
||||
|
||||
match destination.target_id {
|
||||
Ok(loop_id) => {
|
||||
if let Node::Block(block) = self.hir_map.find_by_hir_id(loop_id).unwrap() {
|
||||
if let Node::Block(block) = self.hir_map.find(loop_id).unwrap() {
|
||||
struct_span_err!(self.sess, e.span, E0696,
|
||||
"`continue` pointing to a labeled block")
|
||||
.span_label(e.span,
|
||||
|
||||
@@ -247,7 +247,7 @@ fn def_id_visibility<'tcx>(
|
||||
}
|
||||
}
|
||||
Node::Ctor(vdata) => {
|
||||
let parent_hir_id = tcx.hir().get_parent_node_by_hir_id(hir_id);
|
||||
let parent_hir_id = tcx.hir().get_parent_node(hir_id);
|
||||
match tcx.hir().get(parent_hir_id) {
|
||||
Node::Variant(..) => {
|
||||
let parent_did = tcx.hir().local_def_id_from_hir_id(parent_hir_id);
|
||||
@@ -784,7 +784,7 @@ fn visit_macro_def(&mut self, md: &'tcx hir::MacroDef) {
|
||||
if module_id == hir::CRATE_HIR_ID {
|
||||
break
|
||||
}
|
||||
module_id = self.tcx.hir().get_parent_node_by_hir_id(module_id);
|
||||
module_id = self.tcx.hir().get_parent_node(module_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1233,7 +1233,7 @@ fn path_is_private_type(&self, path: &hir::Path) -> bool {
|
||||
if let Some(hir_id) = self.tcx.hir().as_local_hir_id(did) {
|
||||
// .. and it corresponds to a private type in the AST (this returns
|
||||
// `None` for type parameters).
|
||||
match self.tcx.hir().find_by_hir_id(hir_id) {
|
||||
match self.tcx.hir().find(hir_id) {
|
||||
Some(Node::Item(ref item)) => !item.vis.node.is_pub(),
|
||||
Some(_) | None => false,
|
||||
}
|
||||
@@ -1674,7 +1674,7 @@ fn check(
|
||||
has_old_errors = true;
|
||||
break;
|
||||
}
|
||||
let parent = self.tcx.hir().get_parent_node_by_hir_id(id);
|
||||
let parent = self.tcx.hir().get_parent_node(id);
|
||||
if parent == id {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -410,7 +410,10 @@ pub fn get_method_data(&self, id: ast::NodeId, ident: ast::Ident, span: Span) ->
|
||||
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(hir_id)
|
||||
{
|
||||
docs = self.docs_for_attrs(&item.attrs);
|
||||
attrs = item.attrs.to_vec();
|
||||
}
|
||||
@@ -451,8 +454,9 @@ pub fn get_method_data(&self, id: ast::NodeId, ident: ast::Ident, span: Span) ->
|
||||
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(hir_id) {
|
||||
docs = self.docs_for_attrs(&item.attrs);
|
||||
attrs = item.attrs.to_vec();
|
||||
}
|
||||
@@ -521,7 +525,8 @@ pub fn get_expr_data(&self, expr: &ast::Expr) -> Option<Data> {
|
||||
}
|
||||
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(sub_ex_hir_id) {
|
||||
Some(Node::Expr(expr)) => expr,
|
||||
_ => {
|
||||
debug!(
|
||||
@@ -621,7 +626,10 @@ pub fn get_path_res(&self, id: NodeId) -> Res {
|
||||
Node::PathSegment(seg) => {
|
||||
match seg.res {
|
||||
Some(res) if res != Res::Err => res,
|
||||
_ => self.get_path_res(self.tcx.hir().get_parent_node(id)),
|
||||
_ => {
|
||||
let parent_node = self.tcx.hir().get_parent_node(hir_id);
|
||||
self.get_path_res(self.tcx.hir().hir_to_node_id(parent_node))
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2000,7 +2000,7 @@ pub fn res_to_ty(&self,
|
||||
self.prohibit_generics(&path.segments);
|
||||
|
||||
let hir_id = tcx.hir().as_local_hir_id(def_id).unwrap();
|
||||
let item_id = tcx.hir().get_parent_node_by_hir_id(hir_id);
|
||||
let item_id = tcx.hir().get_parent_node(hir_id);
|
||||
let item_def_id = tcx.hir().local_def_id_from_hir_id(item_id);
|
||||
let generics = tcx.generics_of(item_def_id);
|
||||
let index = generics.param_def_id_to_index[&def_id];
|
||||
@@ -2190,7 +2190,7 @@ pub fn ast_const_to_const(
|
||||
// Find the name and index of the const parameter by indexing the generics of the
|
||||
// parent item and construct a `ParamConst`.
|
||||
let hir_id = tcx.hir().as_local_hir_id(def_id).unwrap();
|
||||
let item_id = tcx.hir().get_parent_node_by_hir_id(hir_id);
|
||||
let item_id = tcx.hir().get_parent_node(hir_id);
|
||||
let item_def_id = tcx.hir().local_def_id_from_hir_id(item_id);
|
||||
let generics = tcx.generics_of(item_def_id);
|
||||
let index = generics.param_def_id_to_index[&tcx.hir().local_def_id_from_hir_id(hir_id)];
|
||||
|
||||
@@ -546,7 +546,7 @@ fn borrow_pat_suggestion(
|
||||
) {
|
||||
let tcx = self.tcx;
|
||||
if let PatKind::Binding(..) = inner.node {
|
||||
let parent_id = tcx.hir().get_parent_node_by_hir_id(pat.hir_id);
|
||||
let parent_id = tcx.hir().get_parent_node(pat.hir_id);
|
||||
let parent = tcx.hir().get(parent_id);
|
||||
debug!("inner {:?} pat {:?} parent {:?}", inner, pat, parent);
|
||||
match parent {
|
||||
@@ -808,16 +808,16 @@ fn maybe_get_coercion_reason(&self, hir_id: hir::HirId, span: Span) -> Option<(S
|
||||
use hir::Node::{Block, Item, Local};
|
||||
|
||||
let hir = self.tcx.hir();
|
||||
let arm_id = hir.get_parent_node_by_hir_id(hir_id);
|
||||
let match_id = hir.get_parent_node_by_hir_id(arm_id);
|
||||
let containing_id = hir.get_parent_node_by_hir_id(match_id);
|
||||
let arm_id = hir.get_parent_node(hir_id);
|
||||
let match_id = hir.get_parent_node(arm_id);
|
||||
let containing_id = hir.get_parent_node(match_id);
|
||||
|
||||
let node = hir.get(containing_id);
|
||||
if let Block(block) = node {
|
||||
// check that the body's parent is an fn
|
||||
let parent = hir.get(
|
||||
hir.get_parent_node_by_hir_id(
|
||||
hir.get_parent_node_by_hir_id(block.hir_id),
|
||||
hir.get_parent_node(
|
||||
hir.get_parent_node(block.hir_id),
|
||||
),
|
||||
);
|
||||
if let (Some(expr), Item(hir::Item {
|
||||
|
||||
@@ -244,7 +244,7 @@ fn identify_bad_closure_def_and_call(
|
||||
callee_node: &hir::ExprKind,
|
||||
callee_span: Span,
|
||||
) {
|
||||
let hir_id = self.tcx.hir().get_parent_node_by_hir_id(hir_id);
|
||||
let hir_id = self.tcx.hir().get_parent_node(hir_id);
|
||||
let parent_node = self.tcx.hir().get(hir_id);
|
||||
if let (
|
||||
hir::Node::Expr(hir::Expr { node: hir::ExprKind::Closure(_, _, _, sp, ..), .. }),
|
||||
|
||||
@@ -1231,7 +1231,7 @@ fn coerce_inner<'a>(
|
||||
db.span_label(cause.span, "return type is not `()`");
|
||||
}
|
||||
ObligationCauseCode::BlockTailExpression(blk_id) => {
|
||||
let parent_id = fcx.tcx.hir().get_parent_node_by_hir_id(blk_id);
|
||||
let parent_id = fcx.tcx.hir().get_parent_node(blk_id);
|
||||
db = self.report_return_mismatched_types(
|
||||
cause,
|
||||
expected,
|
||||
@@ -1281,7 +1281,7 @@ fn report_return_mismatched_types<'a>(
|
||||
// Verify that this is a tail expression of a function, otherwise the
|
||||
// label pointing out the cause for the type coercion will be wrong
|
||||
// as prior return coercions would not be relevant (#57664).
|
||||
let parent_id = fcx.tcx.hir().get_parent_node_by_hir_id(id);
|
||||
let parent_id = fcx.tcx.hir().get_parent_node(id);
|
||||
let fn_decl = if let Some((expr, blk_id)) = expression {
|
||||
pointing_at_return_type = fcx.suggest_mismatched_types_on_tail(
|
||||
&mut db,
|
||||
|
||||
@@ -236,17 +236,17 @@ fn can_use_as_ref(
|
||||
) -> Option<(Span, &'static str, String)> {
|
||||
if let hir::ExprKind::Path(hir::QPath::Resolved(_, ref path)) = expr.node {
|
||||
if let hir::def::Res::Local(id) = path.res {
|
||||
let parent = self.tcx.hir().get_parent_node_by_hir_id(id);
|
||||
let parent = self.tcx.hir().get_parent_node(id);
|
||||
if let Some(Node::Expr(hir::Expr {
|
||||
hir_id,
|
||||
node: hir::ExprKind::Closure(_, decl, ..),
|
||||
..
|
||||
})) = self.tcx.hir().find_by_hir_id(parent) {
|
||||
let parent = self.tcx.hir().get_parent_node_by_hir_id(*hir_id);
|
||||
})) = self.tcx.hir().find(parent) {
|
||||
let parent = self.tcx.hir().get_parent_node(*hir_id);
|
||||
if let (Some(Node::Expr(hir::Expr {
|
||||
node: hir::ExprKind::MethodCall(path, span, expr),
|
||||
..
|
||||
})), 1) = (self.tcx.hir().find_by_hir_id(parent), decl.inputs.len()) {
|
||||
})), 1) = (self.tcx.hir().find(parent), decl.inputs.len()) {
|
||||
let self_ty = self.tables.borrow().node_type(expr[0].hir_id);
|
||||
let self_ty = format!("{:?}", self_ty);
|
||||
let name = path.ident.as_str();
|
||||
@@ -276,8 +276,8 @@ fn can_use_as_ref(
|
||||
sp: Span,
|
||||
) -> bool {
|
||||
let cm = self.sess().source_map();
|
||||
let parent_id = self.tcx.hir().get_parent_node_by_hir_id(hir_id);
|
||||
if let Some(parent) = self.tcx.hir().find_by_hir_id(parent_id) {
|
||||
let parent_id = self.tcx.hir().get_parent_node(hir_id);
|
||||
if let Some(parent) = self.tcx.hir().find(parent_id) {
|
||||
// Account for fields
|
||||
if let Node::Expr(hir::Expr {
|
||||
node: hir::ExprKind::Struct(_, fields, ..), ..
|
||||
@@ -421,8 +421,8 @@ pub fn check_ref(
|
||||
if let Some(hir::Node::Expr(hir::Expr {
|
||||
node: hir::ExprKind::Assign(left_expr, _),
|
||||
..
|
||||
})) = self.tcx.hir().find_by_hir_id(
|
||||
self.tcx.hir().get_parent_node_by_hir_id(expr.hir_id),
|
||||
})) = self.tcx.hir().find(
|
||||
self.tcx.hir().get_parent_node(expr.hir_id),
|
||||
) {
|
||||
if mutability == hir::Mutability::MutMutable {
|
||||
// Found the following case:
|
||||
@@ -551,7 +551,7 @@ pub fn check_for_cast(
|
||||
if let Some(hir::Node::Expr(hir::Expr {
|
||||
node: hir::ExprKind::Struct(_, fields, _),
|
||||
..
|
||||
})) = self.tcx.hir().find_by_hir_id(self.tcx.hir().get_parent_node_by_hir_id(expr.hir_id)) {
|
||||
})) = self.tcx.hir().find(self.tcx.hir().get_parent_node(expr.hir_id)) {
|
||||
// `expr` is a literal field for a struct, only suggest if appropriate
|
||||
for field in fields {
|
||||
if field.expr.hir_id == expr.hir_id && field.is_shorthand {
|
||||
|
||||
@@ -269,7 +269,7 @@ pub fn report_method_error<'b>(
|
||||
let filename = tcx.sess.source_map().span_to_filename(span);
|
||||
|
||||
let parent_node = self.tcx.hir().get(
|
||||
self.tcx.hir().get_parent_node_by_hir_id(hir_id),
|
||||
self.tcx.hir().get_parent_node(hir_id),
|
||||
);
|
||||
let msg = format!(
|
||||
"you must specify a type for this binding, like `{}`",
|
||||
@@ -390,7 +390,7 @@ pub fn report_method_error<'b>(
|
||||
);
|
||||
} else {
|
||||
let call_expr = self.tcx.hir().expect_expr(
|
||||
self.tcx.hir().get_parent_node_by_hir_id(expr.hir_id),
|
||||
self.tcx.hir().get_parent_node(expr.hir_id),
|
||||
);
|
||||
|
||||
if let Some(span) = call_expr.span.trim_start(item_name.span) {
|
||||
|
||||
@@ -4259,7 +4259,7 @@ fn check_rustc_args_require_const(&self,
|
||||
// If our calling expression is indeed the function itself, we're good!
|
||||
// If not, generate an error that this can only be called directly.
|
||||
if let Node::Expr(expr) = self.tcx.hir().get(
|
||||
self.tcx.hir().get_parent_node_by_hir_id(hir_id))
|
||||
self.tcx.hir().get_parent_node(hir_id))
|
||||
{
|
||||
if let ExprKind::Call(ref callee, ..) = expr.node {
|
||||
if callee.hir_id == hir_id {
|
||||
@@ -4334,7 +4334,7 @@ fn expr_in_place(&self, mut expr_id: hir::HirId) -> bool {
|
||||
let mut contained_in_place = false;
|
||||
|
||||
while let hir::Node::Expr(parent_expr) =
|
||||
self.tcx.hir().get(self.tcx.hir().get_parent_node_by_hir_id(expr_id))
|
||||
self.tcx.hir().get(self.tcx.hir().get_parent_node(expr_id))
|
||||
{
|
||||
match &parent_expr.node {
|
||||
hir::ExprKind::Assign(lhs, ..) | hir::ExprKind::AssignOp(_, lhs, ..) => {
|
||||
|
||||
@@ -95,7 +95,7 @@ fn unused_crates_lint<'tcx>(tcx: TyCtxt<'tcx>) {
|
||||
// below it'll cause a panic because `def_id` is actually bogus at this
|
||||
// point in time otherwise.
|
||||
if let Some(id) = tcx.hir().as_local_hir_id(def_id) {
|
||||
if tcx.hir().find_by_hir_id(id).is_none() {
|
||||
if tcx.hir().find(id).is_none() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ fn visit_implementation_of_drop<'tcx>(tcx: TyCtxt<'tcx>, impl_did: DefId) {
|
||||
} else {
|
||||
// Destructors only work on nominal types.
|
||||
if let Some(impl_hir_id) = tcx.hir().as_local_hir_id(impl_did) {
|
||||
if let Some(Node::Item(item)) = tcx.hir().find_by_hir_id(impl_hir_id) {
|
||||
if let Some(Node::Item(item)) = tcx.hir().find(impl_hir_id) {
|
||||
let span = match item.node {
|
||||
ItemKind::Impl(.., ref ty, _) => ty.span,
|
||||
_ => item.span,
|
||||
|
||||
@@ -1298,7 +1298,7 @@ pub fn checked_type_of<'tcx>(tcx: TyCtxt<'tcx>, def_id: DefId, fail: bool) -> Op
|
||||
}
|
||||
|
||||
Node::AnonConst(_) => {
|
||||
let parent_node = tcx.hir().get(tcx.hir().get_parent_node_by_hir_id(hir_id));
|
||||
let parent_node = tcx.hir().get(tcx.hir().get_parent_node(hir_id));
|
||||
match parent_node {
|
||||
Node::Ty(&hir::Ty {
|
||||
node: hir::TyKind::Array(_, ref constant),
|
||||
|
||||
@@ -182,7 +182,7 @@ fn check_main_fn_ty<'tcx>(tcx: TyCtxt<'tcx>, main_def_id: DefId) {
|
||||
let main_t = tcx.type_of(main_def_id);
|
||||
match main_t.sty {
|
||||
ty::FnDef(..) => {
|
||||
if let Some(Node::Item(it)) = tcx.hir().find_by_hir_id(main_id) {
|
||||
if let Some(Node::Item(it)) = tcx.hir().find(main_id) {
|
||||
if let hir::ItemKind::Fn(.., ref generics, _) = it.node {
|
||||
let mut error = false;
|
||||
if !generics.params.is_empty() {
|
||||
@@ -247,7 +247,7 @@ fn check_start_fn_ty<'tcx>(tcx: TyCtxt<'tcx>, start_def_id: DefId) {
|
||||
let start_t = tcx.type_of(start_def_id);
|
||||
match start_t.sty {
|
||||
ty::FnDef(..) => {
|
||||
if let Some(Node::Item(it)) = tcx.hir().find_by_hir_id(start_id) {
|
||||
if let Some(Node::Item(it)) = tcx.hir().find(start_id) {
|
||||
if let hir::ItemKind::Fn(.., ref generics, _) = it.node {
|
||||
let mut error = false;
|
||||
if !generics.params.is_empty() {
|
||||
|
||||
Reference in New Issue
Block a user