diff options
Diffstat (limited to 'src/tools/clippy/tests/ui/large_enum_variant.rs')
-rw-r--r-- | src/tools/clippy/tests/ui/large_enum_variant.rs | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/src/tools/clippy/tests/ui/large_enum_variant.rs b/src/tools/clippy/tests/ui/large_enum_variant.rs new file mode 100644 index 000000000..23152a133 --- /dev/null +++ b/src/tools/clippy/tests/ui/large_enum_variant.rs @@ -0,0 +1,135 @@ +// aux-build:macro_rules.rs + +#![allow(dead_code)] +#![allow(unused_variables)] +#![warn(clippy::large_enum_variant)] + +#[macro_use] +extern crate macro_rules; + +enum LargeEnum { + A(i32), + B([i32; 8000]), +} + +enum GenericEnumOk<T> { + A(i32), + B([T; 8000]), +} + +enum GenericEnum2<T> { + A(i32), + B([i32; 8000]), + C(T, [i32; 8000]), +} + +trait SomeTrait { + type Item; +} + +enum LargeEnumGeneric<A: SomeTrait> { + Var(A::Item), +} + +enum LargeEnum2 { + VariantOk(i32, u32), + ContainingLargeEnum(LargeEnum), +} + +enum LargeEnum3 { + ContainingMoreThanOneField(i32, [i32; 8000], [i32; 9500]), + VoidVariant, + StructLikeLittle { x: i32, y: i32 }, +} + +enum LargeEnum4 { + VariantOk(i32, u32), + StructLikeLarge { x: [i32; 8000], y: i32 }, +} + +enum LargeEnum5 { + VariantOk(i32, u32), + StructLikeLarge2 { x: [i32; 8000] }, +} + +enum LargeEnumOk { + LargeA([i32; 8000]), + LargeB([i32; 8001]), +} + +enum LargeEnum6 { + A, + B([u8; 255]), + C([u8; 200]), +} + +enum LargeEnum7 { + A, + B([u8; 1255]), + C([u8; 200]), +} + +enum LargeEnum8 { + VariantOk(i32, u32), + ContainingMoreThanOneField([i32; 8000], [i32; 2], [i32; 9500], [i32; 30]), +} + +enum LargeEnum9 { + A(Struct<()>), + B(Struct2), +} + +enum LargeEnumOk2<T> { + A(T), + B(Struct2), +} + +enum LargeEnumOk3<T> { + A(Struct<T>), + B(Struct2), +} + +struct Struct<T> { + a: i32, + t: T, +} + +struct Struct2 { + a: [i32; 8000], +} + +#[derive(Copy, Clone)] +enum CopyableLargeEnum { + A(bool), + B([u128; 4000]), +} + +enum ManuallyCopyLargeEnum { + A(bool), + B([u128; 4000]), +} + +impl Clone for ManuallyCopyLargeEnum { + fn clone(&self) -> Self { + *self + } +} + +impl Copy for ManuallyCopyLargeEnum {} + +enum SomeGenericPossiblyCopyEnum<T> { + A(bool, std::marker::PhantomData<T>), + B([u64; 4000]), +} + +impl<T: Copy> Clone for SomeGenericPossiblyCopyEnum<T> { + fn clone(&self) -> Self { + *self + } +} + +impl<T: Copy> Copy for SomeGenericPossiblyCopyEnum<T> {} + +fn main() { + large_enum_variant!(); +} |