From 3d7d978fe86eb2b9a1528879613b41ca6b431884 Mon Sep 17 00:00:00 2001 From: topecongiro Date: Mon, 27 Nov 2017 20:53:54 +0900 Subject: [PATCH 1/5] Add a test for #2193 --- tests/source/enum.rs | 8 ++++++++ tests/target/enum.rs | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/tests/source/enum.rs b/tests/source/enum.rs index 894eb8cbaecf..f228e5ef6467 100644 --- a/tests/source/enum.rs +++ b/tests/source/enum.rs @@ -172,3 +172,11 @@ enum AnError { #[fail(display = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")] UnexpectedSingleToken { token: syn::Token }, } + +// #2193 +enum WidthOf101 { + #[fail(display = ".....................................................")] Io(::std::io::Error), + #[fail(display = ".....................................................")] Ioo(::std::io::Error), + Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(::std::io::Error), + Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(::std::io::Error), +} diff --git a/tests/target/enum.rs b/tests/target/enum.rs index b60f5bcf1d6b..78b0fd1b69d0 100644 --- a/tests/target/enum.rs +++ b/tests/target/enum.rs @@ -222,3 +222,14 @@ enum AnError { #[fail(display = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")] UnexpectedSingleToken { token: syn::Token }, } + +// #2193 +enum WidthOf101 { + #[fail(display = ".....................................................")] Io(::std::io::Error), + #[fail(display = ".....................................................")] + Ioo(::std::io::Error), + Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(::std::io::Error), + Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx( + ::std::io::Error, + ), +} From 261d325e15ed04a052fdf71df717774817aee597 Mon Sep 17 00:00:00 2001 From: topecongiro Date: Mon, 27 Nov 2017 20:54:55 +0900 Subject: [PATCH 2/5] Remove width of a trailing comma on variant --- src/items.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/items.rs b/src/items.rs index 41c1b7981ada..24c7625df506 100644 --- a/src/items.rs +++ b/src/items.rs @@ -534,7 +534,8 @@ impl<'a> FmtVisitor<'a> { let context = self.get_context(); let indent = self.block_indent; - let shape = self.shape(); + // 1 = ',' + let shape = self.shape().sub_width(1)?; let attrs_str = field.node.attrs.rewrite(&context, shape)?; let lo = field .node @@ -555,8 +556,7 @@ impl<'a> FmtVisitor<'a> { } ast::VariantData::Unit(..) => if let Some(ref expr) = field.node.disr_expr { let lhs = format!("{} =", field.node.name); - // 1 = ',' - rewrite_assign_rhs(&context, lhs, &**expr, shape.sub_width(1)?)? + rewrite_assign_rhs(&context, lhs, &**expr, shape)? } else { field.node.name.to_string() }, @@ -1312,7 +1312,7 @@ fn format_tuple_struct( } result.push(')'); } else { - let shape = Shape::indented(offset, context.config); + let shape = Shape::indented(offset, context.config).sub_width(1)?; let fields = &fields.iter().map(|field| field).collect::>()[..]; let one_line_width = context.config.width_heuristics().fn_call_width; result = rewrite_call_inner(context, &result, fields, span, shape, one_line_width, false)?; From 5c81741733299f98dabd4e4dd2285116ac0ee672 Mon Sep 17 00:00:00 2001 From: topecongiro Date: Mon, 27 Nov 2017 20:57:06 +0900 Subject: [PATCH 3/5] Minor refactoring --- src/items.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/items.rs b/src/items.rs index 24c7625df506..80aa0552ed6f 100644 --- a/src/items.rs +++ b/src/items.rs @@ -533,7 +533,6 @@ impl<'a> FmtVisitor<'a> { } let context = self.get_context(); - let indent = self.block_indent; // 1 = ',' let shape = self.shape().sub_width(1)?; let attrs_str = field.node.attrs.rewrite(&context, shape)?; @@ -550,7 +549,7 @@ impl<'a> FmtVisitor<'a> { format_struct( &context, &StructParts::from_variant(field), - indent, + self.block_indent, Some(one_line_width), )? } From dff2ebba05d88fa85080966213e624f1440f6fb2 Mon Sep 17 00:00:00 2001 From: topecongiro Date: Mon, 27 Nov 2017 20:58:39 +0900 Subject: [PATCH 4/5] Remove FIXME now is the time --- src/items.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/items.rs b/src/items.rs index 80aa0552ed6f..4fb4f37d0711 100644 --- a/src/items.rs +++ b/src/items.rs @@ -545,7 +545,6 @@ impl<'a> FmtVisitor<'a> { let variant_body = match field.node.data { ast::VariantData::Tuple(..) | ast::VariantData::Struct(..) => { - // FIXME: Should limit the width, as we have a trailing comma format_struct( &context, &StructParts::from_variant(field), From 940758b1bdb9423085c5f761acc724e453d9e826 Mon Sep 17 00:00:00 2001 From: topecongiro Date: Mon, 27 Nov 2017 21:00:27 +0900 Subject: [PATCH 5/5] Cargo fmt --- src/items.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/items.rs b/src/items.rs index 4fb4f37d0711..da110eef9340 100644 --- a/src/items.rs +++ b/src/items.rs @@ -544,14 +544,12 @@ impl<'a> FmtVisitor<'a> { let span = mk_sp(lo, field.span.lo()); let variant_body = match field.node.data { - ast::VariantData::Tuple(..) | ast::VariantData::Struct(..) => { - format_struct( - &context, - &StructParts::from_variant(field), - self.block_indent, - Some(one_line_width), - )? - } + ast::VariantData::Tuple(..) | ast::VariantData::Struct(..) => format_struct( + &context, + &StructParts::from_variant(field), + self.block_indent, + Some(one_line_width), + )?, ast::VariantData::Unit(..) => if let Some(ref expr) = field.node.disr_expr { let lhs = format!("{} =", field.node.name); rewrite_assign_rhs(&context, lhs, &**expr, shape)?