diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2019-12-11 23:04:29 +0900 |
|---|---|---|
| committer | Yuki Okushi <huyuumi.dev@gmail.com> | 2019-12-12 11:13:13 +0900 |
| commit | fa199c5f27cf09fa02ff7632a713ea613f731944 (patch) | |
| tree | c149b12b4369fec714d85fcf026475b30460f0d5 /src/test | |
| parent | 27d6f55f47e8875e71083a28ed84ea5a88e1b596 (diff) | |
| download | rust-fa199c5f27cf09fa02ff7632a713ea613f731944.tar.gz rust-fa199c5f27cf09fa02ff7632a713ea613f731944.zip | |
Don't suggest wrong snippet in closure
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/suggestions/option-content-move2.rs | 16 | ||||
| -rw-r--r-- | src/test/ui/suggestions/option-content-move2.stderr | 18 |
2 files changed, 34 insertions, 0 deletions
diff --git a/src/test/ui/suggestions/option-content-move2.rs b/src/test/ui/suggestions/option-content-move2.rs new file mode 100644 index 00000000000..88e8a5b7aee --- /dev/null +++ b/src/test/ui/suggestions/option-content-move2.rs @@ -0,0 +1,16 @@ +struct NotCopyable; + +fn func<F: FnMut() -> H, H: FnMut()>(_: F) {} + +fn parse() { + let mut var = None; + func(|| { + // Shouldn't suggest `move ||.as_ref()` here + move || { + //~^ ERROR: cannot move out of `var` + var = Some(NotCopyable); + } + }); +} + +fn main() {} diff --git a/src/test/ui/suggestions/option-content-move2.stderr b/src/test/ui/suggestions/option-content-move2.stderr new file mode 100644 index 00000000000..71f745374e5 --- /dev/null +++ b/src/test/ui/suggestions/option-content-move2.stderr @@ -0,0 +1,18 @@ +error[E0507]: cannot move out of `var`, a captured variable in an `FnMut` closure + --> $DIR/option-content-move2.rs:9:9 + | +LL | let mut var = None; + | ------- captured outer variable +... +LL | move || { + | ^^^^^^^ move out of `var` occurs here +LL | +LL | var = Some(NotCopyable); + | --- + | | + | move occurs because `var` has type `std::option::Option<NotCopyable>`, which does not implement the `Copy` trait + | move occurs due to use in closure + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0507`. |
