Skip to content

Commit 332cc97

Browse files
committed
Use block indent style for struct tuple
1 parent 818ff7a commit 332cc97

File tree

4 files changed

+45
-33
lines changed

4 files changed

+45
-33
lines changed

src/items.rs

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ use codemap::SpanUtils;
1515
use utils::{format_mutability, format_visibility, contains_skip, end_typaram, wrap_str,
1616
last_line_width, format_unsafety, trim_newlines, stmt_expr, semicolon_for_expr,
1717
trimmed_last_line_width, colon_spaces, mk_sp};
18-
use lists::{write_list, itemize_list, ListItem, ListFormatting, SeparatorTactic, list_helper,
19-
DefinitiveListTactic, ListTactic, definitive_tactic};
18+
use lists::{write_list, itemize_list, definitive_tactic, ListItem, ListFormatting,
19+
SeparatorTactic, DefinitiveListTactic, ListTactic};
2020
use expr::{format_expr, is_empty_block, is_simple_block_stmt, rewrite_assign_rhs, ExprType};
2121
use comment::{FindUncommented, contains_comment, rewrite_comment, recover_comment_removed};
2222
use visitor::FmtVisitor;
@@ -1152,12 +1152,11 @@ fn format_tuple_struct(
11521152
let generics_str = try_opt!(rewrite_generics(context, generics, shape, g_span));
11531153
result.push_str(&generics_str);
11541154

1155-
let where_budget = try_opt!(
1156-
context
1157-
.config
1158-
.max_width()
1159-
.checked_sub(last_line_width(&result))
1160-
);
1155+
let where_budget = context
1156+
.config
1157+
.max_width()
1158+
.checked_sub(last_line_width(&result))
1159+
.unwrap_or(0);
11611160
try_opt!(rewrite_where_clause(
11621161
context,
11631162
&generics.where_clause,
@@ -1197,7 +1196,11 @@ fn format_tuple_struct(
11971196
}
11981197
IndentStyle::Block => {
11991198
(
1200-
ListTactic::HorizontalVertical,
1199+
if result.contains('\n') {
1200+
ListTactic::Vertical
1201+
} else {
1202+
ListTactic::HorizontalVertical
1203+
},
12011204
offset.block_only().block_indent(&context.config),
12021205
)
12031206
}
@@ -1233,15 +1236,20 @@ fn format_tuple_struct(
12331236
context
12341237
.config
12351238
.max_width()
1236-
.checked_sub(offset.block_only().width() + result.len() + 3)
1239+
.checked_sub(offset.block_only().width() + last_line_width(&result) + 3)
12371240
);
1238-
let body = try_opt!(list_helper(
1239-
items,
1240-
// TODO budget is wrong in block case
1241-
Shape::legacy(body_budget, item_indent),
1242-
context.config,
1243-
tactic,
1244-
));
1241+
1242+
let item_vec: Vec<_> = items.collect();
1243+
let tactic = definitive_tactic(&item_vec, tactic, body_budget);
1244+
let fmt = ListFormatting {
1245+
tactic: tactic,
1246+
separator: ",",
1247+
trailing_separator: context.config.trailing_comma(),
1248+
shape: Shape::indented(item_indent, context.config),
1249+
ends_with_newline: false,
1250+
config: context.config,
1251+
};
1252+
let body = try_opt!(write_list(&item_vec, &fmt));
12451253

12461254
if context.config.fn_args_layout() == IndentStyle::Visual || !body.contains('\n') {
12471255
result.push('(');

tests/target/enum.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ enum Bar {
3232
enum LongVariants {
3333
First(
3434
LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONG, // comment
35-
VARIANT
35+
VARIANT,
3636
),
3737
// This is the second variant
3838
Second,
@@ -53,7 +53,7 @@ enum X {
5353
CreateWebGLPaintTask(
5454
Size2D<i32>,
5555
GLContextAttributes,
56-
IpcSender<Result<(IpcSender<CanvasMsg>, usize), String>>
56+
IpcSender<Result<(IpcSender<CanvasMsg>, usize), String>>,
5757
), // This is a post comment
5858
}
5959

@@ -120,7 +120,7 @@ fn nested_enum_test() {
120120
usize,
121121
usize,
122122
usize,
123-
usize
123+
usize,
124124
), /* AAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAA
125125
* AAAAAAAAAAAAAAAAAAAAAA */
126126
Two, /* AAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
@@ -155,6 +155,6 @@ pub enum CoreResourceMsg {
155155
#[serde(deserialize_with = "::hyper_serde::deserialize",
156156
serialize_with = "::hyper_serde::serialize")]
157157
Cookie,
158-
CookieSource
158+
CookieSource,
159159
),
160160
}

tests/target/structs.rs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,13 @@ struct NewType(Type, OtherType);
4343

4444
struct NewInt<T: Copy>(pub i32, SomeType /* inline comment */, T /* sup */);
4545

46-
struct Qux<'a,
47-
N: Clone + 'a,
48-
E: Clone + 'a,
49-
G: Labeller<'a, N, E> + GraphWalk<'a, N, E>,
50-
W: Write + Copy>
51-
(
46+
struct Qux<
47+
'a,
48+
N: Clone + 'a,
49+
E: Clone + 'a,
50+
G: Labeller<'a, N, E> + GraphWalk<'a, N, E>,
51+
W: Write + Copy,
52+
>(
5253
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA, // Comment
5354
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB,
5455
#[AnAttr]
@@ -62,7 +63,7 @@ struct Tuple(
6263
// Comment 1
6364
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,
6465
// Comment 2
65-
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
66+
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB,
6667
);
6768

6869
// With a where clause and generics.
@@ -154,7 +155,7 @@ struct Foo<T>(
154155
TTTTTTTTTTTTTTTTT,
155156
UUUUUUUUUUUUUUUUUUUUUUUU,
156157
TTTTTTTTTTTTTTTTTTT,
157-
UUUUUUUUUUUUUUUUUUU
158+
UUUUUUUUUUUUUUUUUUU,
158159
);
159160
struct Foo<T>(TTTTTTTTTTTTTTTTTT, UUUUUUUUUUUUUUUUUUUUUUUU, TTTTTTTTTTTTTTTTTTT)
160161
where
@@ -166,7 +167,7 @@ struct Foo<T>(
166167
TTTTTTTTTTTTTTTTT,
167168
UUUUUUUUUUUUUUUUUUUUUUUU,
168169
TTTTTTTTTTTTTTTTTTT,
169-
UUUUUUUUUUUUUUUUUUU
170+
UUUUUUUUUUUUUUUUUUU,
170171
)
171172
where
172173
T: PartialEq;
@@ -176,7 +177,7 @@ struct Foo<T>(
176177
// Baz
177178
TTTTTTTTTTTTTTTTTTT,
178179
// Qux (FIXME #572 - doc comment)
179-
UUUUUUUUUUUUUUUUUUU
180+
UUUUUUUUUUUUUUUUUUU,
180181
);
181182

182183
mod m {
@@ -191,7 +192,7 @@ mod m {
191192
struct Foo<T>(
192193
TTTTTTTTTTTTTTTTTTT,
193194
/// Qux
194-
UUUUUUUUUUUUUUUUUUU
195+
UUUUUUUUUUUUUUUUUUU,
195196
);
196197

197198
struct Issue677 {

tests/target/trailing_commas.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ struct Pair<
4848

4949
struct TupPair<
5050
S, T,
51-
>(S, T)
51+
>(
52+
S,
53+
T,
54+
)
5255
where
5356
T: P,
5457
S: P + Q;

0 commit comments

Comments
 (0)