mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-12 08:36:03 +00:00
Implement reformat of tuple litterals
This commit is contained in:
parent
ecd9557495
commit
092d6be368
37
src/expr.rs
37
src/expr.rs
@ -194,6 +194,40 @@ impl<'a> FmtVisitor<'a> {
|
|||||||
format!("{}: {}", name, expr)
|
format!("{}: {}", name, expr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn rewrite_tuple_lit(&mut self, items: &[ptr::P<ast::Expr>], width: usize, offset: usize)
|
||||||
|
-> String {
|
||||||
|
// opening paren
|
||||||
|
let indent = offset + 1;
|
||||||
|
// Only last line has width-1 as budget, other may take max_width
|
||||||
|
let item_strs: Vec<_> =
|
||||||
|
items.iter()
|
||||||
|
.enumerate()
|
||||||
|
.map(|(i, item)| self.rewrite_expr(
|
||||||
|
item,
|
||||||
|
// for last line, -2 is for indent + ")", for other lines, -1 is for comma
|
||||||
|
if i == items.len() - 1 { width - 2 } else { config!(max_width) - indent - 1 },
|
||||||
|
indent))
|
||||||
|
.collect();
|
||||||
|
let tactics = if item_strs.iter().any(|s| s.contains('\n')) {
|
||||||
|
ListTactic::Vertical
|
||||||
|
} else {
|
||||||
|
ListTactic::HorizontalVertical
|
||||||
|
};
|
||||||
|
// FIXME handle comments
|
||||||
|
let item_strs: Vec<_> = item_strs.into_iter().map(|s| (s, String::new())).collect();
|
||||||
|
let fmt = ListFormatting {
|
||||||
|
tactic: tactics,
|
||||||
|
separator: ",",
|
||||||
|
trailing_separator: SeparatorTactic::Never,
|
||||||
|
indent: indent,
|
||||||
|
h_width: width - 2,
|
||||||
|
v_width: width - 2,
|
||||||
|
};
|
||||||
|
let item_str = write_list(&item_strs, &fmt);
|
||||||
|
format!("({})", item_str)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
pub fn rewrite_expr(&mut self, expr: &ast::Expr, width: usize, offset: usize) -> String {
|
pub fn rewrite_expr(&mut self, expr: &ast::Expr, width: usize, offset: usize) -> String {
|
||||||
match expr.node {
|
match expr.node {
|
||||||
ast::Expr_::ExprLit(ref l) => {
|
ast::Expr_::ExprLit(ref l) => {
|
||||||
@ -219,6 +253,9 @@ impl<'a> FmtVisitor<'a> {
|
|||||||
width,
|
width,
|
||||||
offset);
|
offset);
|
||||||
}
|
}
|
||||||
|
ast::Expr_::ExprTup(ref items) => {
|
||||||
|
return self.rewrite_tuple_lit(items, width, offset);
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
9
tests/idem/tuple.rs
Normal file
9
tests/idem/tuple.rs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
// Test tuple litterals
|
||||||
|
|
||||||
|
fn foo() {
|
||||||
|
let a = (a, a, a, a, a);
|
||||||
|
let aaaaaaaaaaaaaaaa = (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaa, aaaaaaaaaa);
|
||||||
|
let aaaaaaaaaaaaaaaaaaaaaa = (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,
|
||||||
|
aaaaaaaaaaaaaaaaaaaaaaaaa,
|
||||||
|
aaaa);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user