From 949708f617ae7e815da8ebd69b7128c5ae184299 Mon Sep 17 00:00:00 2001 From: Seiichi Uchida Date: Wed, 10 Jan 2018 21:30:41 +0900 Subject: [PATCH] Use correct BytePos when recovering comments on removed import --- src/imports.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/imports.rs b/src/imports.rs index b940dcc9de74..c49a95b6ff79 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -314,11 +314,14 @@ impl<'a> FmtVisitor<'a> { Some(ref s) if s.is_empty() => { // Format up to last newline let prev_span = mk_sp(self.last_pos, source!(self, span).lo()); - let span_end = match self.snippet(prev_span).rfind('\n') { - Some(offset) => self.last_pos + BytePos(offset as u32), - None => source!(self, span).lo(), - }; + let trimmed_snippet = self.snippet(prev_span).trim_right(); + let span_end = self.last_pos + BytePos(trimmed_snippet.len() as u32); self.format_missing(span_end); + // We have an excessive newline from the removed import. + if self.buffer.ends_with('\n') { + self.buffer.pop(); + self.line_number -= 1; + } self.last_pos = source!(self, span).hi(); } Some(ref s) => {