summaryrefslogtreecommitdiffstats
path: root/third_party/rust/enumset/tests/compile-fail
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/enumset/tests/compile-fail')
-rw-r--r--third_party/rust/enumset/tests/compile-fail/variants.rs65
-rw-r--r--third_party/rust/enumset/tests/compile-fail/variants.stderr77
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`