fix "derivable_impls: attributes are ignored"

This commit is contained in:
mojave2 2023-08-25 19:15:44 +08:00
parent 4932d05733
commit 90fcc67d32
No known key found for this signature in database
3 changed files with 27 additions and 2 deletions

View file

@ -217,8 +217,7 @@ impl<'tcx> LateLintPass<'tcx> for DerivableImpls {
if let &Adt(adt_def, args) = cx.tcx.type_of(item.owner_id).instantiate_identity().kind(); if let &Adt(adt_def, args) = cx.tcx.type_of(item.owner_id).instantiate_identity().kind();
if let attrs = cx.tcx.hir().attrs(item.hir_id()); if let attrs = cx.tcx.hir().attrs(item.hir_id());
if !attrs.iter().any(|attr| attr.doc_str().is_some()); if !attrs.iter().any(|attr| attr.doc_str().is_some());
if let child_attrs = cx.tcx.hir().attrs(impl_item_hir); if cx.tcx.hir().attrs(impl_item_hir).is_empty();
if !child_attrs.iter().any(|attr| attr.doc_str().is_some());
then { then {
if adt_def.is_struct() { if adt_def.is_struct() {

View file

@ -287,4 +287,17 @@ mod issue10158 {
} }
} }
mod issue11368 {
pub struct A {
a: u32,
}
impl Default for A {
#[track_caller]
fn default() -> Self {
Self { a: 0 }
}
}
}
fn main() {} fn main() {}

View file

@ -323,4 +323,17 @@ mod issue10158 {
} }
} }
mod issue11368 {
pub struct A {
a: u32,
}
impl Default for A {
#[track_caller]
fn default() -> Self {
Self { a: 0 }
}
}
}
fn main() {} fn main() {}