Fallout from removing TupField

This commit is contained in:
Nick Cameron 2018-04-14 10:15:39 +12:00
parent aa7fc4cdc5
commit 01c1f99e39
3 changed files with 15 additions and 10 deletions

View File

@ -393,7 +393,6 @@ fn pop_expr_chain(expr: &ast::Expr, context: &RewriteContext) -> Option<ast::Exp
ast::ExprKind::MethodCall(_, ref expressions) => {
Some(convert_try(&expressions[0], context))
}
ast::ExprKind::TupField(ref subexpr, _)
| ast::ExprKind::Field(ref subexpr, _)
| ast::ExprKind::Try(ref subexpr) => Some(convert_try(subexpr, context)),
_ => None,
@ -440,19 +439,28 @@ fn rewrite_chain_subexpr(
};
rewrite_method_call(segment.ident, types, expressions, span, context, shape)
}
ast::ExprKind::Field(_, ref field) => rewrite_element(format!(".{}", field.name)),
ast::ExprKind::TupField(ref expr, ref field) => {
let space = match expr.node {
ast::ExprKind::TupField(..) => " ",
_ => "",
ast::ExprKind::Field(ref nested, ref field) => {
let space = if is_tup_field_access(expr) && is_tup_field_access(nested) {
" "
} else {
""
};
rewrite_element(format!("{}.{}", space, field.node))
rewrite_element(format!("{}.{}", space, field.name))
}
ast::ExprKind::Try(_) => rewrite_element(String::from("?")),
_ => unreachable!(),
}
}
fn is_tup_field_access(expr: &ast::Expr) -> bool {
match expr.node {
ast::ExprKind::Field(_, ref field) => {
field.name.to_string().chars().all(|c| c.is_digit(10))
}
_ => false,
}
}
// Determines if we can continue formatting a given expression on the same line.
fn is_continuable(expr: &ast::Expr) -> bool {
match expr.node {

View File

@ -178,7 +178,6 @@ pub fn format_expr(
}
ast::ExprKind::Try(..)
| ast::ExprKind::Field(..)
| ast::ExprKind::TupField(..)
| ast::ExprKind::MethodCall(..) => rewrite_chain(expr, context, shape),
ast::ExprKind::Mac(ref mac) => {
rewrite_macro(mac, None, context, shape, MacroPosition::Expression).or_else(|| {
@ -1349,7 +1348,6 @@ fn is_simple_expr(expr: &ast::Expr) -> bool {
| ast::ExprKind::Cast(ref expr, _)
| ast::ExprKind::Field(ref expr, _)
| ast::ExprKind::Try(ref expr)
| ast::ExprKind::TupField(ref expr, _)
| ast::ExprKind::Unary(_, ref expr) => is_simple_expr(expr),
ast::ExprKind::Index(ref lhs, ref rhs) | ast::ExprKind::Repeat(ref lhs, ref rhs) => {
is_simple_expr(lhs) && is_simple_expr(rhs)

View File

@ -365,7 +365,6 @@ pub fn left_most_sub_expr(e: &ast::Expr) -> &ast::Expr {
| ast::ExprKind::Assign(ref e, _)
| ast::ExprKind::AssignOp(_, ref e, _)
| ast::ExprKind::Field(ref e, _)
| ast::ExprKind::TupField(ref e, _)
| ast::ExprKind::Index(ref e, _)
| ast::ExprKind::Range(Some(ref e), _, _)
| ast::ExprKind::Try(ref e) => left_most_sub_expr(e),