-#![feature(plugin)]
-#![plugin(clippy)]
+// aux-build:macro_rules.rs
#![allow(dead_code)]
#![allow(unused_variables)]
-#![deny(large_enum_variant)]
+#![warn(clippy::large_enum_variant)]
+
+#[macro_use]
+extern crate macro_rules;
enum LargeEnum {
A(i32),
- B([i32; 8000]), //~ ERROR large size difference between variants
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
- //~| SUGGESTION Box<[i32; 8000]>
+ B([i32; 8000]),
}
enum GenericEnumOk<T> {
enum GenericEnum2<T> {
A(i32),
B([i32; 8000]),
- C(T, [i32; 8000]), //~ ERROR large size difference between variants
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
+ C(T, [i32; 8000]),
}
trait SomeTrait {
}
enum LargeEnumGeneric<A: SomeTrait> {
- Var(A::Item), // regression test, this used to ICE
+ Var(A::Item),
}
enum LargeEnum2 {
VariantOk(i32, u32),
- ContainingLargeEnum(LargeEnum), //~ ERROR large size difference between variants
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
- //~| SUGGESTION Box<LargeEnum>
+ ContainingLargeEnum(LargeEnum),
}
+
enum LargeEnum3 {
- ContainingMoreThanOneField(i32, [i32; 8000], [i32; 9500]), //~ ERROR large size difference between variants
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
+ ContainingMoreThanOneField(i32, [i32; 8000], [i32; 9500]),
VoidVariant,
StructLikeLittle { x: i32, y: i32 },
}
enum LargeEnum4 {
VariantOk(i32, u32),
- StructLikeLarge { x: [i32; 8000], y: i32 }, //~ ERROR large size difference between variants
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
+ StructLikeLarge { x: [i32; 8000], y: i32 },
}
enum LargeEnum5 {
VariantOk(i32, u32),
- StructLikeLarge2 { //~ ERROR large size difference between variants
- x:
- [i32; 8000] //~ SUGGESTION Box<[i32; 8000]>
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
- },
+ StructLikeLarge2 { x: [i32; 8000] },
}
enum LargeEnumOk {
LargeB([i32; 8001]),
}
-fn main() {
+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]),
+}
+
+fn main() {
+ large_enum_variant!();
}