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

View File

@ -178,7 +178,6 @@ pub fn format_expr(
} }
ast::ExprKind::Try(..) ast::ExprKind::Try(..)
| ast::ExprKind::Field(..) | ast::ExprKind::Field(..)
| ast::ExprKind::TupField(..)
| ast::ExprKind::MethodCall(..) => rewrite_chain(expr, context, shape), | ast::ExprKind::MethodCall(..) => rewrite_chain(expr, context, shape),
ast::ExprKind::Mac(ref mac) => { ast::ExprKind::Mac(ref mac) => {
rewrite_macro(mac, None, context, shape, MacroPosition::Expression).or_else(|| { 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::Cast(ref expr, _)
| ast::ExprKind::Field(ref expr, _) | ast::ExprKind::Field(ref expr, _)
| ast::ExprKind::Try(ref expr) | ast::ExprKind::Try(ref expr)
| ast::ExprKind::TupField(ref expr, _)
| ast::ExprKind::Unary(_, ref expr) => is_simple_expr(expr), | ast::ExprKind::Unary(_, ref expr) => is_simple_expr(expr),
ast::ExprKind::Index(ref lhs, ref rhs) | ast::ExprKind::Repeat(ref lhs, ref rhs) => { ast::ExprKind::Index(ref lhs, ref rhs) | ast::ExprKind::Repeat(ref lhs, ref rhs) => {
is_simple_expr(lhs) && is_simple_expr(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::Assign(ref e, _)
| ast::ExprKind::AssignOp(_, ref e, _) | ast::ExprKind::AssignOp(_, ref e, _)
| ast::ExprKind::Field(ref e, _) | ast::ExprKind::Field(ref e, _)
| ast::ExprKind::TupField(ref e, _)
| ast::ExprKind::Index(ref e, _) | ast::ExprKind::Index(ref e, _)
| ast::ExprKind::Range(Some(ref e), _, _) | ast::ExprKind::Range(Some(ref e), _, _)
| ast::ExprKind::Try(ref e) => left_most_sub_expr(e), | ast::ExprKind::Try(ref e) => left_most_sub_expr(e),