Fix new_without_default FP on private type with trait impl (#15782)
Closes rust-lang/rust-clippy#15778 changelog: [`new_without_default`] fix FP on private type with trait impl
This commit is contained in:
commit
dfd8b2d3ee
3 changed files with 41 additions and 1 deletions
|
|
@ -94,7 +94,7 @@ impl<'tcx> LateLintPass<'tcx> for NewWithoutDefault {
|
|||
return;
|
||||
}
|
||||
if sig.decl.inputs.is_empty()
|
||||
&& cx.effective_visibilities.is_reachable(impl_item.owner_id.def_id)
|
||||
&& cx.effective_visibilities.is_exported(impl_item.owner_id.def_id)
|
||||
&& let self_ty = cx.tcx.type_of(item.owner_id).instantiate_identity()
|
||||
&& self_ty == return_ty(cx, impl_item.owner_id)
|
||||
&& let Some(default_trait_id) = cx.tcx.get_diagnostic_item(sym::Default)
|
||||
|
|
|
|||
|
|
@ -322,3 +322,23 @@ where
|
|||
Self { _kv: None }
|
||||
}
|
||||
}
|
||||
|
||||
mod issue15778 {
|
||||
pub struct Foo(Vec<i32>);
|
||||
|
||||
impl Foo {
|
||||
pub fn new() -> Self {
|
||||
Self(Vec::new())
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> IntoIterator for &'a Foo {
|
||||
type Item = &'a i32;
|
||||
|
||||
type IntoIter = std::slice::Iter<'a, i32>;
|
||||
|
||||
fn into_iter(self) -> Self::IntoIter {
|
||||
self.0.as_slice().iter()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -265,3 +265,23 @@ where
|
|||
Self { _kv: None }
|
||||
}
|
||||
}
|
||||
|
||||
mod issue15778 {
|
||||
pub struct Foo(Vec<i32>);
|
||||
|
||||
impl Foo {
|
||||
pub fn new() -> Self {
|
||||
Self(Vec::new())
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> IntoIterator for &'a Foo {
|
||||
type Item = &'a i32;
|
||||
|
||||
type IntoIter = std::slice::Iter<'a, i32>;
|
||||
|
||||
fn into_iter(self) -> Self::IntoIter {
|
||||
self.0.as_slice().iter()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue