about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2020-02-17 22:47:40 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2020-02-17 22:47:59 +0300
commit950845c5b1079c83e56db0ca2b4bb8fe050ee2f5 (patch)
tree609802b69b03c2ebbd868a6aa132c3af79e63e49 /src
parent06fbb0b4faefeaf70f4616d6af9bc0c1ebc69bc2 (diff)
downloadrust-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.rs17
-rw-r--r--src/test/ui/proc-macro/generate-dollar-ident.rs18
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() {}