about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNick Cameron <nrc@ncameron.org>2018-08-31 10:43:06 +1200
committerGitHub <noreply@github.com>2018-08-31 10:43:06 +1200
commitd88139893f71801ee7262db999832e6bbab02cc2 (patch)
treeb8ef3cfe84790c4bb6397ffabf88bfe2db532012
parent68015ecf52066bb5d624cda01c580854a042e30f (diff)
parentad903e08fdaac65a7567c952a1191a14413ec00d (diff)
Merge pull request #2981 from topecongiro/issue-2956
Keep formatting fn even if there is an unformattable argument 
-rw-r--r--src/items.rs6
-rw-r--r--tests/source/fn-simple.rs5
-rw-r--r--tests/target/fn-simple.rs9
3 files changed, 18 insertions, 2 deletions
diff --git a/src/items.rs b/src/items.rs
index ff635137e42..7f8980dd150 100644
--- a/src/items.rs
+++ b/src/items.rs
@@ -2232,8 +2232,10 @@ fn rewrite_args(
 ) -> Option<String> {
     let mut arg_item_strs = args
         .iter()
-        .map(|arg| arg.rewrite(context, Shape::legacy(multi_line_budget, arg_indent)))
-        .collect::<Option<Vec<_>>>()?;
+        .map(|arg| {
+            arg.rewrite(context, Shape::legacy(multi_line_budget, arg_indent))
+                .unwrap_or_else(|| context.snippet(arg.span()).to_owned())
+        }).collect::<Vec<_>>();
 
     // Account for sugary self.
     // FIXME: the comment for the self argument is dropped. This is blocked
diff --git a/tests/source/fn-simple.rs b/tests/source/fn-simple.rs
index 7afc0a1d201..855332d137d 100644
--- a/tests/source/fn-simple.rs
+++ b/tests/source/fn-simple.rs
@@ -67,3 +67,8 @@ crate fn init() {}
 
 // #2630
 fn make_map<T, F: (Fn(&T) -> String)>(records: &Vec<T>, key_fn: F) -> HashMap<String, usize> {}
+
+// #2956
+fn bar(beans: Asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf, spam: bool, eggs: bool) -> bool{
+    unimplemented!();
+}
diff --git a/tests/target/fn-simple.rs b/tests/target/fn-simple.rs
index 60b18a978ed..f35c5d8a0ed 100644
--- a/tests/target/fn-simple.rs
+++ b/tests/target/fn-simple.rs
@@ -108,3 +108,12 @@ crate fn init() {}
 
 // #2630
 fn make_map<T, F: (Fn(&T) -> String)>(records: &Vec<T>, key_fn: F) -> HashMap<String, usize> {}
+
+// #2956
+fn bar(
+    beans: Asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf,
+    spam: bool,
+    eggs: bool,
+) -> bool {
+    unimplemented!();
+}