From 0b90c601d9a3ed8938f46775d7f0ff31d1aa19c4 Mon Sep 17 00:00:00 2001 From: Fabian Drinck Date: Sun, 10 Jul 2016 19:08:06 +0200 Subject: [PATCH 1/4] Fix issue-1048 --- src/items.rs | 3 ++- tests/source/issue-1048.rs | 3 +++ tests/target/issue-1048.rs | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 tests/source/issue-1048.rs create mode 100644 tests/target/issue-1048.rs diff --git a/src/items.rs b/src/items.rs index 1de56220cf4..034be6a9ce4 100644 --- a/src/items.rs +++ b/src/items.rs @@ -440,6 +440,7 @@ pub fn format_impl(context: &RewriteContext, item: &ast::Item, offset: Indent) - ref self_ty, ref items) = item.node { let mut result = String::new(); + result.push_str(&*format_visibility(&item.vis)); result.push_str(format_unsafety(unsafety)); result.push_str("impl"); @@ -470,7 +471,7 @@ pub fn format_impl(context: &RewriteContext, item: &ast::Item, offset: Indent) - result.push_str(" for "); } - let budget = try_opt!(context.config.max_width.checked_sub(result.len())); + let budget = try_opt!(context.config.max_width.checked_sub(result.len() + 1)); let indent = offset + result.len(); result.push_str(&*try_opt!(self_ty.rewrite(context, budget, indent))); diff --git a/tests/source/issue-1048.rs b/tests/source/issue-1048.rs new file mode 100644 index 00000000000..40df8b81914 --- /dev/null +++ b/tests/source/issue-1048.rs @@ -0,0 +1,3 @@ +// Test issue-1048 +impl Handle, HandleType> { +} diff --git a/tests/target/issue-1048.rs b/tests/target/issue-1048.rs new file mode 100644 index 00000000000..af1be8aeab3 --- /dev/null +++ b/tests/target/issue-1048.rs @@ -0,0 +1,4 @@ +// Test issue-1048 +impl Handle, + HandleType> { +} From 4a444a26b92dec58b5860ed99c0afc862d8f8983 Mon Sep 17 00:00:00 2001 From: Fabian Drinck Date: Fri, 22 Jul 2016 19:14:46 +0200 Subject: [PATCH 2/4] Take possible where-clause into account --- src/items.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/items.rs b/src/items.rs index 034be6a9ce4..4403850a8f0 100644 --- a/src/items.rs +++ b/src/items.rs @@ -471,7 +471,18 @@ pub fn format_impl(context: &RewriteContext, item: &ast::Item, offset: Indent) - result.push_str(" for "); } - let budget = try_opt!(context.config.max_width.checked_sub(result.len() + 1)); + let mut space_left = result.len(); + if generics.where_clause.predicates.is_empty() { + // If there is no where clause adapt budget for type formatting to take space and curly + // brace into account. + match context.config.item_brace_style { + BraceStyle::AlwaysNextLine => {} + BraceStyle::PreferSameLine => space_left += 2, + BraceStyle::SameLineWhere => space_left += 2, + } + } + + let budget = try_opt!(context.config.max_width.checked_sub(space_left)); let indent = offset + result.len(); result.push_str(&*try_opt!(self_ty.rewrite(context, budget, indent))); From f9cd4a328e47a48f687382cdc2a8cc38c30ebbb7 Mon Sep 17 00:00:00 2001 From: Fabian Drinck Date: Fri, 22 Jul 2016 19:25:05 +0200 Subject: [PATCH 3/4] Move test to existing test set --- tests/source/impls.rs | 3 +++ tests/source/issue-1048.rs | 3 --- tests/target/impls.rs | 4 ++++ tests/target/issue-1048.rs | 4 ---- 4 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 tests/source/issue-1048.rs delete mode 100644 tests/target/issue-1048.rs diff --git a/tests/source/impls.rs b/tests/source/impls.rs index 0eb084018bc..5fbcecb9700 100644 --- a/tests/source/impls.rs +++ b/tests/source/impls.rs @@ -97,3 +97,6 @@ mod m { impl PartialEq for S where T: PartialEq { } } + +impl Handle, HandleType> { +} diff --git a/tests/source/issue-1048.rs b/tests/source/issue-1048.rs deleted file mode 100644 index 40df8b81914..00000000000 --- a/tests/source/issue-1048.rs +++ /dev/null @@ -1,3 +0,0 @@ -// Test issue-1048 -impl Handle, HandleType> { -} diff --git a/tests/target/impls.rs b/tests/target/impls.rs index 38c972c0031..03045c21ac5 100644 --- a/tests/target/impls.rs +++ b/tests/target/impls.rs @@ -124,3 +124,7 @@ mod m { impl PartialEq for S where T: PartialEq {} } + +impl Handle, + HandleType> { +} diff --git a/tests/target/issue-1048.rs b/tests/target/issue-1048.rs deleted file mode 100644 index af1be8aeab3..00000000000 --- a/tests/target/issue-1048.rs +++ /dev/null @@ -1,4 +0,0 @@ -// Test issue-1048 -impl Handle, - HandleType> { -} From 45714efa35e584ac4d845e708c203510ed2d1c0e Mon Sep 17 00:00:00 2001 From: Fabian Drinck Date: Fri, 22 Jul 2016 22:34:34 +0200 Subject: [PATCH 4/4] Fix wrong variable name --- src/items.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/items.rs b/src/items.rs index 4403850a8f0..a0e5626b882 100644 --- a/src/items.rs +++ b/src/items.rs @@ -471,18 +471,18 @@ pub fn format_impl(context: &RewriteContext, item: &ast::Item, offset: Indent) - result.push_str(" for "); } - let mut space_left = result.len(); + let mut used_space = result.len(); if generics.where_clause.predicates.is_empty() { // If there is no where clause adapt budget for type formatting to take space and curly // brace into account. match context.config.item_brace_style { BraceStyle::AlwaysNextLine => {} - BraceStyle::PreferSameLine => space_left += 2, - BraceStyle::SameLineWhere => space_left += 2, + BraceStyle::PreferSameLine => used_space += 2, + BraceStyle::SameLineWhere => used_space += 2, } } - let budget = try_opt!(context.config.max_width.checked_sub(space_left)); + let budget = try_opt!(context.config.max_width.checked_sub(used_space)); let indent = offset + result.len(); result.push_str(&*try_opt!(self_ty.rewrite(context, budget, indent)));