Skip to content

Commit

Permalink
Use contiguous spans for empty_line_after_* suggestion
Browse files Browse the repository at this point in the history
Replacing an empty span (which an empty line is) with an empty string triggers a
debug assertion in rustc. This fixes the debug assertion by using contiguous
spans, with the same resulting suggestion.
  • Loading branch information
flip1995 committed Sep 22, 2024
1 parent abdf173 commit f1c47ab
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions clippy_lints/src/doc/empty_line_after.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use rustc_errors::{Applicability, Diag, SuggestionStyle};
use rustc_hir::{ItemKind, Node};
use rustc_lexer::TokenKind;
use rustc_lint::LateContext;
use rustc_span::{ExpnKind, InnerSpan, Span, SpanData};
use rustc_span::{BytePos, ExpnKind, InnerSpan, Span, SpanData};

use super::{EMPTY_LINE_AFTER_DOC_COMMENTS, EMPTY_LINE_AFTER_OUTER_ATTR};

Expand Down Expand Up @@ -192,6 +192,16 @@ fn check_gaps(cx: &LateContext<'_>, gaps: &[Gap<'_>]) -> bool {
return false;
};
let empty_lines = || gaps.iter().flat_map(|gap| gap.empty_lines.iter().copied());
let contiguous_empty_lines = || {
gaps.iter().map(|gap| {
let first_line = gap.empty_lines.first().unwrap();
let last_line = gap.empty_lines.last().unwrap();

// The BytePos subtraction here is save, as before an empty line, there must be at least one
// attribute/doc comment.
last_line.with_lo(first_line.lo() - BytePos(1))
})
};
let mut has_comment = false;
let mut has_attr = false;
for gap in gaps {
Expand Down Expand Up @@ -230,7 +240,9 @@ fn check_gaps(cx: &LateContext<'_>, gaps: &[Gap<'_>]) -> bool {

diag.multipart_suggestion_with_style(
format!("if the empty {lines} {are} unintentional remove {them}"),
empty_lines().map(|empty_line| (empty_line, String::new())).collect(),
contiguous_empty_lines()
.map(|empty_lines| (empty_lines, String::new()))
.collect(),
Applicability::MaybeIncorrect,
SuggestionStyle::HideCodeAlways,
);
Expand Down

0 comments on commit f1c47ab

Please sign in to comment.