Use correct BytePos when recovering comments on removed import
@@ -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) => {
