diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-09-13 05:11:13 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-09-13 05:11:13 +0300 |
| commit | 2b3e98f4e389ddec4f4ebea4b500cffd73f4928a (patch) | |
| tree | a8421aa3c41628ddb964d1ff2785241d7f64c4cd /src/test | |
| parent | 1b6be5a1ca6a699bfaa26947f905efbb665039a5 (diff) | |
| download | rust-2b3e98f4e389ddec4f4ebea4b500cffd73f4928a.tar.gz rust-2b3e98f4e389ddec4f4ebea4b500cffd73f4928a.zip | |
resolve: Future proof derive helper attributes
Diffstat (limited to 'src/test')
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() {} |
