diff --git a/src/chains.rs b/src/chains.rs index 665fb5ac073..9e85b22da02 100644 --- a/src/chains.rs +++ b/src/chains.rs @@ -194,8 +194,22 @@ fn rewrite_chain_expr(expr: &ast::Expr, width, offset) } - ast::Expr_::ExprField(_, ref field) => Some(format!(".{}", field.node)), - ast::Expr_::ExprTupField(_, ref field) => Some(format!(".{}", field.node)), + ast::Expr_::ExprField(_, ref field) => { + let s = format!(".{}", field.node); + if s.len() <= width { + Some(s) + } else { + None + } + } + ast::Expr_::ExprTupField(_, ref field) => { + let s = format!(".{}", field.node); + if s.len() <= width { + Some(s) + } else { + None + } + } _ => unreachable!(), } } diff --git a/tests/source/long_field_access.rs b/tests/source/long_field_access.rs new file mode 100644 index 00000000000..7aa626221ae --- /dev/null +++ b/tests/source/long_field_access.rs @@ -0,0 +1,3 @@ +fn f() { + block_flow.base.stacking_relative_position_of_display_port = self.base.stacking_relative_position_of_display_port; +} diff --git a/tests/target/long_field_access.rs b/tests/target/long_field_access.rs new file mode 100644 index 00000000000..349d2c2f639 --- /dev/null +++ b/tests/target/long_field_access.rs @@ -0,0 +1,4 @@ +fn f() { + block_flow.base.stacking_relative_position_of_display_port = + self.base.stacking_relative_position_of_display_port; +}