about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2018-09-18 04:25:09 +0200
committerMazdak Farrokhzad <twingoow@gmail.com>2018-09-20 17:39:09 +0200
commitcbb81bd8569a59cc4672d7ea1d504d5ee85531a5 (patch)
treee9d5aab4a8c0ce5f0256f8cd1721db1c7a09cf4f /src
parent000be8fe83a854796e55ed92458a7b70cc17c3a2 (diff)
downloadrust-cbb81bd8569a59cc4672d7ea1d504d5ee85531a5.tar.gz
rust-cbb81bd8569a59cc4672d7ea1d504d5ee85531a5.zip
dbg_macro: feature gate + move semantics test.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/test/ui/rfc-2361-dbg-macro/dbg-macro-feature-gate.rs5
-rw-r--r--src/test/ui/rfc-2361-dbg-macro/dbg-macro-feature-gate.stderr11
-rw-r--r--src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.nll.stderr36
-rwxr-xr-xsrc/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.rs12
-rw-r--r--src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.stderr25
5 files changed, 89 insertions, 0 deletions
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
index 00000000000..b237c6f147b
--- /dev/null
+++ b/src/test/ui/rfc-2361-dbg-macro/dbg-macro-feature-gate.rs
@@ -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
index 00000000000..64df1e196d2
--- /dev/null
+++ b/src/test/ui/rfc-2361-dbg-macro/dbg-macro-feature-gate.stderr
@@ -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
index 00000000000..baeaad6e58f
--- /dev/null
+++ b/src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.nll.stderr
@@ -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
index 00000000000..bcf508d9af5
--- /dev/null
+++ b/src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.rs
@@ -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
index 00000000000..10643174385
--- /dev/null
+++ b/src/test/ui/rfc-2361-dbg-macro/dbg-macro-move-semantics.stderr
@@ -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`.