about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2018-09-13 05:11:13 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2018-09-13 05:11:13 +0300
commit2b3e98f4e389ddec4f4ebea4b500cffd73f4928a (patch)
treea8421aa3c41628ddb964d1ff2785241d7f64c4cd /src/test
parent1b6be5a1ca6a699bfaa26947f905efbb665039a5 (diff)
downloadrust-2b3e98f4e389ddec4f4ebea4b500cffd73f4928a.tar.gz
rust-2b3e98f4e389ddec4f4ebea4b500cffd73f4928a.zip
resolve: Future proof derive helper attributes
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui-fulldeps/proc-macro/auxiliary/derive-helper-shadowing.rs16
-rw-r--r--src/test/ui-fulldeps/proc-macro/auxiliary/issue-53481.rs12
-rw-r--r--src/test/ui-fulldeps/proc-macro/derive-helper-shadowing.rs10
-rw-r--r--src/test/ui-fulldeps/proc-macro/derive-helper-shadowing.stderr21
-rw-r--r--src/test/ui-fulldeps/proc-macro/issue-53481.rs22
5 files changed, 81 insertions, 0 deletions
diff --git a/src/test/ui-fulldeps/proc-macro/auxiliary/derive-helper-shadowing.rs b/src/test/ui-fulldeps/proc-macro/auxiliary/derive-helper-shadowing.rs
new file mode 100644
index 00000000000..0fd8aa5638a
--- /dev/null
+++ b/src/test/ui-fulldeps/proc-macro/auxiliary/derive-helper-shadowing.rs
@@ -0,0 +1,16 @@
+// no-prefer-dynamic
+
+#![crate_type = "proc-macro"]
+
+extern crate proc_macro;
+use proc_macro::*;
+
+#[proc_macro_attribute]
+pub fn my_attr(_: TokenStream, input: TokenStream) -> TokenStream {
+    input
+}
+
+#[proc_macro_derive(MyTrait, attributes(my_attr))]
+pub fn derive(input: TokenStream) -> TokenStream {
+    TokenStream::new()
+}
diff --git a/src/test/ui-fulldeps/proc-macro/auxiliary/issue-53481.rs b/src/test/ui-fulldeps/proc-macro/auxiliary/issue-53481.rs
new file mode 100644
index 00000000000..9554cdde490
--- /dev/null
+++ b/src/test/ui-fulldeps/proc-macro/auxiliary/issue-53481.rs
@@ -0,0 +1,12 @@
+// no-prefer-dynamic
+
+#![crate_type = "proc-macro"]
+
+extern crate proc_macro;
+
+use proc_macro::*;
+
+#[proc_macro_derive(MyTrait, attributes(my_attr))]
+pub fn foo(_: TokenStream) -> TokenStream {
+    TokenStream::new()
+}
diff --git a/src/test/ui-fulldeps/proc-macro/derive-helper-shadowing.rs b/src/test/ui-fulldeps/proc-macro/derive-helper-shadowing.rs
new file mode 100644
index 00000000000..c2357d501ee
--- /dev/null
+++ b/src/test/ui-fulldeps/proc-macro/derive-helper-shadowing.rs
@@ -0,0 +1,10 @@
+// aux-build:derive-helper-shadowing.rs
+
+extern crate derive_helper_shadowing;
+use derive_helper_shadowing::*;
+
+#[derive(MyTrait)]
+#[my_attr] //~ ERROR `my_attr` is ambiguous
+struct S;
+
+fn main() {}
diff --git a/src/test/ui-fulldeps/proc-macro/derive-helper-shadowing.stderr b/src/test/ui-fulldeps/proc-macro/derive-helper-shadowing.stderr
new file mode 100644
index 00000000000..d597b577bb7
--- /dev/null
+++ b/src/test/ui-fulldeps/proc-macro/derive-helper-shadowing.stderr
@@ -0,0 +1,21 @@
+error[E0659]: `my_attr` is ambiguous
+  --> $DIR/derive-helper-shadowing.rs:7:3
+   |
+LL | #[my_attr] //~ ERROR `my_attr` is ambiguous
+   |   ^^^^^^^ ambiguous name
+   |
+note: `my_attr` could refer to the name imported here
+  --> $DIR/derive-helper-shadowing.rs:4:5
+   |
+LL | use derive_helper_shadowing::*;
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
+note: `my_attr` could also refer to the name defined here
+  --> $DIR/derive-helper-shadowing.rs:6:10
+   |
+LL | #[derive(MyTrait)]
+   |          ^^^^^^^
+   = note: consider adding an explicit import of `my_attr` to disambiguate
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0659`.
diff --git a/src/test/ui-fulldeps/proc-macro/issue-53481.rs b/src/test/ui-fulldeps/proc-macro/issue-53481.rs
new file mode 100644
index 00000000000..479fd1db630
--- /dev/null
+++ b/src/test/ui-fulldeps/proc-macro/issue-53481.rs
@@ -0,0 +1,22 @@
+// compile-pass
+// aux-build:issue-53481.rs
+
+#[macro_use]
+extern crate issue_53481;
+
+mod m1 {
+    use m2::MyTrait;
+
+    #[derive(MyTrait)]
+    struct A {}
+}
+
+mod m2 {
+    pub type MyTrait = u8;
+
+    #[derive(MyTrait)]
+    #[my_attr]
+    struct B {}
+}
+
+fn main() {}