From b93b64381f4431e80f3752fe74714a5c4399d514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Cassiers?= Date: Wed, 15 Jul 2015 00:38:54 +0200 Subject: [PATCH] Fix bug in rewrite_tup_lit Wasn't using all width available when the lenght is more than 1. --- src/expr.rs | 17 ++++++++--------- tests/target/tuple.rs | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/expr.rs b/src/expr.rs index da706c4afa7..5dde0419c14 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -239,7 +239,13 @@ fn rewrite_tuple_lit(context: &RewriteContext, width: usize, offset: usize) -> Option { + debug!("rewrite_tuple_lit: width: {}, offset: {}", width, offset); let indent = offset + 1; + // In case of length 1, need a trailing comma + if items.len() == 1 { + // 3 = "(" + ",)" + return items[0].rewrite(context, width - 3, indent).map(|s| format!("({},)", s)); + } let items = itemize_list(context.codemap, Vec::new(), @@ -249,23 +255,16 @@ fn rewrite_tuple_lit(context: &RewriteContext, |item| item.span.lo, |item| item.span.hi, |item| item.rewrite(context, - context.config.max_width - indent - 2, + context.config.max_width - indent - 1, indent) .unwrap_or(context.codemap.span_to_snippet(item.span) .unwrap()), span.lo + BytePos(1), // Remove parens span.hi - BytePos(1)); - // In case of length 1, need a trailing comma - let trailing_separator_tactic = if items.len() == 1 { - SeparatorTactic::Always - } else { - SeparatorTactic::Never - }; - let fmt = ListFormatting { tactic: ListTactic::HorizontalVertical, separator: ",", - trailing_separator: trailing_separator_tactic, + trailing_separator: SeparatorTactic::Never, indent: indent, h_width: width - 2, v_width: width - 2, diff --git a/tests/target/tuple.rs b/tests/target/tuple.rs index 2d126cacf96..a77fae11cb4 100644 --- a/tests/target/tuple.rs +++ b/tests/target/tuple.rs @@ -13,3 +13,17 @@ fn foo() { b, // Comment b /* Trailing comment */); } + +fn a() { + ((aaaaaaaa, + aaaaaaaaaaaaa, + aaaaaaaaaaaaaaaaa, + aaaaaaaaaaaaaa, + aaaaaaaaaaaaaaaa, + aaaaaaaaaaaaaa),) +} + +fn b() { + ((bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb), + bbbbbbbbbbbbbbbbbb) +}