|  | //! 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[..]); | 
|  | } |