-#![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 enum variant found
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
- //~| SUGGESTION Box<[i32; 8000]>
+ B([i32; 8000]),
+}
+
+enum GenericEnumOk<T> {
+ A(i32),
+ B([T; 8000]),
}
-enum GenericEnum<T> {
+enum GenericEnum2<T> {
A(i32),
- B([i32; 8000]), //~ ERROR large enum variant found
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
- //~| SUGGESTION Box<[i32; 8000]>
- C([T; 8000]),
- D(T, [i32; 8000]), //~ ERROR large enum variant found
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
+ B([i32; 8000]),
+ C(T, [i32; 8000]),
}
trait SomeTrait {
}
enum LargeEnumGeneric<A: SomeTrait> {
- Var(A::Item), // regression test, this used to ICE
+ Var(A::Item),
}
-enum AnotherLargeEnum {
+enum LargeEnum2 {
VariantOk(i32, u32),
- ContainingLargeEnum(LargeEnum), //~ ERROR large enum variant found
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
- //~| SUGGESTION Box<LargeEnum>
- ContainingMoreThanOneField(i32, [i32; 8000], [i32; 9500]), //~ ERROR large enum variant found
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
+ ContainingLargeEnum(LargeEnum),
+}
+
+enum LargeEnum3 {
+ ContainingMoreThanOneField(i32, [i32; 8000], [i32; 9500]),
VoidVariant,
StructLikeLittle { x: i32, y: i32 },
- StructLikeLarge { x: [i32; 8000], y: i32 }, //~ ERROR large enum variant found
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
- StructLikeLarge2 { //~ ERROR large enum variant found
- x:
- [i32; 8000] //~ SUGGESTION Box<[i32; 8000]>
- //~^ HELP consider boxing the large fields to reduce the total size of the enum
- },
}
-fn main() {
+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]),
+}
+
+fn main() {
+ large_enum_variant!();
}