Make sure the call span parens check only fires on the callee, not args

This commit is contained in:
Michael Howell 2021-09-10 18:48:25 -07:00
parent e5c2412e52
commit d98892b67f

View File

@ -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(")") {