diff --git a/src/imports.rs b/src/imports.rs index b940dcc9de7..c49a95b6ff7 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) => {