#[deprecated] lint doesn't trigger when overriding deprecated method #98990
Description
This doesn't give any warnings, even though std::error::Error::description is deprecated:
impl std::error::Error for E {
fn description(&self) -> &str {
":)"
}
}
It seems like this is a deliberate decision:
rust/compiler/rustc_passes/src/stability.rs
Lines 763 to 764 in 3dcb616
Substituting that first None
for Some(impl_item_ref.id.hir_id())
makes it work.
Doing so results in the lint triggering in exactly one place in std
:
Lines 605 to 609 in 3dcb616
That's because in all other cases, we have #[allow(deprecated)]
there:
Lines 597 to 602 in 3dcb616
Which is suprising, as that lint doesn't tigger there, making that #[allow]
unnecessary.
It seems as if it used to be necessary in the past, but now no longer is.
Did #[deprecated] trigger on overrides in the past? Was that behavior changed on purpose? Or is it a bug that it doesn't do that anymore?
Activity