Check with overlaps_or_adjacent

This commit is contained in:
long-long-float 2024-02-09 01:03:38 +09:00
parent 8cc5084950
commit 4e7941c2c5
2 changed files with 14 additions and 4 deletions

View File

@ -519,10 +519,13 @@ impl Diagnostic {
/// Helper for pushing to `self.suggestions`, if available (not disable).
fn push_suggestion(&mut self, suggestion: CodeSuggestion) {
let in_derive = suggestion
.substitutions
.iter()
.any(|subst| subst.parts.iter().any(|part| part.span.in_derive_expansion()));
let in_derive = suggestion.substitutions.iter().any(|subst| {
subst.parts.iter().any(|part| {
let span = part.span;
let call_site = span.ctxt().outer_expn_data().call_site;
span.in_derive_expansion() && span.overlaps_or_adjacent(call_site)
})
});
if in_derive {
// Ignore if spans is from derive macro.
return;

View File

@ -627,6 +627,13 @@ impl Span {
span.lo < other.hi && other.lo < span.hi
}
/// Returns `true` if `self` touches or adjoins `other`.
pub fn overlaps_or_adjacent(self, other: Span) -> bool {
let span = self.data();
let other = other.data();
span.lo <= other.hi && other.lo <= span.hi
}
/// Returns `true` if the spans are equal with regards to the source text.
///
/// Use this instead of `==` when either span could be generated code,