diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2020-02-17 22:47:40 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2020-02-17 22:47:59 +0300 |
| commit | 950845c5b1079c83e56db0ca2b4bb8fe050ee2f5 (patch) | |
| tree | 609802b69b03c2ebbd868a6aa132c3af79e63e49 /src | |
| parent | 06fbb0b4faefeaf70f4616d6af9bc0c1ebc69bc2 (diff) | |
| download | rust-950845c5b1079c83e56db0ca2b4bb8fe050ee2f5.tar.gz rust-950845c5b1079c83e56db0ca2b4bb8fe050ee2f5.zip | |
Add a test for proc macro generating `$ IDENT`
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/proc-macro/auxiliary/generate-dollar-ident.rs | 17 | ||||
| -rw-r--r-- | src/test/ui/proc-macro/generate-dollar-ident.rs | 18 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/test/ui/proc-macro/auxiliary/generate-dollar-ident.rs b/src/test/ui/proc-macro/auxiliary/generate-dollar-ident.rs new file mode 100644 index 00000000000..c9f0664c3a3 --- /dev/null +++ b/src/test/ui/proc-macro/auxiliary/generate-dollar-ident.rs @@ -0,0 +1,17 @@ +// force-host +// no-prefer-dynamic + +#![feature(proc_macro_hygiene)] +#![feature(proc_macro_quote)] +#![crate_type = "proc-macro"] + +extern crate proc_macro; +use proc_macro::*; + +#[proc_macro] +pub fn dollar_ident(input: TokenStream) -> TokenStream { + let black_hole = input.into_iter().next().unwrap(); + quote! { + $black_hole!($$var); + } +} diff --git a/src/test/ui/proc-macro/generate-dollar-ident.rs b/src/test/ui/proc-macro/generate-dollar-ident.rs new file mode 100644 index 00000000000..b838be9fb9f --- /dev/null +++ b/src/test/ui/proc-macro/generate-dollar-ident.rs @@ -0,0 +1,18 @@ +// Proc macros can generate token sequence `$ IDENT` +// without it being recognized as an unknown macro variable. + +// check-pass +// aux-build:generate-dollar-ident.rs + +extern crate generate_dollar_ident; +use generate_dollar_ident::*; + +macro_rules! black_hole { + ($($tt:tt)*) => {}; +} + +black_hole!($var); + +dollar_ident!(black_hole); + +fn main() {} |
