]> git.lizzy.rs Git - rust.git/commitdiff
Add test for #34721
authorEsteban Küber <esteban@kuber.com.ar>
Thu, 3 Jan 2019 00:56:45 +0000 (16:56 -0800)
committerEsteban Küber <esteban@kuber.com.ar>
Thu, 24 Jan 2019 18:36:50 +0000 (10:36 -0800)
src/test/ui/issues/issue-34721.rs [new file with mode: 0644]
src/test/ui/issues/issue-34721.stderr [new file with mode: 0644]

diff --git a/src/test/ui/issues/issue-34721.rs b/src/test/ui/issues/issue-34721.rs
new file mode 100644 (file)
index 0000000..226c214
--- /dev/null
@@ -0,0 +1,34 @@
+#![feature(nll)]
+
+pub trait Foo {
+    fn zero(self) -> Self;
+}
+
+impl Foo for u32 {
+    fn zero(self) -> u32 { 0u32 }
+}
+
+pub mod bar {
+    pub use Foo;
+    pub fn bar<T: Foo>(x: T) -> T {
+      x.zero()
+    }
+}
+
+mod baz {
+    use bar;
+    use Foo;
+    pub fn baz<T: Foo>(x: T) -> T {
+        if 0 == 1 {
+            bar::bar(x.zero())
+        } else {
+            x.zero()
+        };
+        x.zero()
+        //~^ ERROR use of moved value
+    }
+}
+
+fn main() {
+    let _ = baz::baz(0u32);
+}
diff --git a/src/test/ui/issues/issue-34721.stderr b/src/test/ui/issues/issue-34721.stderr
new file mode 100644 (file)
index 0000000..b4e274b
--- /dev/null
@@ -0,0 +1,18 @@
+error[E0382]: use of moved value: `x`
+  --> $DIR/issue-34721.rs:27:9
+   |
+LL |     pub fn baz<T: Foo>(x: T) -> T {
+   |                        - move occurs because `x` has type `T`, which does not implement the `Copy` trait
+LL |         if 0 == 1 {
+LL |             bar::bar(x.zero())
+   |                      - value moved here
+LL |         } else {
+LL |             x.zero()
+   |             - value moved here
+LL |         };
+LL |         x.zero()
+   |         ^ value used here after move
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0382`.