diff options
Diffstat (limited to 'third_party/rust/enumset/tests/compile-fail')
-rw-r--r-- | third_party/rust/enumset/tests/compile-fail/variants.rs | 65 | ||||
-rw-r--r-- | third_party/rust/enumset/tests/compile-fail/variants.stderr | 77 |
2 files changed, 142 insertions, 0 deletions
diff --git a/third_party/rust/enumset/tests/compile-fail/variants.rs b/third_party/rust/enumset/tests/compile-fail/variants.rs new file mode 100644 index 0000000000..2b76a40897 --- /dev/null +++ b/third_party/rust/enumset/tests/compile-fail/variants.rs @@ -0,0 +1,65 @@ +use enumset::*; + +#[derive(EnumSetType)] +enum VariantOver127 { + Variant = 128, +} + +#[derive(EnumSetType)] +#[repr(i64)] +enum VariantOverU32 { + Variant = 0x100000000, +} + +#[derive(EnumSetType)] +enum TooManyVariants { + _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, + _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, + _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, + _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, _71, _72, _73, _74, _75, _76, _77, + _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, _94, _95, _96, + _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, + _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, +} + +#[derive(EnumSetType)] +enum NegativeVariant { + Variant = -1, +} + +#[derive(EnumSetType)] +#[repr(usize)] +enum BadRepr { + Variant, +} + +#[derive(EnumSetType)] +enum HasFields { + Variant(u32), +} + +#[derive(EnumSetType)] +#[enumset(serialize_repr = "u8")] +enum BadSerializationRepr { + Variant = 8, +} + +#[derive(EnumSetType)] +struct BadItemType { + +} + +#[derive(EnumSetType)] +#[enumset(repr = "u16")] +enum BadMemRepr { + Variant = 16, +} + +#[derive(EnumSetType)] +enum OkayEnumButCantUseFromRepr { + Variant, +} + +fn main() { + EnumSet::<OkayEnumButCantUseFromRepr>::from_repr(1); +} diff --git a/third_party/rust/enumset/tests/compile-fail/variants.stderr b/third_party/rust/enumset/tests/compile-fail/variants.stderr new file mode 100644 index 0000000000..d243048b92 --- /dev/null +++ b/third_party/rust/enumset/tests/compile-fail/variants.stderr @@ -0,0 +1,77 @@ +error: `#[derive(EnumSetType)]` currently only supports discriminants up to 127. + --> tests/compile-fail/variants.rs:5:5 + | +5 | Variant = 128, + | ^^^^^^^^^^^^^ + +error: Enum set discriminants must be `u32`s. (larger discrimiants are still unsupported with reprs that allow them.) + --> tests/compile-fail/variants.rs:11:15 + | +11 | Variant = 0x100000000, + | ^^^^^^^^^^^ + +error: `#[derive(EnumSetType)]` currently only supports enums up to 128 variants. + --> tests/compile-fail/variants.rs:22:95 + | +22 | _113, _114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, + | ^^^^ + +error: Enum set discriminants must be `u32`s. + --> tests/compile-fail/variants.rs:27:5 + | +27 | Variant = -1, + | ^^^^^^^^^^^^ + +error: `#[derive(EnumSetType)]` can only be used on fieldless enums. + --> tests/compile-fail/variants.rs:38:5 + | +38 | Variant(u32), + | ^^^^^^^^^^^^ + +error: serialize_repr cannot be smaller than bitset. + --> tests/compile-fail/variants.rs:41:10 + | +41 | #[derive(EnumSetType)] + | ^^^^^^^^^^^ + | + = note: this error originates in the derive macro `EnumSetType` (in Nightly builds, run with -Z macro-backtrace for more info) + +error: `#[derive(EnumSetType)]` may only be used on enums + --> tests/compile-fail/variants.rs:48:1 + | +48 | / struct BadItemType { +49 | | +50 | | } + | |_^ + +error: repr cannot be smaller than bitset. + --> tests/compile-fail/variants.rs:52:10 + | +52 | #[derive(EnumSetType)] + | ^^^^^^^^^^^ + | + = note: this error originates in the derive macro `EnumSetType` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0277]: the trait bound `OkayEnumButCantUseFromRepr: EnumSetTypeWithRepr` is not satisfied + --> tests/compile-fail/variants.rs:64:5 + | +64 | EnumSet::<OkayEnumButCantUseFromRepr>::from_repr(1); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `EnumSetTypeWithRepr` is not implemented for `OkayEnumButCantUseFromRepr` + | +note: required by a bound in `enumset::EnumSet::<T>::from_repr` + --> src/lib.rs + | + | where T: EnumSetTypeWithRepr { + | ^^^^^^^^^^^^^^^^^^^ required by this bound in `enumset::EnumSet::<T>::from_repr` + +error[E0277]: the trait bound `OkayEnumButCantUseFromRepr: EnumSetTypeWithRepr` is not satisfied + --> tests/compile-fail/variants.rs:64:5 + | +64 | EnumSet::<OkayEnumButCantUseFromRepr>::from_repr(1); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `EnumSetTypeWithRepr` is not implemented for `OkayEnumButCantUseFromRepr` + +error[E0277]: the trait bound `OkayEnumButCantUseFromRepr: EnumSetTypeWithRepr` is not satisfied + --> tests/compile-fail/variants.rs:64:54 + | +64 | EnumSet::<OkayEnumButCantUseFromRepr>::from_repr(1); + | ^ the trait `EnumSetTypeWithRepr` is not implemented for `OkayEnumButCantUseFromRepr` |