summaryrefslogtreecommitdiffstats
path: root/src/test/ui/liveness
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/liveness')
-rw-r--r--src/test/ui/liveness/liveness-move-call-arg.stderr16
-rw-r--r--src/test/ui/liveness/liveness-move-in-loop.stderr14
-rw-r--r--src/test/ui/liveness/liveness-move-in-while.stderr12
-rw-r--r--src/test/ui/liveness/liveness-use-after-move.stderr4
-rw-r--r--src/test/ui/liveness/liveness-use-after-send.stderr9
5 files changed, 53 insertions, 2 deletions
diff --git a/src/test/ui/liveness/liveness-move-call-arg.stderr b/src/test/ui/liveness/liveness-move-call-arg.stderr
index 7c0e916ed..d14cd6cb4 100644
--- a/src/test/ui/liveness/liveness-move-call-arg.stderr
+++ b/src/test/ui/liveness/liveness-move-call-arg.stderr
@@ -3,9 +3,23 @@ error[E0382]: use of moved value: `x`
|
LL | let x: Box<isize> = Box::new(25);
| - move occurs because `x` has type `Box<isize>`, which does not implement the `Copy` trait
-...
+LL |
+LL | loop {
+ | ---- inside of this loop
LL | take(x);
| ^ value moved here, in previous iteration of loop
+ |
+note: consider changing this parameter type in function `take` to borrow instead if owning the value isn't necessary
+ --> $DIR/liveness-move-call-arg.rs:1:13
+ |
+LL | fn take(_x: Box<isize>) {}
+ | ---- ^^^^^^^^^^ this parameter takes ownership of the value
+ | |
+ | in this function
+help: consider cloning the value if the performance cost is acceptable
+ |
+LL | take(x.clone());
+ | ++++++++
error: aborting due to previous error
diff --git a/src/test/ui/liveness/liveness-move-in-loop.stderr b/src/test/ui/liveness/liveness-move-in-loop.stderr
index 832d4f8fa..a060914f1 100644
--- a/src/test/ui/liveness/liveness-move-in-loop.stderr
+++ b/src/test/ui/liveness/liveness-move-in-loop.stderr
@@ -4,8 +4,22 @@ error[E0382]: use of moved value: `y`
LL | let y: Box<isize> = 42.into();
| - move occurs because `y` has type `Box<isize>`, which does not implement the `Copy` trait
...
+LL | loop {
+ | ---- inside of this loop
+LL | println!("{}", y);
+LL | loop {
+ | ---- inside of this loop
+LL | loop {
+ | ---- inside of this loop
+LL | loop {
+ | ---- inside of this loop
LL | x = y;
| ^ value moved here, in previous iteration of loop
+ |
+help: consider cloning the value if the performance cost is acceptable
+ |
+LL | x = y.clone();
+ | ++++++++
error: aborting due to previous error
diff --git a/src/test/ui/liveness/liveness-move-in-while.stderr b/src/test/ui/liveness/liveness-move-in-while.stderr
index b04a05fe4..4dff7447d 100644
--- a/src/test/ui/liveness/liveness-move-in-while.stderr
+++ b/src/test/ui/liveness/liveness-move-in-while.stderr
@@ -24,12 +24,22 @@ error[E0382]: borrow of moved value: `y`
LL | let y: Box<isize> = 42.into();
| - move occurs because `y` has type `Box<isize>`, which does not implement the `Copy` trait
...
+LL | loop {
+ | ---- inside of this loop
LL | println!("{}", y);
| ^ value borrowed here after move
LL | while true { while true { while true { x = y; x.clone(); } } }
- | - value moved here, in previous iteration of loop
+ | ---------- ---------- ---------- - value moved here, in previous iteration of loop
+ | | | |
+ | | | inside of this loop
+ | | inside of this loop
+ | inside of this loop
|
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
+help: consider cloning the value if the performance cost is acceptable
+ |
+LL | while true { while true { while true { x = y.clone(); x.clone(); } } }
+ | ++++++++
error: aborting due to previous error; 3 warnings emitted
diff --git a/src/test/ui/liveness/liveness-use-after-move.stderr b/src/test/ui/liveness/liveness-use-after-move.stderr
index 218b93c8e..3accba197 100644
--- a/src/test/ui/liveness/liveness-use-after-move.stderr
+++ b/src/test/ui/liveness/liveness-use-after-move.stderr
@@ -10,6 +10,10 @@ LL | println!("{}", *x);
| ^^ value borrowed here after move
|
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
+help: consider cloning the value if the performance cost is acceptable
+ |
+LL | let y = x.clone();
+ | ++++++++
error: aborting due to previous error
diff --git a/src/test/ui/liveness/liveness-use-after-send.stderr b/src/test/ui/liveness/liveness-use-after-send.stderr
index 8edc0463f..65d55ca8f 100644
--- a/src/test/ui/liveness/liveness-use-after-send.stderr
+++ b/src/test/ui/liveness/liveness-use-after-send.stderr
@@ -8,7 +8,16 @@ LL | send(ch, message);
LL | println!("{}", message);
| ^^^^^^^ value borrowed here after move
|
+note: consider changing this parameter type in function `send` to borrow instead if owning the value isn't necessary
+ --> $DIR/liveness-use-after-send.rs:3:54
+ |
+LL | fn send<T:Send + std::fmt::Debug>(ch: Chan<T>, data: T) {
+ | ---- in this function ^ this parameter takes ownership of the value
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
+help: consider cloning the value if the performance cost is acceptable
+ |
+LL | send(ch, message.clone());
+ | ++++++++
error: aborting due to previous error