Rollup merge of #116812 - rmehri01:missing_copy_implementations_non_exhaustive, r=petrochenkov
Disable missing_copy_implementations lint on non_exhaustive types Fixes #116766
This commit is contained in:
commit
0653d7eebf
@ -677,6 +677,11 @@ impl<'tcx> LateLintPass<'tcx> for MissingCopyImplementations {
|
|||||||
if type_implements_negative_copy_modulo_regions(cx.tcx, ty, param_env) {
|
if type_implements_negative_copy_modulo_regions(cx.tcx, ty, param_env) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if def.is_variant_list_non_exhaustive()
|
||||||
|
|| def.variants().iter().any(|variant| variant.is_field_list_non_exhaustive())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// We shouldn't recommend implementing `Copy` on stateful things,
|
// We shouldn't recommend implementing `Copy` on stateful things,
|
||||||
// such as iterators.
|
// such as iterators.
|
||||||
|
25
tests/ui/lint/missing-copy-implementations-non-exhaustive.rs
Normal file
25
tests/ui/lint/missing-copy-implementations-non-exhaustive.rs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// Test for issue #116766.
|
||||||
|
// Ensure that we don't suggest impl'ing `Copy` for a type if it or at least one
|
||||||
|
// of it's variants are marked as `non_exhaustive`.
|
||||||
|
|
||||||
|
// check-pass
|
||||||
|
|
||||||
|
#![deny(missing_copy_implementations)]
|
||||||
|
|
||||||
|
#[non_exhaustive]
|
||||||
|
pub enum MyEnum {
|
||||||
|
A,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[non_exhaustive]
|
||||||
|
pub struct MyStruct {
|
||||||
|
foo: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum MyEnum2 {
|
||||||
|
#[non_exhaustive]
|
||||||
|
A,
|
||||||
|
B,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
Loading…
x
Reference in New Issue
Block a user