]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass-fulldeps/macro-crate-multi-decorator.rs
Auto merge of #54919 - alexcrichton:update-cargo, r=Mark-Simulacrum
[rust.git] / src / test / run-pass-fulldeps / macro-crate-multi-decorator.rs
1 // Copyright 2013-2015 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 #![allow(plugin_as_library)]
12 #![allow(dead_code)]
13 #![allow(unused_variables)]
14 #![allow(unused_imports)]
15 // aux-build:macro_crate_test.rs
16 // ignore-stage1
17
18 #![feature(plugin, rustc_attrs)]
19 #![plugin(macro_crate_test)]
20
21 #[macro_use]
22 #[no_link]
23 extern crate macro_crate_test;
24
25 // The duplicate macro will create a copy of the item with the given identifier.
26
27 #[rustc_duplicate(MyCopy)]
28 struct MyStruct {
29     number: i32
30 }
31
32 trait TestTrait {
33     #[rustc_duplicate(TestType2)]
34     type TestType;
35
36     #[rustc_duplicate(required_fn2)]
37     fn required_fn(&self);
38
39     #[rustc_duplicate(provided_fn2)]
40     fn provided_fn(&self) { }
41 }
42
43 impl TestTrait for MyStruct {
44     #[rustc_duplicate(TestType2)]
45     type TestType = f64;
46
47     #[rustc_duplicate(required_fn2)]
48     fn required_fn(&self) { }
49 }
50
51 fn main() {
52     let s = MyStruct { number: 42 };
53     s.required_fn();
54     s.required_fn2();
55     s.provided_fn();
56     s.provided_fn2();
57
58     let s = MyCopy { number: 42 };
59 }