From d98892b67f9b1f04c8c3c90cd99cd24738fd30ba Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Fri, 10 Sep 2021 18:48:25 -0700 Subject: [PATCH] Make sure the call span parens check only fires on the callee, not args --- compiler/rustc_typeck/src/check/expr.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/compiler/rustc_typeck/src/check/expr.rs b/compiler/rustc_typeck/src/check/expr.rs index 85136593440..61d5b6985f1 100644 --- a/compiler/rustc_typeck/src/check/expr.rs +++ b/compiler/rustc_typeck/src/check/expr.rs @@ -1842,13 +1842,14 @@ fn ban_take_value_of_method(&self, expr: &hir::Expr<'_>, expr_t: Ty<'tcx>, field expr_t ); err.span_label(field.span, "method, not a field"); - let expr_is_call = if let hir::Node::Expr(parent_expr) = - self.tcx.hir().get(self.tcx.hir().get_parent_node(expr.hir_id)) - { - matches!(parent_expr.kind, ExprKind::Call(..)) - } else { - false - }; + let expr_is_call = + if let hir::Node::Expr(hir::Expr { kind: ExprKind::Call(callee, _args), .. }) = + self.tcx.hir().get(self.tcx.hir().get_parent_node(expr.hir_id)) + { + expr.hir_id == callee.hir_id + } else { + false + }; let expr_snippet = self.tcx.sess.source_map().span_to_snippet(expr.span).unwrap_or(String::new()); if expr_is_call && expr_snippet.starts_with("(") && expr_snippet.ends_with(")") {