From 63f0fc964130f7710b8c2e5f045cabff761025da Mon Sep 17 00:00:00 2001 From: Marcus Klaas Date: Sat, 16 Apr 2016 22:42:15 +0200 Subject: [PATCH] Fix off-by-one error in pattern formatting --- src/patterns.rs | 5 +++-- tests/source/issue-913.rs | 20 ++++++++++++++++++++ tests/target/issue-913.rs | 20 ++++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 tests/source/issue-913.rs create mode 100644 tests/target/issue-913.rs diff --git a/src/patterns.rs b/src/patterns.rs index 4285b592fbc..3cec98bb93a 100644 --- a/src/patterns.rs +++ b/src/patterns.rs @@ -76,8 +76,9 @@ fn rewrite(&self, context: &RewriteContext, width: usize, offset: Indent) -> Opt if pat_vec.is_empty() { Some(path_str) } else { - // 1 = ( - let width = try_opt!(width.checked_sub(path_str.len() + 1)); + // 2 = "()".len() + let width = try_opt!(width.checked_sub(path_str.len() + 2)); + // 1 = "(".len() let offset = offset + path_str.len() + 1; let items = itemize_list(context.codemap, pat_vec.iter(), diff --git a/tests/source/issue-913.rs b/tests/source/issue-913.rs new file mode 100644 index 00000000000..f58a8b0663b --- /dev/null +++ b/tests/source/issue-913.rs @@ -0,0 +1,20 @@ +mod client { + impl Client { + fn test(self) -> Result<()> { + let next_state = match self.state { + State::V5(v5::State::Command(v5::coand::State::WriteVersion(ref mut response))) => { + let x = reformat . meeee() ; + } + }; + + let next_state = match self.state { + State::V5(v5::State::Command(v5::comand::State::WriteVersion(ref mut response))) => { + // The pattern cannot be formatted in a way that the match stays + // within the column limit. The rewrite should therefore be + // skipped. + let x = dont . reformat . meeee(); + } + }; + } + } +} diff --git a/tests/target/issue-913.rs b/tests/target/issue-913.rs new file mode 100644 index 00000000000..c7aee5fe3ab --- /dev/null +++ b/tests/target/issue-913.rs @@ -0,0 +1,20 @@ +mod client { + impl Client { + fn test(self) -> Result<()> { + let next_state = match self.state { + State::V5(v5::State::Command(v5::coand::State::WriteVersion(ref mut response))) => { + let x = reformat.meeee(); + } + }; + + let next_state = match self.state { + State::V5(v5::State::Command(v5::comand::State::WriteVersion(ref mut response))) => { + // The pattern cannot be formatted in a way that the match stays + // within the column limit. The rewrite should therefore be + // skipped. + let x = dont . reformat . meeee(); + } + }; + } + } +} -- 2.44.0