]>
Commit | Line | Data |
---|---|---|
60c5eb7d | 1 | // check-pass |
532ac7d7 | 2 | // aux-build:macro-crate-test.rs |
d9579d0f AL |
3 | // ignore-stage1 |
4 | ||
9fa01778 | 5 | #![feature(rustc_attrs)] |
d9579d0f AL |
6 | |
7 | #[macro_use] | |
d9579d0f AL |
8 | extern crate macro_crate_test; |
9 | ||
10 | // The duplicate macro will create a copy of the item with the given identifier. | |
11 | ||
8faf50e0 | 12 | #[rustc_duplicate(MyCopy)] |
d9579d0f AL |
13 | struct MyStruct { |
14 | number: i32 | |
15 | } | |
16 | ||
17 | trait TestTrait { | |
8faf50e0 | 18 | #[rustc_duplicate(TestType2)] |
d9579d0f AL |
19 | type TestType; |
20 | ||
8faf50e0 | 21 | #[rustc_duplicate(required_fn2)] |
d9579d0f AL |
22 | fn required_fn(&self); |
23 | ||
8faf50e0 | 24 | #[rustc_duplicate(provided_fn2)] |
d9579d0f AL |
25 | fn provided_fn(&self) { } |
26 | } | |
27 | ||
28 | impl TestTrait for MyStruct { | |
8faf50e0 | 29 | #[rustc_duplicate(TestType2)] |
d9579d0f AL |
30 | type TestType = f64; |
31 | ||
8faf50e0 | 32 | #[rustc_duplicate(required_fn2)] |
d9579d0f AL |
33 | fn required_fn(&self) { } |
34 | } | |
35 | ||
36 | fn main() { | |
37 | let s = MyStruct { number: 42 }; | |
38 | s.required_fn(); | |
39 | s.required_fn2(); | |
40 | s.provided_fn(); | |
41 | s.provided_fn2(); | |
42 | ||
43 | let s = MyCopy { number: 42 }; | |
44 | } |