fn inside_closure(x: &mut i32) {
}

fn outside_closure_1(x: &mut i32) {
}

fn outside_closure_2(x: &i32) {
}

fn foo(a: &mut i32) {
    let bar = || {
        inside_closure(a)
    };
    outside_closure_1(a);
    //~^ ERROR cannot borrow `*a` as mutable because previous closure requires unique access

    outside_closure_2(a);
    //~^ ERROR cannot borrow `*a` as immutable because previous closure requires unique access

    drop(bar);
}

fn main() {
}