| //@ run-pass | |
| #![allow(dead_code)] | |
| enum FooMode { | |
| Check = 0x1001, | |
| } | |
| enum BarMode { | |
| Check = 0x2001, | |
| } | |
| enum Mode { | |
| Foo(FooMode), | |
| Bar(BarMode), | |
| } | |
| #[inline(never)] | |
| fn broken(mode: &Mode) -> u32 { | |
| for _ in 0..1 { | |
| if let Mode::Foo(FooMode::Check) = *mode { return 17 } | |
| if let Mode::Bar(BarMode::Check) = *mode { return 19 } | |
| } | |
| return 42; | |
| } | |
| fn main() { | |
| let mode = Mode::Bar(BarMode::Check); | |
| assert_eq!(broken(&mode), 19); | |
| } |