]> git.lizzy.rs Git - rust.git/blob - src/test/ui/consts/const-variant-count.rs
Do not suggest `let_else` if no bindings would be introduced
[rust.git] / src / test / ui / consts / const-variant-count.rs
1 // run-pass
2 #![allow(dead_code, enum_intrinsics_non_enums)]
3 #![feature(variant_count)]
4 #![feature(never_type)]
5
6 use std::mem::variant_count;
7
8 enum Void {}
9
10 enum Foo {
11     A,
12     B,
13     C,
14 }
15
16 enum Bar {
17     A,
18     B,
19     C,
20     D(usize),
21     E { field_1: usize, field_2: Foo },
22 }
23
24 struct Baz {
25     a: u32,
26     b: *const u8,
27 }
28
29 const TEST_VOID: usize = variant_count::<Void>();
30 const TEST_FOO: usize = variant_count::<Foo>();
31 const TEST_BAR: usize = variant_count::<Bar>();
32
33 const NO_ICE_STRUCT: usize = variant_count::<Baz>();
34 const NO_ICE_BOOL: usize = variant_count::<bool>();
35 const NO_ICE_PRIM: usize = variant_count::<*const u8>();
36
37 fn main() {
38     assert_eq!(TEST_VOID, 0);
39     assert_eq!(TEST_FOO, 3);
40     assert_eq!(TEST_BAR, 5);
41     assert_eq!(variant_count::<Void>(), 0);
42     assert_eq!(variant_count::<Foo>(), 3);
43     assert_eq!(variant_count::<Bar>(), 5);
44     assert_eq!(variant_count::<Option<char>>(), 2);
45     assert_eq!(variant_count::<Option<!>>(), 2);
46     assert_eq!(variant_count::<Result<!, !>>(), 2);
47 }