]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass-fulldeps/macro-crate-multi-decorator.rs
Auto merge of #61421 - vorner:string-in-rc-into-raw-docs, r=RalfJung
[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(rustc_attrs)]
9
10 #[macro_use]
11 extern crate macro_crate_test;
12
13 // The duplicate macro will create a copy of the item with the given identifier.
14
15 #[rustc_duplicate(MyCopy)]
16 struct MyStruct {
17     number: i32
18 }
19
20 trait TestTrait {
21     #[rustc_duplicate(TestType2)]
22     type TestType;
23
24     #[rustc_duplicate(required_fn2)]
25     fn required_fn(&self);
26
27     #[rustc_duplicate(provided_fn2)]
28     fn provided_fn(&self) { }
29 }
30
31 impl TestTrait for MyStruct {
32     #[rustc_duplicate(TestType2)]
33     type TestType = f64;
34
35     #[rustc_duplicate(required_fn2)]
36     fn required_fn(&self) { }
37 }
38
39 fn main() {
40     let s = MyStruct { number: 42 };
41     s.required_fn();
42     s.required_fn2();
43     s.provided_fn();
44     s.provided_fn2();
45
46     let s = MyCopy { number: 42 };
47 }