From fbcc886338e581d156c76249b14d01f0117499cc Mon Sep 17 00:00:00 2001 From: topecongiro Date: Wed, 23 May 2018 07:22:42 +0900 Subject: [PATCH] Disallow combining a method call with prefix or suffix --- src/expr.rs | 12 ++++++++++++ src/overflow.rs | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/expr.rs b/src/expr.rs index ea3ac5f58f28..ca2d78b03c4a 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -2172,3 +2172,15 @@ impl ToExpr for ast::GenericParam { false } } + +pub fn is_method_call(expr: &ast::Expr) -> bool { + match expr.node { + ast::ExprKind::MethodCall(..) => true, + ast::ExprKind::AddrOf(_, ref expr) + | ast::ExprKind::Box(ref expr) + | ast::ExprKind::Cast(ref expr, _) + | ast::ExprKind::Try(ref expr) + | ast::ExprKind::Unary(_, ref expr) => is_method_call(expr), + _ => false, + } +} diff --git a/src/overflow.rs b/src/overflow.rs index d555086cda7e..f2f05d835ff0 100644 --- a/src/overflow.rs +++ b/src/overflow.rs @@ -18,7 +18,7 @@ use syntax::parse::token::DelimToken; use closures; use codemap::SpanUtils; -use expr::{is_every_expr_simple, is_nested_call, maybe_get_args_offset, ToExpr}; +use expr::{is_every_expr_simple, is_method_call, is_nested_call, maybe_get_args_offset, ToExpr}; use lists::{definitive_tactic, itemize_list, write_list, ListFormatting, ListItem, Separator}; use rewrite::{Rewrite, RewriteContext}; use shape::Shape; @@ -231,8 +231,8 @@ impl<'a, T: 'a + Rewrite + ToExpr + Spanned> Context<'a, T> { let placeholder = if overflow_last { let old_value = *self.context.force_one_line_chain.borrow(); if !combine_arg_with_callee { - if let Some(expr) = self.last_item().and_then(|item| item.to_expr()) { - if let ast::ExprKind::MethodCall(..) = expr.node { + if let Some(ref expr) = self.last_item().and_then(|item| item.to_expr()) { + if is_method_call(expr) { self.context.force_one_line_chain.replace(true); } }