diff options
Diffstat (limited to 'tests/ui/unboxed-closures/unboxed-closures-move-mutable.rs')
-rw-r--r-- | tests/ui/unboxed-closures/unboxed-closures-move-mutable.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/ui/unboxed-closures/unboxed-closures-move-mutable.rs b/tests/ui/unboxed-closures/unboxed-closures-move-mutable.rs new file mode 100644 index 000000000..470904fd3 --- /dev/null +++ b/tests/ui/unboxed-closures/unboxed-closures-move-mutable.rs @@ -0,0 +1,31 @@ +// run-pass +// pretty-expanded FIXME #23616 + +#![deny(unused_mut)] +#![allow(unused_must_use)] + +// Test that mutating a mutable upvar in a capture-by-value unboxed +// closure does not ice (issue #18238) and marks the upvar as used +// mutably so we do not get a spurious warning about it not needing to +// be declared mutable (issue #18336 and #18769) + +fn set(x: &mut usize) { *x = 42; } + +fn main() { + { + let mut x = 0_usize; + move || x += 1; //~ WARN unused variable: `x` + } + { + let mut x = 0_usize; + move || x += 1; //~ WARN unused variable: `x` + } + { + let mut x = 0_usize; + move || set(&mut x); + } + { + let mut x = 0_usize; + move || set(&mut x); + } +} |