diff options
| author | kennytm <kennytm@gmail.com> | 2017-10-13 23:38:01 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-10-13 23:38:01 +0800 |
| commit | 2a6a4e7045274c129c97d68a0d6651225de9aa42 (patch) | |
| tree | 27ed82e0519739520facab8ed8c3015e138f87ba /src/test/ui/suggestions | |
| parent | 9b128e40652cbf369388df07e17eec9dd91f56e7 (diff) | |
| parent | fab6a10c00ffda25ed9ec3195b28a9f6a58150a4 (diff) | |
| download | rust-2a6a4e7045274c129c97d68a0d6651225de9aa42.tar.gz rust-2a6a4e7045274c129c97d68a0d6651225de9aa42.zip | |
Rollup merge of #45221 - estebank:issue-41790, r=nikomatsakis
Point at immutable outer variable When attempting to mutate an immutable outer variable from a closure, point at the outer variable and suggest making it mutable. Fix #41790.
Diffstat (limited to 'src/test/ui/suggestions')
| -rw-r--r-- | src/test/ui/suggestions/closure-immutable-outer-variable.rs | 20 | ||||
| -rw-r--r-- | src/test/ui/suggestions/closure-immutable-outer-variable.stderr | 10 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/test/ui/suggestions/closure-immutable-outer-variable.rs b/src/test/ui/suggestions/closure-immutable-outer-variable.rs new file mode 100644 index 00000000000..fe8e2bc6c8e --- /dev/null +++ b/src/test/ui/suggestions/closure-immutable-outer-variable.rs @@ -0,0 +1,20 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Point at the captured immutable outer variable + +fn foo(mut f: Box<FnMut()>) { + f(); +} + +fn main() { + let y = true; + foo(Box::new(move || y = false) as Box<_>); +} diff --git a/src/test/ui/suggestions/closure-immutable-outer-variable.stderr b/src/test/ui/suggestions/closure-immutable-outer-variable.stderr new file mode 100644 index 00000000000..19f1cd07171 --- /dev/null +++ b/src/test/ui/suggestions/closure-immutable-outer-variable.stderr @@ -0,0 +1,10 @@ +error[E0594]: cannot assign to captured outer variable in an `FnMut` closure + --> $DIR/closure-immutable-outer-variable.rs:19:26 + | +18 | let y = true; + | - help: consider making `y` mutable: `mut y` +19 | foo(Box::new(move || y = false) as Box<_>); + | ^^^^^^^^^ + +error: aborting due to previous error + |
