//@ run-pass

// Tests for using match as an expression

fn test_basic() {
    let mut rs: bool = match true { true => { true } false => { false } };
    assert!(rs);
    rs = match false { true => { false } false => { true } };
    assert!(rs);
}

fn test_inferrence() {
    let rs = match true { true => { true } false => { false } };
    assert!(rs);
}

fn test_alt_as_alt_head() {
    // Yeah, this is kind of confusing ...

    let rs =
        match match false { true => { true } false => { false } } {
          true => { false }
          false => { true }
        };
    assert!(rs);
}

fn test_alt_as_block_result() {
    let rs =
        match false {
          true => { false }
          false => { match true { true => { true } false => { false } } }
        };
    assert!(rs);
}

pub fn main() {
    test_basic();
    test_inferrence();
    test_alt_as_alt_head();
    test_alt_as_block_result();
}
