1
Fork 0

Remove needless hir Map ref

This commit is contained in:
Cameron Steffen 2021-09-18 15:48:07 -05:00
parent 35c8f2612f
commit 7c8f4f7eab
4 changed files with 15 additions and 22 deletions

View file

@ -82,12 +82,12 @@ pub struct Map<'hir> {
/// An iterator that walks up the ancestor tree of a given `HirId`. /// An iterator that walks up the ancestor tree of a given `HirId`.
/// Constructed using `tcx.hir().parent_iter(hir_id)`. /// Constructed using `tcx.hir().parent_iter(hir_id)`.
pub struct ParentHirIterator<'map, 'hir> { pub struct ParentHirIterator<'hir> {
current_id: HirId, current_id: HirId,
map: &'map Map<'hir>, map: Map<'hir>,
} }
impl<'hir> Iterator for ParentHirIterator<'_, 'hir> { impl<'hir> Iterator for ParentHirIterator<'hir> {
type Item = (HirId, Node<'hir>); type Item = (HirId, Node<'hir>);
fn next(&mut self) -> Option<Self::Item> { fn next(&mut self) -> Option<Self::Item> {
@ -114,12 +114,12 @@ impl<'hir> Iterator for ParentHirIterator<'_, 'hir> {
/// An iterator that walks up the ancestor tree of a given `HirId`. /// An iterator that walks up the ancestor tree of a given `HirId`.
/// Constructed using `tcx.hir().parent_owner_iter(hir_id)`. /// Constructed using `tcx.hir().parent_owner_iter(hir_id)`.
pub struct ParentOwnerIterator<'map, 'hir> { pub struct ParentOwnerIterator<'hir> {
current_id: HirId, current_id: HirId,
map: &'map Map<'hir>, map: Map<'hir>,
} }
impl<'hir> Iterator for ParentOwnerIterator<'_, 'hir> { impl<'hir> Iterator for ParentOwnerIterator<'hir> {
type Item = (HirId, OwnerNode<'hir>); type Item = (HirId, OwnerNode<'hir>);
fn next(&mut self) -> Option<Self::Item> { fn next(&mut self) -> Option<Self::Item> {
@ -560,13 +560,13 @@ impl<'hir> Map<'hir> {
/// Returns an iterator for the nodes in the ancestor tree of the `current_id` /// Returns an iterator for the nodes in the ancestor tree of the `current_id`
/// until the crate root is reached. Prefer this over your own loop using `get_parent_node`. /// until the crate root is reached. Prefer this over your own loop using `get_parent_node`.
pub fn parent_iter(&self, current_id: HirId) -> ParentHirIterator<'_, 'hir> { pub fn parent_iter(self, current_id: HirId) -> ParentHirIterator<'hir> {
ParentHirIterator { current_id, map: self } ParentHirIterator { current_id, map: self }
} }
/// Returns an iterator for the nodes in the ancestor tree of the `current_id` /// Returns an iterator for the nodes in the ancestor tree of the `current_id`
/// until the crate root is reached. Prefer this over your own loop using `get_parent_node`. /// until the crate root is reached. Prefer this over your own loop using `get_parent_node`.
pub fn parent_owner_iter(&self, current_id: HirId) -> ParentOwnerIterator<'_, 'hir> { pub fn parent_owner_iter(self, current_id: HirId) -> ParentOwnerIterator<'hir> {
ParentOwnerIterator { current_id, map: self } ParentOwnerIterator { current_id, map: self }
} }

View file

@ -522,8 +522,7 @@ fn item_for(tcx: TyCtxt<'_>, local_def_id: LocalDefId) -> LocalDefId {
_ => {} _ => {}
} }
let item = { let item = {
let hir = tcx.hir(); let mut parent_iter = tcx.hir().parent_iter(hir_id);
let mut parent_iter = hir.parent_iter(hir_id);
loop { loop {
let node = parent_iter.next().map(|n| n.1); let node = parent_iter.next().map(|n| n.1);
match node { match node {

View file

@ -105,8 +105,7 @@ impl<'hir> IfLet<'hir> {
if_else, if_else,
) = expr.kind ) = expr.kind
{ {
let hir = cx.tcx.hir(); let mut iter = cx.tcx.hir().parent_iter(expr.hir_id);
let mut iter = hir.parent_iter(expr.hir_id);
if let Some((_, Node::Block(Block { stmts: [], .. }))) = iter.next() { if let Some((_, Node::Block(Block { stmts: [], .. }))) = iter.next() {
if let Some(( if let Some((
_, _,

View file

@ -833,12 +833,11 @@ pub fn capture_local_usage(cx: &LateContext<'tcx>, e: &Expr<'_>) -> CaptureKind
ExprKind::Path(QPath::Resolved(None, Path { res: Res::Local(_), .. })) ExprKind::Path(QPath::Resolved(None, Path { res: Res::Local(_), .. }))
)); ));
let map = cx.tcx.hir();
let mut child_id = e.hir_id; let mut child_id = e.hir_id;
let mut capture = CaptureKind::Value; let mut capture = CaptureKind::Value;
let mut capture_expr_ty = e; let mut capture_expr_ty = e;
for (parent_id, parent) in map.parent_iter(e.hir_id) { for (parent_id, parent) in cx.tcx.hir().parent_iter(e.hir_id) {
if let [Adjustment { if let [Adjustment {
kind: Adjust::Deref(_) | Adjust::Borrow(AutoBorrow::Ref(..)), kind: Adjust::Deref(_) | Adjust::Borrow(AutoBorrow::Ref(..)),
target, target,
@ -1224,8 +1223,7 @@ pub fn get_enclosing_block<'tcx>(cx: &LateContext<'tcx>, hir_id: HirId) -> Optio
/// Gets the loop or closure enclosing the given expression, if any. /// Gets the loop or closure enclosing the given expression, if any.
pub fn get_enclosing_loop_or_closure(tcx: TyCtxt<'tcx>, expr: &Expr<'_>) -> Option<&'tcx Expr<'tcx>> { pub fn get_enclosing_loop_or_closure(tcx: TyCtxt<'tcx>, expr: &Expr<'_>) -> Option<&'tcx Expr<'tcx>> {
let map = tcx.hir(); for (_, node) in tcx.hir().parent_iter(expr.hir_id) {
for (_, node) in map.parent_iter(expr.hir_id) {
match node { match node {
Node::Expr( Node::Expr(
e e
@ -1244,8 +1242,7 @@ pub fn get_enclosing_loop_or_closure(tcx: TyCtxt<'tcx>, expr: &Expr<'_>) -> Opti
/// Gets the parent node if it's an impl block. /// Gets the parent node if it's an impl block.
pub fn get_parent_as_impl(tcx: TyCtxt<'_>, id: HirId) -> Option<&Impl<'_>> { pub fn get_parent_as_impl(tcx: TyCtxt<'_>, id: HirId) -> Option<&Impl<'_>> {
let map = tcx.hir(); match tcx.hir().parent_iter(id).next() {
match map.parent_iter(id).next() {
Some(( Some((
_, _,
Node::Item(Item { Node::Item(Item {
@ -1259,8 +1256,7 @@ pub fn get_parent_as_impl(tcx: TyCtxt<'_>, id: HirId) -> Option<&Impl<'_>> {
/// Checks if the given expression is the else clause of either an `if` or `if let` expression. /// Checks if the given expression is the else clause of either an `if` or `if let` expression.
pub fn is_else_clause(tcx: TyCtxt<'_>, expr: &Expr<'_>) -> bool { pub fn is_else_clause(tcx: TyCtxt<'_>, expr: &Expr<'_>) -> bool {
let map = tcx.hir(); let mut iter = tcx.hir().parent_iter(expr.hir_id);
let mut iter = map.parent_iter(expr.hir_id);
match iter.next() { match iter.next() {
Some(( Some((
_, _,
@ -1794,9 +1790,8 @@ pub fn is_expr_identity_function(cx: &LateContext<'_>, expr: &Expr<'_>) -> bool
/// Gets the node where an expression is either used, or it's type is unified with another branch. /// Gets the node where an expression is either used, or it's type is unified with another branch.
pub fn get_expr_use_or_unification_node(tcx: TyCtxt<'tcx>, expr: &Expr<'_>) -> Option<Node<'tcx>> { pub fn get_expr_use_or_unification_node(tcx: TyCtxt<'tcx>, expr: &Expr<'_>) -> Option<Node<'tcx>> {
let map = tcx.hir();
let mut child_id = expr.hir_id; let mut child_id = expr.hir_id;
let mut iter = map.parent_iter(child_id); let mut iter = tcx.hir().parent_iter(child_id);
loop { loop {
match iter.next() { match iter.next() {
None => break None, None => break None,