]> git.lizzy.rs Git - rust.git/commitdiff
dbg_macro: feature gate + move semantics test.
authorMazdak Farrokhzad <twingoow@gmail.com>
Tue, 18 Sep 2018 02:25:09 +0000 (04:25 +0200)
committerMazdak Farrokhzad <twingoow@gmail.com>
Thu, 20 Sep 2018 15:39:09 +0000 (17:39 +0200)
src/test/ui/rfc-2361-dbg-macro/dbg-macro-feature-gate.rs [new file with mode: 0755]
src/test/ui/rfc-2361-dbg-macro/dbg-macro-feature-gate.stderr [new file with mode: 0644]
src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.nll.stderr [new file with mode: 0644]
src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.rs [new file with mode: 0755]
src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.stderr [new file with mode: 0644]

diff --git a/src/test/ui/rfc-2361-dbg-macro/dbg-macro-feature-gate.rs b/src/test/ui/rfc-2361-dbg-macro/dbg-macro-feature-gate.rs
new file mode 100755 (executable)
index 0000000..b237c6f
--- /dev/null
@@ -0,0 +1,5 @@
+// Feature gate test for `dbg!(..)`.
+
+fn main() {
+    dbg!(1);
+}
diff --git a/src/test/ui/rfc-2361-dbg-macro/dbg-macro-feature-gate.stderr b/src/test/ui/rfc-2361-dbg-macro/dbg-macro-feature-gate.stderr
new file mode 100644 (file)
index 0000000..64df1e1
--- /dev/null
@@ -0,0 +1,11 @@
+error[E0658]: macro dbg! is unstable (see issue #54306)
+  --> $DIR/dbg-macro-feature-gate.rs:4:5
+   |
+LL |     dbg!(1);
+   |     ^^^^^^^^
+   |
+   = help: add #![feature(dbg_macro)] to the crate attributes to enable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.nll.stderr b/src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.nll.stderr
new file mode 100644 (file)
index 0000000..baeaad6
--- /dev/null
@@ -0,0 +1,36 @@
+error[E0382]: use of moved value: `a`
+  --> $DIR/dbg-macro-move-semantics.rs:11:18
+   |
+LL |     let _ = dbg!(a);
+   |             ------- value moved here
+LL |     let _ = dbg!(a);
+   |                  ^ value used here after move
+   |
+   = note: move occurs because `a` has type `NoCopy`, which does not implement the `Copy` trait
+   = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
+
+error[E0382]: borrow of moved value: `a`
+  --> $DIR/dbg-macro-move-semantics.rs:11:18
+   |
+LL |     let _ = dbg!(a);
+   |             ------- value moved here
+LL |     let _ = dbg!(a);
+   |                  ^ value borrowed here after move
+   |
+   = note: move occurs because `a` has type `NoCopy`, which does not implement the `Copy` trait
+   = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
+
+error[E0382]: use of moved value: `a`
+  --> $DIR/dbg-macro-move-semantics.rs:11:13
+   |
+LL |     let _ = dbg!(a);
+   |             ------- value moved here
+LL |     let _ = dbg!(a);
+   |             ^^^^^^^ value used here after move
+   |
+   = note: move occurs because `a` has type `NoCopy`, which does not implement the `Copy` trait
+   = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0382`.
diff --git a/src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.rs b/src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.rs
new file mode 100755 (executable)
index 0000000..bcf508d
--- /dev/null
@@ -0,0 +1,12 @@
+// Test ensuring that `dbg!(expr)` will take ownership of the argument.
+
+#![feature(dbg_macro)]
+
+#[derive(Debug)]
+struct NoCopy(usize);
+
+fn main() {
+    let a = NoCopy(0);
+    let _ = dbg!(a);
+    let _ = dbg!(a);
+}
diff --git a/src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.stderr b/src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.stderr
new file mode 100644 (file)
index 0000000..1064317
--- /dev/null
@@ -0,0 +1,25 @@
+error[E0382]: use of moved value: `a`
+  --> $DIR/dbg-macro-move-semantics.rs:11:18
+   |
+LL |     let _ = dbg!(a);
+   |             ------- value moved here
+LL |     let _ = dbg!(a);
+   |                  ^ value used here after move
+   |
+   = note: move occurs because `a` has type `NoCopy`, which does not implement the `Copy` trait
+   = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
+
+error[E0382]: use of moved value: `a`
+  --> $DIR/dbg-macro-move-semantics.rs:11:13
+   |
+LL |     let _ = dbg!(a);
+   |             ------- value moved here
+LL |     let _ = dbg!(a);
+   |             ^^^^^^^ value used here after move
+   |
+   = note: move occurs because `a` has type `NoCopy`, which does not implement the `Copy` trait
+   = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0382`.