diff --git a/compiler/rustc_hir_typeck/src/demand.rs b/compiler/rustc_hir_typeck/src/demand.rs index 6cf515cbb0adc..cf070eb962f09 100644 --- a/compiler/rustc_hir_typeck/src/demand.rs +++ b/compiler/rustc_hir_typeck/src/demand.rs @@ -226,12 +226,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { let [hir::PathSegment { ident, args: None, .. }] = p.segments else { return false; }; let hir::def::Res::Local(hir_id) = p.res else { return false; }; let Some(hir::Node::Pat(pat)) = map.find(hir_id) else { return false; }; - let parent = map.get_parent_node(pat.hir_id); let Some(hir::Node::Local(hir::Local { ty: None, init: Some(init), .. - })) = map.find(parent) else { return false; }; + })) = map.find_parent(pat.hir_id) else { return false; }; let Some(ty) = self.node_ty_opt(init.hir_id) else { return false; }; if ty.is_closure() || init.span.overlaps(expr.span) || pat.span.from_expansion() { return false; @@ -285,12 +284,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { // In every expression where the binding is referenced, we will look at that // expression's type and see if it is where the incorrect found type was fully // "materialized" and point at it. We will also try to provide a suggestion there. - let parent = map.get_parent_node(binding.hir_id); - if let Some(hir::Node::Expr(expr)) - | Some(hir::Node::Stmt(hir::Stmt { + if let Some(hir::Node::Expr(expr) + | hir::Node::Stmt(hir::Stmt { kind: hir::StmtKind::Expr(expr) | hir::StmtKind::Semi(expr), .. - })) = &map.find(parent) + })) = &map.find_parent(binding.hir_id) && let hir::ExprKind::MethodCall(segment, rcvr, args, _span) = expr.kind && rcvr.hir_id == binding.hir_id && let Some(def_id) = self.typeck_results.borrow().type_dependent_def_id(expr.hir_id) diff --git a/src/test/ui/type/type-check/point-at-inference-3.fixed b/src/test/ui/type/type-check/point-at-inference-3.fixed index 870f2779b8c48..1a960133ceba9 100644 --- a/src/test/ui/type/type-check/point-at-inference-3.fixed +++ b/src/test/ui/type/type-check/point-at-inference-3.fixed @@ -6,7 +6,7 @@ fn main() { v.push(0); v.push(1i32); //~ ERROR mismatched types //~^ NOTE expected `i32`, found `u32` - //~| NOTE arguments to this function are incorrect + //~| NOTE arguments to this method are incorrect //~| NOTE associated function defined here //~| HELP change the type of the numeric literal from `u32` to `i32` } diff --git a/src/test/ui/type/type-check/point-at-inference-3.rs b/src/test/ui/type/type-check/point-at-inference-3.rs index a4471e12fc2af..92910ae1a3114 100644 --- a/src/test/ui/type/type-check/point-at-inference-3.rs +++ b/src/test/ui/type/type-check/point-at-inference-3.rs @@ -6,7 +6,7 @@ fn main() { v.push(0); v.push(1u32); //~ ERROR mismatched types //~^ NOTE expected `i32`, found `u32` - //~| NOTE arguments to this function are incorrect + //~| NOTE arguments to this method are incorrect //~| NOTE associated function defined here //~| HELP change the type of the numeric literal from `u32` to `i32` } diff --git a/src/test/ui/type/type-check/point-at-inference-3.stderr b/src/test/ui/type/type-check/point-at-inference-3.stderr index c373c6722fdd7..999c3148362f6 100644 --- a/src/test/ui/type/type-check/point-at-inference-3.stderr +++ b/src/test/ui/type/type-check/point-at-inference-3.stderr @@ -7,7 +7,7 @@ LL | v.push(0i32); LL | v.push(1u32); | ---- ^^^^ expected `i32`, found `u32` | | - | arguments to this function are incorrect + | arguments to this method are incorrect | note: associated function defined here --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL