diff options
Diffstat (limited to 'tests/ui/hashmap/hashset-enum-variant.rs')
| -rw-r--r-- | tests/ui/hashmap/hashset-enum-variant.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/ui/hashmap/hashset-enum-variant.rs b/tests/ui/hashmap/hashset-enum-variant.rs new file mode 100644 index 00000000000..39a59d3a39b --- /dev/null +++ b/tests/ui/hashmap/hashset-enum-variant.rs @@ -0,0 +1,32 @@ +//! Check for correct initialization of `HashSet` with enums. This is a regression test for a +//! codegen bug that caused the `HashSet` to appear as if it contained one of each enum variant. +//! +//! Regression test for <https://github.com/rust-lang/rust/issues/42918> + +//@ run-pass +//@ compile-flags: -O + +#![allow(dead_code)] + +use std::collections::HashSet; + +#[derive(PartialEq, Debug, Hash, Eq, Clone, PartialOrd, Ord)] +enum MyEnum { + E0, + E1, + E2, + E3, + E4, + E5, + E6, + E7, +} + +fn main() { + use MyEnum::*; + let s: HashSet<_> = [E4, E1].iter().cloned().collect(); + let mut v: Vec<_> = s.into_iter().collect(); + v.sort(); + + assert_eq!([E1, E4], &v[..]); +} |
