]>
Commit | Line | Data |
---|---|---|
b7449926 | 1 | // run-pass |
0bf4aa26 | 2 | #![allow(dead_code)] |
c34b1796 | 3 | |
1a4d82fc | 4 | pub fn main() { |
85aaf69f | 5 | let x = Some(3); |
1a4d82fc | 6 | if let Some(y) = x { |
85aaf69f | 7 | assert_eq!(y, 3); |
1a4d82fc | 8 | } else { |
6a06907d | 9 | panic!("`if let` panicked"); |
1a4d82fc JJ |
10 | } |
11 | let mut worked = false; | |
12 | if let Some(_) = x { | |
13 | worked = true; | |
14 | } | |
15 | assert!(worked); | |
c34b1796 | 16 | let clause: usize; |
1a4d82fc JJ |
17 | if let None = Some("test") { |
18 | clause = 1; | |
85aaf69f | 19 | } else if 4_usize > 5 { |
1a4d82fc JJ |
20 | clause = 2; |
21 | } else if let Ok(()) = Err::<(),&'static str>("test") { | |
22 | clause = 3; | |
23 | } else { | |
24 | clause = 4; | |
25 | } | |
85aaf69f | 26 | assert_eq!(clause, 4_usize); |
1a4d82fc | 27 | |
85aaf69f | 28 | if 3 > 4 { |
1a4d82fc | 29 | panic!("bad math"); |
85aaf69f | 30 | } else if let 1 = 2 { |
1a4d82fc JJ |
31 | panic!("bad pattern match"); |
32 | } | |
33 | ||
34 | enum Foo { | |
35 | One, | |
c34b1796 AL |
36 | Two(usize), |
37 | Three(String, isize) | |
1a4d82fc JJ |
38 | } |
39 | ||
85aaf69f | 40 | let foo = Foo::Three("three".to_string(), 42); |
1a4d82fc JJ |
41 | if let Foo::One = foo { |
42 | panic!("bad pattern match"); | |
43 | } else if let Foo::Two(_x) = foo { | |
44 | panic!("bad pattern match"); | |
45 | } else if let Foo::Three(s, _) = foo { | |
85aaf69f | 46 | assert_eq!(s, "three"); |
1a4d82fc JJ |
47 | } else { |
48 | panic!("bad else"); | |
49 | } | |
50 | ||
51 | if false { | |
52 | panic!("wat"); | |
85aaf69f | 53 | } else if let a@Foo::Two(_) = Foo::Two(42_usize) { |
1a4d82fc | 54 | if let Foo::Two(b) = a { |
85aaf69f | 55 | assert_eq!(b, 42_usize); |
1a4d82fc | 56 | } else { |
6a06907d | 57 | panic!("panic in nested `if let`"); |
1a4d82fc JJ |
58 | } |
59 | } | |
60 | } |