1
Fork 0

dbg_macro: feature gate + move semantics test.

This commit is contained in:
Mazdak Farrokhzad 2018-09-18 04:25:09 +02:00
parent 000be8fe83
commit cbb81bd856
5 changed files with 89 additions and 0 deletions

View file

@ -0,0 +1,5 @@
// Feature gate test for `dbg!(..)`.
fn main() {
dbg!(1);
}

View file

@ -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`.

View file

@ -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`.

View file

@ -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);
}

View file

@ -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`.