]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass-fulldeps/macro-crate-multi-decorator.rs
Rollup merge of #56425 - scottmcm:redo-vec-set_len-docs, r=Centril
[rust.git] / src / test / run-pass-fulldeps / macro-crate-multi-decorator.rs
1 #![allow(plugin_as_library)]
2 #![allow(dead_code)]
3 #![allow(unused_variables)]
4 #![allow(unused_imports)]
5 // aux-build:macro_crate_test.rs
6 // ignore-stage1
7
8 #![feature(plugin, rustc_attrs)]
9 #![plugin(macro_crate_test)]
10
11 #[macro_use]
12 #[no_link]
13 extern crate macro_crate_test;
14
15 // The duplicate macro will create a copy of the item with the given identifier.
16
17 #[rustc_duplicate(MyCopy)]
18 struct MyStruct {
19     number: i32
20 }
21
22 trait TestTrait {
23     #[rustc_duplicate(TestType2)]
24     type TestType;
25
26     #[rustc_duplicate(required_fn2)]
27     fn required_fn(&self);
28
29     #[rustc_duplicate(provided_fn2)]
30     fn provided_fn(&self) { }
31 }
32
33 impl TestTrait for MyStruct {
34     #[rustc_duplicate(TestType2)]
35     type TestType = f64;
36
37     #[rustc_duplicate(required_fn2)]
38     fn required_fn(&self) { }
39 }
40
41 fn main() {
42     let s = MyStruct { number: 42 };
43     s.required_fn();
44     s.required_fn2();
45     s.provided_fn();
46     s.provided_fn2();
47
48     let s = MyCopy { number: 42 };
49 }