Skip to content

Commit 458eade

Browse files
authored
Merge pull request #2195 from topecongiro/issue-2193
Take into account a trailing comma on variant
2 parents fcb4878 + 940758b commit 458eade

File tree

3 files changed

+29
-14
lines changed

3 files changed

+29
-14
lines changed

src/items.rs

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -533,8 +533,8 @@ impl<'a> FmtVisitor<'a> {
533533
}
534534

535535
let context = self.get_context();
536-
let indent = self.block_indent;
537-
let shape = self.shape();
536+
// 1 = ','
537+
let shape = self.shape().sub_width(1)?;
538538
let attrs_str = field.node.attrs.rewrite(&context, shape)?;
539539
let lo = field
540540
.node
@@ -544,19 +544,15 @@ impl<'a> FmtVisitor<'a> {
544544
let span = mk_sp(lo, field.span.lo());
545545

546546
let variant_body = match field.node.data {
547-
ast::VariantData::Tuple(..) | ast::VariantData::Struct(..) => {
548-
// FIXME: Should limit the width, as we have a trailing comma
549-
format_struct(
550-
&context,
551-
&StructParts::from_variant(field),
552-
indent,
553-
Some(one_line_width),
554-
)?
555-
}
547+
ast::VariantData::Tuple(..) | ast::VariantData::Struct(..) => format_struct(
548+
&context,
549+
&StructParts::from_variant(field),
550+
self.block_indent,
551+
Some(one_line_width),
552+
)?,
556553
ast::VariantData::Unit(..) => if let Some(ref expr) = field.node.disr_expr {
557554
let lhs = format!("{} =", field.node.name);
558-
// 1 = ','
559-
rewrite_assign_rhs(&context, lhs, &**expr, shape.sub_width(1)?)?
555+
rewrite_assign_rhs(&context, lhs, &**expr, shape)?
560556
} else {
561557
field.node.name.to_string()
562558
},
@@ -1312,7 +1308,7 @@ fn format_tuple_struct(
13121308
}
13131309
result.push(')');
13141310
} else {
1315-
let shape = Shape::indented(offset, context.config);
1311+
let shape = Shape::indented(offset, context.config).sub_width(1)?;
13161312
let fields = &fields.iter().map(|field| field).collect::<Vec<_>>()[..];
13171313
let one_line_width = context.config.width_heuristics().fn_call_width;
13181314
result = rewrite_call_inner(context, &result, fields, span, shape, one_line_width, false)?;

tests/source/enum.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,11 @@ enum AnError {
172172
#[fail(display = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")]
173173
UnexpectedSingleToken { token: syn::Token },
174174
}
175+
176+
// #2193
177+
enum WidthOf101 {
178+
#[fail(display = ".....................................................")] Io(::std::io::Error),
179+
#[fail(display = ".....................................................")] Ioo(::std::io::Error),
180+
Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(::std::io::Error),
181+
Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(::std::io::Error),
182+
}

tests/target/enum.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,3 +222,14 @@ enum AnError {
222222
#[fail(display = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")]
223223
UnexpectedSingleToken { token: syn::Token },
224224
}
225+
226+
// #2193
227+
enum WidthOf101 {
228+
#[fail(display = ".....................................................")] Io(::std::io::Error),
229+
#[fail(display = ".....................................................")]
230+
Ioo(::std::io::Error),
231+
Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(::std::io::Error),
232+
Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(
233+
::std::io::Error,
234+
),
235+
}

0 commit comments

Comments
 (0)