From 4aa64674c91880eebd047d520d755e9d849b2485 Mon Sep 17 00:00:00 2001 From: topecongiro Date: Sat, 13 May 2017 06:44:57 +0900 Subject: [PATCH] Add a missing trailing comma before elipses --- src/patterns.rs | 10 ++++++++-- tests/source/configs-trailing_comma-never.rs | 6 ++++++ tests/target/configs-trailing_comma-never.rs | 10 ++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/patterns.rs b/src/patterns.rs index a50fee040d6..8edfc1deea0 100644 --- a/src/patterns.rs +++ b/src/patterns.rs @@ -13,8 +13,9 @@ use codemap::SpanUtils; use config::{IndentStyle, MultilineStyle}; use rewrite::{Rewrite, RewriteContext}; use utils::{wrap_str, format_mutability}; -use lists::{DefinitiveListTactic, format_item_list, itemize_list, ListItem, struct_lit_shape, - struct_lit_tactic, shape_for_tactic, struct_lit_formatting, write_list}; +use lists::{DefinitiveListTactic, SeparatorTactic, format_item_list, itemize_list, ListItem, + struct_lit_shape, struct_lit_tactic, shape_for_tactic, struct_lit_formatting, + write_list}; use expr::{rewrite_unary_prefix, rewrite_pair}; use types::{rewrite_path, PathContext}; use super::Spanned; @@ -134,6 +135,7 @@ fn rewrite_struct_pat(path: &ast::Path, context: &RewriteContext, shape: Shape) -> Option { + // 2 = ` {` let path_shape = try_opt!(shape.sub_width(2)); let path_str = try_opt!(rewrite_path(context, PathContext::Expr, None, path, path_shape)); @@ -165,6 +167,10 @@ fn rewrite_struct_pat(path: &ast::Path, if elipses { if fields_str.contains('\n') { + // Add a missing trailing comma. + if fmt.trailing_separator == SeparatorTactic::Never { + fields_str.push_str(","); + } fields_str.push_str("\n"); fields_str.push_str(&nested_shape.indent.to_string(context.config)); fields_str.push_str(".."); diff --git a/tests/source/configs-trailing_comma-never.rs b/tests/source/configs-trailing_comma-never.rs index 5d4dbef385a..0577f2e5aff 100644 --- a/tests/source/configs-trailing_comma-never.rs +++ b/tests/source/configs-trailing_comma-never.rs @@ -4,4 +4,10 @@ fn main() { let Lorem { ipsum, dolor, sit, } = amet; let Lorem { ipsum, dolor, sit, amet, consectetur, adipiscing } = elit; + + // #1544 + if let VrMsg::ClientReply {request_num: reply_req_num, value, ..} = msg { + let _ = safe_assert_eq!(reply_req_num, request_num, op); + return Ok((request_num, op, value)); + } } diff --git a/tests/target/configs-trailing_comma-never.rs b/tests/target/configs-trailing_comma-never.rs index ca2da9136c7..949069cede8 100644 --- a/tests/target/configs-trailing_comma-never.rs +++ b/tests/target/configs-trailing_comma-never.rs @@ -11,4 +11,14 @@ fn main() { consectetur, adipiscing } = elit; + + // #1544 + if let VrMsg::ClientReply { + request_num: reply_req_num, + value, + .. + } = msg { + let _ = safe_assert_eq!(reply_req_num, request_num, op); + return Ok((request_num, op, value)); + } }