diff --git a/src/test/compile-fail/issue-17780.rs b/src/test/compile-fail/borrow-immutable-upvar-mutation.rs similarity index 50% rename from src/test/compile-fail/issue-17780.rs rename to src/test/compile-fail/borrow-immutable-upvar-mutation.rs index 2072b2ee2d2..f748c400654 100644 --- a/src/test/compile-fail/issue-17780.rs +++ b/src/test/compile-fail/borrow-immutable-upvar-mutation.rs @@ -10,41 +10,32 @@ #![feature(unboxed_closures, overloaded_calls)] +// Tests that we can't assign to or mutably borrow upvars from `Fn` +// closures (issue #17780) + fn set(x: &mut uint) { *x = 5; } fn main() { // By-ref captures { let mut x = 0u; - let _f = |&:| x = 42; - //~^ ERROR cannot assign to data in a free - // variable from an immutable unboxed closure + let _f = |&:| x = 42; //~ ERROR cannot assign let mut y = 0u; - let _g = |&:| set(&mut y); - //~^ ERROR cannot borrow data mutably in a free - // variable from an immutable unboxed closure + let _g = |&:| set(&mut y); //~ ERROR cannot borrow let mut z = 0u; - let _h = |&mut:| { set(&mut z); |&:| z = 42; }; - //~^ ERROR cannot assign to data in a - // free variable from an immutable unboxed closure + let _h = |&mut:| { set(&mut z); |&:| z = 42; }; //~ ERROR cannot assign } // By-value captures { let mut x = 0u; - let _f = move |&:| x = 42; - //~^ ERROR cannot assign to data in a free - // variable from an immutable unboxed closure + let _f = move |&:| x = 42; //~ ERROR cannot assign let mut y = 0u; - let _g = move |&:| set(&mut y); - //~^ ERROR cannot borrow data mutably in a free - // variable from an immutable unboxed closure + let _g = move |&:| set(&mut y); //~ ERROR cannot borrow let mut z = 0u; - let _h = move |&mut:| { set(&mut z); move |&:| z = 42; }; - //~^ ERROR cannot assign to data in a free - // variable from an immutable unboxed closure + let _h = move |&mut:| { set(&mut z); move |&:| z = 42; }; //~ ERROR cannot assign } }