Increase default function call width limit
This commit is contained in:
parent
a76df6b4d9
commit
199d40fa55
16
Cargo.lock
generated
16
Cargo.lock
generated
@ -2,11 +2,11 @@
|
||||
name = "rustfmt"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"diff 0.1.5 (git+https://github.com/utkarshkukreti/diff.rs.git)",
|
||||
"diff 0.1.7 (git+https://github.com/utkarshkukreti/diff.rs.git)",
|
||||
"regex 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-serialize 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"strings 0.0.1 (git+https://github.com/nrc/strings.rs.git)",
|
||||
"term 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"term 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"toml 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unicode-segmentation 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
@ -21,15 +21,15 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "diff"
|
||||
version = "0.1.5"
|
||||
source = "git+https://github.com/utkarshkukreti/diff.rs.git#1921576a73e1b50a0ecb26c8ce62eefb26d273b4"
|
||||
version = "0.1.7"
|
||||
source = "git+https://github.com/utkarshkukreti/diff.rs.git#6edb9454bf4127087aced0fe07ab3ea6894083cb"
|
||||
|
||||
[[package]]
|
||||
name = "kernel32-sys"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"winapi 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@ -84,11 +84,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "term"
|
||||
version = "0.2.11"
|
||||
version = "0.2.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"kernel32-sys 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -106,7 +106,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.2.3"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
|
@ -348,8 +348,7 @@ mod test {
|
||||
assert_eq!(&uncommented("abc/*...*/"), "abc");
|
||||
assert_eq!(&uncommented("// .... /* \n../* /* *** / */ */a/* // */c\n"),
|
||||
"..ac\n");
|
||||
assert_eq!(&uncommented("abc \" /* */\" qsdf"),
|
||||
"abc \" /* */\" qsdf");
|
||||
assert_eq!(&uncommented("abc \" /* */\" qsdf"), "abc \" /* */\" qsdf");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -260,7 +260,7 @@ create_config! {
|
||||
max_width: usize, 100, "Maximum width of each line";
|
||||
ideal_width: usize, 80, "Ideal width of each line";
|
||||
tab_spaces: usize, 4, "Number of spaces per tab";
|
||||
fn_call_width: usize, 55,
|
||||
fn_call_width: usize, 60,
|
||||
"Maximum width of the args of a function call before faling back to vertical formatting";
|
||||
struct_lit_width: usize, 16,
|
||||
"Maximum width in the body of a struct lit before faling back to vertical formatting";
|
||||
|
54
src/expr.rs
54
src/expr.rs
@ -14,7 +14,7 @@ use std::borrow::Borrow;
|
||||
use Indent;
|
||||
use rewrite::{Rewrite, RewriteContext};
|
||||
use lists::{write_list, itemize_list, ListFormatting, SeparatorTactic, ListTactic,
|
||||
DefinitiveListTactic, definitive_tactic};
|
||||
DefinitiveListTactic, definitive_tactic, ListItem, format_fn_args};
|
||||
use string::{StringFormat, rewrite_string};
|
||||
use utils::{span_after, extra_offset, last_line_width, wrap_str, binary_search};
|
||||
use visitor::FmtVisitor;
|
||||
@ -148,13 +148,7 @@ impl Rewrite for ast::Expr {
|
||||
Some(format!("break{}", id_str))
|
||||
}
|
||||
ast::Expr_::ExprClosure(capture, ref fn_decl, ref body) => {
|
||||
rewrite_closure(capture,
|
||||
fn_decl,
|
||||
body,
|
||||
self.span,
|
||||
context,
|
||||
width,
|
||||
offset)
|
||||
rewrite_closure(capture, fn_decl, body, self.span, context, width, offset)
|
||||
}
|
||||
ast::Expr_::ExprField(..) |
|
||||
ast::Expr_::ExprTupField(..) |
|
||||
@ -172,10 +166,7 @@ impl Rewrite for ast::Expr {
|
||||
})
|
||||
}
|
||||
ast::Expr_::ExprRet(None) => {
|
||||
wrap_str("return".to_owned(),
|
||||
context.config.max_width,
|
||||
width,
|
||||
offset)
|
||||
wrap_str("return".to_owned(), context.config.max_width, width, offset)
|
||||
}
|
||||
ast::Expr_::ExprRet(Some(ref expr)) => {
|
||||
rewrite_unary_prefix(context, "return ", expr, width, offset)
|
||||
@ -227,7 +218,8 @@ pub fn rewrite_array<'a, I>(expr_iter: I,
|
||||
.map(|li| li.item.as_ref().map(|s| s.len() > 10))
|
||||
.fold(Some(false),
|
||||
|acc, x| acc.and_then(|y| x.map(|x| (x || y)))));
|
||||
let tactic = if has_long_item || items.iter().any(|li| li.is_multiline()) {
|
||||
|
||||
let tactic = if has_long_item || items.iter().any(ListItem::is_multiline) {
|
||||
definitive_tactic(&items, ListTactic::HorizontalVertical, max_item_width)
|
||||
} else {
|
||||
DefinitiveListTactic::Mixed
|
||||
@ -282,9 +274,7 @@ fn rewrite_closure(capture: ast::CaptureClause,
|
||||
span_after(span, "|", context.codemap),
|
||||
body.span.lo);
|
||||
let item_vec = arg_items.collect::<Vec<_>>();
|
||||
let tactic = definitive_tactic(&item_vec,
|
||||
ListTactic::HorizontalVertical,
|
||||
horizontal_budget);
|
||||
let tactic = definitive_tactic(&item_vec, ListTactic::HorizontalVertical, horizontal_budget);
|
||||
let budget = match tactic {
|
||||
DefinitiveListTactic::Horizontal => horizontal_budget,
|
||||
_ => budget,
|
||||
@ -589,11 +579,7 @@ fn rewrite_if_else(context: &RewriteContext,
|
||||
|
||||
// Try to format if-else on single line.
|
||||
if allow_single_line && context.config.single_line_if_else {
|
||||
let trial = single_line_if_else(context,
|
||||
&pat_expr_string,
|
||||
if_block,
|
||||
else_block_opt,
|
||||
width);
|
||||
let trial = single_line_if_else(context, &pat_expr_string, if_block, else_block_opt, width);
|
||||
|
||||
if trial.is_some() {
|
||||
return trial;
|
||||
@ -780,8 +766,7 @@ fn rewrite_match(context: &RewriteContext,
|
||||
}
|
||||
}
|
||||
// BytePos(1) = closing match brace.
|
||||
let last_span = mk_sp(arm_end_pos(&arms[arms.len() - 1]),
|
||||
span.hi - BytePos(1));
|
||||
let last_span = mk_sp(arm_end_pos(&arms[arms.len() - 1]), span.hi - BytePos(1));
|
||||
let last_comment = context.snippet(last_span);
|
||||
let comment = try_opt!(rewrite_match_arm_comment(context,
|
||||
&last_comment,
|
||||
@ -894,8 +879,7 @@ impl Rewrite for ast::Arm {
|
||||
// 4 = ` => `.len()
|
||||
let same_line_body = if context.config.max_width > line_start + comma.len() + 4 {
|
||||
let budget = context.config.max_width - line_start - comma.len() - 4;
|
||||
let offset = Indent::new(offset.block_indent,
|
||||
line_start + 4 - offset.block_indent);
|
||||
let offset = Indent::new(offset.block_indent, line_start + 4 - offset.block_indent);
|
||||
let rewrite = nop_block_collapse(body.rewrite(context, budget, offset), budget);
|
||||
|
||||
match rewrite {
|
||||
@ -1081,13 +1065,7 @@ pub fn rewrite_call<R>(context: &RewriteContext,
|
||||
where R: Rewrite
|
||||
{
|
||||
let closure = |callee_max_width| {
|
||||
rewrite_call_inner(context,
|
||||
callee,
|
||||
callee_max_width,
|
||||
args,
|
||||
span,
|
||||
width,
|
||||
offset)
|
||||
rewrite_call_inner(context, callee, callee_max_width, args, span, width, offset)
|
||||
};
|
||||
|
||||
// 2 is for parens
|
||||
@ -1145,7 +1123,7 @@ fn rewrite_call_inner<R>(context: &RewriteContext,
|
||||
span.lo,
|
||||
span.hi);
|
||||
|
||||
let list_str = match ::lists::format_fn_args(items, remaining_width, offset, context.config) {
|
||||
let list_str = match format_fn_args(items, remaining_width, offset, context.config) {
|
||||
Some(str) => str,
|
||||
None => return Err(Ordering::Less),
|
||||
};
|
||||
@ -1174,9 +1152,7 @@ fn rewrite_struct_lit<'a>(context: &RewriteContext,
|
||||
width: usize,
|
||||
offset: Indent)
|
||||
-> Option<String> {
|
||||
debug!("rewrite_struct_lit: width {}, offset {:?}",
|
||||
width,
|
||||
offset);
|
||||
debug!("rewrite_struct_lit: width {}, offset {:?}", width, offset);
|
||||
assert!(!fields.is_empty() || base.is_some());
|
||||
|
||||
enum StructLitField<'a> {
|
||||
@ -1327,9 +1303,7 @@ fn rewrite_tuple_lit(context: &RewriteContext,
|
||||
width: usize,
|
||||
offset: Indent)
|
||||
-> Option<String> {
|
||||
debug!("rewrite_tuple_lit: width: {}, offset: {:?}",
|
||||
width,
|
||||
offset);
|
||||
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 {
|
||||
@ -1350,7 +1324,7 @@ fn rewrite_tuple_lit(context: &RewriteContext,
|
||||
span.lo + BytePos(1), // Remove parens
|
||||
span.hi - BytePos(1));
|
||||
let budget = try_opt!(width.checked_sub(2));
|
||||
let list_str = try_opt!(::lists::format_fn_args(items, budget, indent, context.config));
|
||||
let list_str = try_opt!(format_fn_args(items, budget, indent, context.config));
|
||||
|
||||
Some(format!("({})", list_str))
|
||||
}
|
||||
|
@ -115,8 +115,7 @@ fn write_file(text: &StringBuffer,
|
||||
try!(write_system_newlines(&mut v, text, config));
|
||||
let fmt_text = String::from_utf8(v).unwrap();
|
||||
let diff = make_diff(&ori_text, &fmt_text, 3);
|
||||
print_diff(diff,
|
||||
|line_num| format!("\nDiff at line {}:", line_num));
|
||||
print_diff(diff, |line_num| format!("\nDiff at line {}:", line_num));
|
||||
}
|
||||
WriteMode::Return => {
|
||||
// io::Write is not implemented for String, working around with
|
||||
|
@ -9,7 +9,7 @@
|
||||
// except according to those terms.
|
||||
|
||||
use Indent;
|
||||
use lists::{write_list, itemize_list, ListItem, ListFormatting, SeparatorTactic};
|
||||
use lists::{write_list, itemize_list, ListItem, ListFormatting, SeparatorTactic, definitive_tactic};
|
||||
use utils::span_after;
|
||||
use rewrite::{Rewrite, RewriteContext};
|
||||
|
||||
@ -153,9 +153,9 @@ pub fn rewrite_use_list(width: usize,
|
||||
items[1..].sort_by(|a, b| a.item.cmp(&b.item));
|
||||
}
|
||||
|
||||
let tactic = ::lists::definitive_tactic(&items[first_index..],
|
||||
::lists::ListTactic::Mixed,
|
||||
remaining_width);
|
||||
let tactic = definitive_tactic(&items[first_index..],
|
||||
::lists::ListTactic::Mixed,
|
||||
remaining_width);
|
||||
let fmt = ListFormatting {
|
||||
tactic: tactic,
|
||||
separator: ",",
|
||||
|
@ -236,8 +236,7 @@ fn find_unnumbered_issue() {
|
||||
|
||||
fn check_pass(text: &str) {
|
||||
let mut seeker = BadIssueSeeker::new(ReportTactic::Unnumbered, ReportTactic::Unnumbered);
|
||||
assert_eq!(None,
|
||||
text.chars().position(|c| seeker.inspect(c).is_some()));
|
||||
assert_eq!(None, text.chars().position(|c| seeker.inspect(c).is_some()));
|
||||
}
|
||||
|
||||
check_fail("TODO\n", 4);
|
||||
@ -272,9 +271,7 @@ fn find_issue() {
|
||||
ReportTactic::Never,
|
||||
ReportTactic::Always));
|
||||
|
||||
assert!(!is_bad_issue("bad FIXME\n",
|
||||
ReportTactic::Always,
|
||||
ReportTactic::Never));
|
||||
assert!(!is_bad_issue("bad FIXME\n", ReportTactic::Always, ReportTactic::Never));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -312,9 +312,7 @@ impl<'a> FmtVisitor<'a> {
|
||||
|
||||
let context = self.get_context();
|
||||
let ret_str = fd.output
|
||||
.rewrite(&context,
|
||||
self.config.max_width - indent.width(),
|
||||
indent)
|
||||
.rewrite(&context, self.config.max_width - indent.width(), indent)
|
||||
.unwrap();
|
||||
|
||||
// Args.
|
||||
|
@ -19,7 +19,6 @@
|
||||
// keeping some scratch mem for this and running our own StrPool?
|
||||
// TODO for lint violations of names, emit a refactor script
|
||||
|
||||
|
||||
#[macro_use]
|
||||
extern crate log;
|
||||
|
||||
|
17
src/lists.rs
17
src/lists.rs
@ -19,12 +19,15 @@ use comment::{FindUncommented, rewrite_comment, find_comment_end};
|
||||
use config::Config;
|
||||
|
||||
#[derive(Eq, PartialEq, Debug, Copy, Clone)]
|
||||
/// Formatting tactic for lists. This will be cast down to a
|
||||
/// DefinitiveListTactic depending on the number and length of the items and
|
||||
/// their comments.
|
||||
pub enum ListTactic {
|
||||
// One item per row.
|
||||
Vertical,
|
||||
// All items on one row.
|
||||
Horizontal,
|
||||
// Try Horizontal layout, if that fails then vertical
|
||||
// Try Horizontal layout, if that fails then vertical.
|
||||
HorizontalVertical,
|
||||
// HorizontalVertical with a soft limit of n characters.
|
||||
LimitedHorizontalVertical(usize),
|
||||
@ -72,11 +75,7 @@ pub fn format_item_list<I>(items: I,
|
||||
-> Option<String>
|
||||
where I: Iterator<Item = ListItem>
|
||||
{
|
||||
list_helper(items,
|
||||
width,
|
||||
offset,
|
||||
config,
|
||||
ListTactic::HorizontalVertical)
|
||||
list_helper(items, width, offset, config, ListTactic::HorizontalVertical)
|
||||
}
|
||||
|
||||
fn list_helper<I>(items: I,
|
||||
@ -111,7 +110,7 @@ impl AsRef<ListItem> for ListItem {
|
||||
pub struct ListItem {
|
||||
// None for comments mean that they are not present.
|
||||
pub pre_comment: Option<String>,
|
||||
// Item should include attributes and doc comments. None indicates failed
|
||||
// Item should include attributes and doc comments. None indicates a failed
|
||||
// rewrite.
|
||||
pub item: Option<String>,
|
||||
pub post_comment: Option<String>,
|
||||
@ -121,7 +120,6 @@ pub struct ListItem {
|
||||
|
||||
impl ListItem {
|
||||
pub fn is_multiline(&self) -> bool {
|
||||
// FIXME: fail earlier!
|
||||
self.item.as_ref().map(|s| s.contains('\n')).unwrap_or(false) ||
|
||||
self.pre_comment.is_some() ||
|
||||
self.post_comment.as_ref().map(|s| s.contains('\n')).unwrap_or(false)
|
||||
@ -142,6 +140,7 @@ impl ListItem {
|
||||
}
|
||||
|
||||
#[derive(Eq, PartialEq, Debug, Copy, Clone)]
|
||||
/// The definitive formatting tactic for lists.
|
||||
pub enum DefinitiveListTactic {
|
||||
Vertical,
|
||||
Horizontal,
|
||||
@ -488,8 +487,6 @@ fn calculate_width<'li, I, T>(items: I) -> (usize, usize)
|
||||
}
|
||||
|
||||
fn total_item_width(item: &ListItem) -> usize {
|
||||
// FIXME: If the item has a `None` item, it may be better to fail earlier
|
||||
// rather than later.
|
||||
comment_len(item.pre_comment.as_ref().map(|x| &(*x)[..])) +
|
||||
comment_len(item.post_comment.as_ref().map(|x| &(*x)[..])) +
|
||||
item.item.as_ref().map(|str| str.len()).unwrap_or(0)
|
||||
|
@ -89,12 +89,7 @@ pub fn rewrite_macro(mac: &ast::Mac,
|
||||
match style {
|
||||
MacroStyle::Parens => {
|
||||
// Format macro invocation as function call.
|
||||
rewrite_call(context,
|
||||
¯o_name,
|
||||
&expr_vec,
|
||||
mac.span,
|
||||
width,
|
||||
offset)
|
||||
rewrite_call(context, ¯o_name, &expr_vec, mac.span, width, offset)
|
||||
}
|
||||
MacroStyle::Brackets => {
|
||||
// Format macro invocation as array literal.
|
||||
|
15
src/types.rs
15
src/types.rs
@ -13,7 +13,7 @@ use syntax::print::pprust;
|
||||
use syntax::codemap::{self, Span, BytePos, CodeMap};
|
||||
|
||||
use Indent;
|
||||
use lists::itemize_list;
|
||||
use lists::{format_item_list, itemize_list, format_fn_args};
|
||||
use rewrite::{Rewrite, RewriteContext};
|
||||
use utils::{extra_offset, span_after, format_mutability, wrap_str};
|
||||
|
||||
@ -226,10 +226,10 @@ fn rewrite_segment(segment: &ast::PathSegment,
|
||||
},
|
||||
list_lo,
|
||||
span_hi);
|
||||
let list_str = try_opt!(::lists::format_item_list(items,
|
||||
list_width,
|
||||
offset + extra_offset,
|
||||
context.config));
|
||||
let list_str = try_opt!(format_item_list(items,
|
||||
list_width,
|
||||
offset + extra_offset,
|
||||
context.config));
|
||||
|
||||
// Update position of last bracket.
|
||||
*span_lo = next_span_lo;
|
||||
@ -258,7 +258,7 @@ fn rewrite_segment(segment: &ast::PathSegment,
|
||||
|ty| ty.rewrite(context, budget, offset),
|
||||
list_lo,
|
||||
span_hi);
|
||||
let list_str = try_opt!(::lists::format_fn_args(items, budget, offset, context.config));
|
||||
let list_str = try_opt!(format_fn_args(items, budget, offset, context.config));
|
||||
|
||||
format!("({}){}", list_str, output)
|
||||
}
|
||||
@ -363,8 +363,7 @@ impl Rewrite for ast::TyParamBound {
|
||||
}
|
||||
ast::TyParamBound::TraitTyParamBound(ref tref, ast::TraitBoundModifier::Maybe) => {
|
||||
let budget = try_opt!(width.checked_sub(1));
|
||||
Some(format!("?{}",
|
||||
try_opt!(tref.rewrite(context, budget, offset + 1))))
|
||||
Some(format!("?{}", try_opt!(tref.rewrite(context, budget, offset + 1))))
|
||||
}
|
||||
ast::TyParamBound::RegionTyParamBound(ref l) => {
|
||||
Some(pprust::lifetime_to_string(l))
|
||||
|
@ -319,9 +319,7 @@ impl<'a> FmtVisitor<'a> {
|
||||
}
|
||||
|
||||
fn format_mod(&mut self, m: &ast::Mod, s: Span, ident: ast::Ident) {
|
||||
debug!("FmtVisitor::format_mod: ident: {:?}, span: {:?}",
|
||||
ident,
|
||||
s);
|
||||
debug!("FmtVisitor::format_mod: ident: {:?}, span: {:?}", ident, s);
|
||||
|
||||
// Decide whether this is an inline mod or an external mod.
|
||||
let local_file_name = self.codemap.span_to_filename(s);
|
||||
@ -359,9 +357,7 @@ impl<'a> FmtVisitor<'a> {
|
||||
overflow_indent: Indent::empty(),
|
||||
};
|
||||
// 1 = ";"
|
||||
match vp.rewrite(&context,
|
||||
self.config.max_width - offset.width() - 1,
|
||||
offset) {
|
||||
match vp.rewrite(&context, self.config.max_width - offset.width() - 1, offset) {
|
||||
Some(ref s) if s.is_empty() => {
|
||||
// Format up to last newline
|
||||
let prev_span = codemap::mk_sp(self.last_pos, span.lo);
|
||||
|
Loading…
x
Reference in New Issue
Block a user