//@ run-pass
// Test that we can infer the "kind" of an unboxed closure based on
// the expected type.

// Test by-ref capture of environment in unboxed closure types

fn call_fn<F: Fn()>(f: F) {
    f()
}

fn call_fn_mut<F: FnMut()>(mut f: F) {
    f()
}

fn call_fn_once<F: FnOnce()>(f: F) {
    f()
}

fn main() {
    let mut x = 0_usize;
    let y = 2_usize;

    call_fn(|| assert_eq!(x, 0));
    call_fn_mut(|| x += y);
    call_fn_once(|| x += y);
    assert_eq!(x, y * 2);
}
