diff options
| author | bors <bors@rust-lang.org> | 2015-12-16 16:10:26 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-12-16 16:10:26 +0000 |
| commit | 073b0f9b852fa8b14ea4ab8c5a724043eb39fce5 (patch) | |
| tree | b0408d343a439f749c03adbbadfd1afab0c2b002 /src/test | |
| parent | d4ffaf6f836e6ff8260548041bd1dc9d8bd146f9 (diff) | |
| parent | 2b1536129827dbad754388695558ac37de063941 (diff) | |
Auto merge of #30337 - wesleywiser:mir_switch, r=nikomatsakis
Fixes #29574
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/run-pass/mir_trans_switch.rs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/test/run-pass/mir_trans_switch.rs b/src/test/run-pass/mir_trans_switch.rs new file mode 100644 index 00000000000..c32d9da724d --- /dev/null +++ b/src/test/run-pass/mir_trans_switch.rs @@ -0,0 +1,48 @@ +// Copyright 2015 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![feature(rustc_attrs)] + +enum Abc { + A(u8), + B(i8), + C, + D, +} + +#[rustc_mir] +fn foo(x: Abc) -> i32 { + match x { + Abc::C => 3, + Abc::D => 4, + Abc::B(_) => 2, + Abc::A(_) => 1, + } +} + +#[rustc_mir] +fn foo2(x: Abc) -> bool { + match x { + Abc::D => true, + _ => false + } +} + +fn main() { + assert_eq!(1, foo(Abc::A(42))); + assert_eq!(2, foo(Abc::B(-100))); + assert_eq!(3, foo(Abc::C)); + assert_eq!(4, foo(Abc::D)); + + assert_eq!(false, foo2(Abc::A(1))); + assert_eq!(false, foo2(Abc::B(2))); + assert_eq!(false, foo2(Abc::C)); + assert_eq!(true, foo2(Abc::D)); +} |
