blob: 401ad97e3b83c8f885f0d9fecd4b3ee611c933d6 [file] [log] [blame]
Vadim Petrochenkovfcf48522018-04-07 16:18:441// issue #46314
2
3#![feature(decl_macro)]
4
5#[derive(Debug)]
6struct NonCopy(String);
7
8struct Foo {
9 x: NonCopy,
10}
11
12macro copy_modern($foo: ident) {
13 $foo.x
14}
15
16macro_rules! copy_legacy {
17 ($foo: ident) => {
18 $foo.x //~ ERROR use of moved value: `foo.x`
19 }
20}
21
22fn assert_two_copies(a: NonCopy, b: NonCopy) {
23 println!("Got two copies: {:?}, {:?}", a, b);
24}
25
26fn main() {
27 let foo = Foo { x: NonCopy("foo".into()) };
28 assert_two_copies(copy_modern!(foo), foo.x); //~ ERROR use of moved value: `foo.x`
29 assert_two_copies(copy_legacy!(foo), foo.x); //~ ERROR use of moved value: `foo.x`
30}