// run-pass

fn test_int() {
    fn f() -> isize { 10 }
    assert_eq!(f(), 10);
}

fn test_vec() {
    fn f() -> Vec<isize> { vec![10, 11] }
    let vect = f();
    assert_eq!(vect[1], 11);
}

fn test_generic() {
    fn f<T>(t: T) -> T { t }
    assert_eq!(f(10), 10);
}

fn test_alt() {
    fn f() -> isize { match true { false => { 10 } true => { 20 } } }
    assert_eq!(f(), 20);
}

fn test_if() {
    fn f() -> isize { if true { 10 } else { 20 } }
    assert_eq!(f(), 10);
}

fn test_block() {
    fn f() -> isize { { 10 } }
    assert_eq!(f(), 10);
}

fn test_ret() {
    fn f() -> isize {
        return 10 // no semi

    }
    assert_eq!(f(), 10);
}


// From issue #372
fn test_372() {
    fn f() -> isize { let x = { 3 }; x }
    assert_eq!(f(), 3);
}

fn test_nil() { () }

pub fn main() {
    test_int();
    test_vec();
    test_generic();
    test_alt();
    test_if();
    test_block();
    test_ret();
    test_372();
    test_nil();
}
