summaryrefslogtreecommitdiffstats
path: root/src/test/ui/proc-macro/macro-crate-multi-decorator.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/proc-macro/macro-crate-multi-decorator.rs')
-rw-r--r--src/test/ui/proc-macro/macro-crate-multi-decorator.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/test/ui/proc-macro/macro-crate-multi-decorator.rs b/src/test/ui/proc-macro/macro-crate-multi-decorator.rs
new file mode 100644
index 000000000..ec57dec14
--- /dev/null
+++ b/src/test/ui/proc-macro/macro-crate-multi-decorator.rs
@@ -0,0 +1,41 @@
+// The duplicate macro will create a copy of the item with the given identifier.
+
+// check-pass
+// aux-build:duplicate.rs
+
+#[macro_use]
+extern crate duplicate;
+
+#[duplicate(MyCopy)]
+struct MyStruct {
+ number: i32,
+}
+
+trait TestTrait {
+ #[duplicate(TestType2)]
+ type TestType;
+
+ #[duplicate(required_fn2)]
+ fn required_fn(&self);
+
+ #[duplicate(provided_fn2)]
+ fn provided_fn(&self) {}
+}
+
+impl TestTrait for MyStruct {
+ #[duplicate(TestType2)]
+ type TestType = f64;
+
+ #[duplicate(required_fn2)]
+ fn required_fn(&self) {}
+}
+
+fn main() {
+ let s = MyStruct { number: 42 };
+ s.required_fn();
+ s.required_fn2();
+ s.provided_fn();
+ s.provided_fn2();
+
+ let s = MyCopy { number: 42 };
+}