red_knot_python_semantic: remove `Deref` impl on `TypeCheckDiagnostics`

I removed this to see how much code was depending internally on the
`&[Arc<TypeCheckDiagnostic>]` representation. Thankfully, it was just
one place. So I just removed the `Deref` impl in favor of adding an
explicit `iter` method.

In general, I think using `Deref` for things like this is _somewhat_ of
an abuse. The tip-off is if there are `&self` or `&mut self` methods on
the type, then it's probably not a good candidate for `Deref`.
This commit is contained in:
Andrew Gallant 2025-03-21 09:40:47 -04:00 committed by Andrew Gallant
parent d382065f8a
commit a953373892
1 changed files with 4 additions and 9 deletions

View File

@ -17,7 +17,6 @@ use ruff_text_size::{Ranged, TextRange};
use rustc_hash::FxHashSet; use rustc_hash::FxHashSet;
use std::borrow::Cow; use std::borrow::Cow;
use std::fmt::Formatter; use std::fmt::Formatter;
use std::ops::Deref;
use std::sync::Arc; use std::sync::Arc;
/// Registers all known type check lints. /// Registers all known type check lints.
@ -985,6 +984,10 @@ impl TypeCheckDiagnostics {
self.used_suppressions.shrink_to_fit(); self.used_suppressions.shrink_to_fit();
self.diagnostics.shrink_to_fit(); self.diagnostics.shrink_to_fit();
} }
pub fn iter(&self) -> std::slice::Iter<'_, Arc<TypeCheckDiagnostic>> {
self.diagnostics.iter()
}
} }
impl std::fmt::Debug for TypeCheckDiagnostics { impl std::fmt::Debug for TypeCheckDiagnostics {
@ -993,14 +996,6 @@ impl std::fmt::Debug for TypeCheckDiagnostics {
} }
} }
impl Deref for TypeCheckDiagnostics {
type Target = [std::sync::Arc<TypeCheckDiagnostic>];
fn deref(&self) -> &Self::Target {
&self.diagnostics
}
}
impl IntoIterator for TypeCheckDiagnostics { impl IntoIterator for TypeCheckDiagnostics {
type Item = Arc<TypeCheckDiagnostic>; type Item = Arc<TypeCheckDiagnostic>;
type IntoIter = std::vec::IntoIter<std::sync::Arc<TypeCheckDiagnostic>>; type IntoIter = std::vec::IntoIter<std::sync::Arc<TypeCheckDiagnostic>>;