]> git.lizzy.rs Git - rust.git/blob - tests/ui/proc-macro/macro-crate-multi-decorator.rs
Rollup merge of #107576 - P1n3appl3:master, r=tmandry
[rust.git] / tests / ui / proc-macro / macro-crate-multi-decorator.rs
1 // The duplicate macro will create a copy of the item with the given identifier.
2
3 // check-pass
4 // aux-build:duplicate.rs
5
6 #[macro_use]
7 extern crate duplicate;
8
9 #[duplicate(MyCopy)]
10 struct MyStruct {
11     number: i32,
12 }
13
14 trait TestTrait {
15     #[duplicate(TestType2)]
16     type TestType;
17
18     #[duplicate(required_fn2)]
19     fn required_fn(&self);
20
21     #[duplicate(provided_fn2)]
22     fn provided_fn(&self) {}
23 }
24
25 impl TestTrait for MyStruct {
26     #[duplicate(TestType2)]
27     type TestType = f64;
28
29     #[duplicate(required_fn2)]
30     fn required_fn(&self) {}
31 }
32
33 fn main() {
34     let s = MyStruct { number: 42 };
35     s.required_fn();
36     s.required_fn2();
37     s.provided_fn();
38     s.provided_fn2();
39
40     let s = MyCopy { number: 42 };
41 }