about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2020-05-31 00:20:06 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2020-05-31 00:24:56 +0300
commit81e06dac84fe073016befc2e860310fcd87715d6 (patch)
tree65cd0b180c30b075cd1fafb5010ae31961c5bf2e
parent4d5ce340cd643cbb775728cfd223a7a4b5281bae (diff)
downloadrust-81e06dac84fe073016befc2e860310fcd87715d6.tar.gz
rust-81e06dac84fe073016befc2e860310fcd87715d6.zip
Add a test for `$:ident` in proc macro input
-rw-r--r--src/test/ui/proc-macro/input-interpolated.rs25
-rw-r--r--src/test/ui/proc-macro/input-interpolated.stdout69
2 files changed, 94 insertions, 0 deletions
diff --git a/src/test/ui/proc-macro/input-interpolated.rs b/src/test/ui/proc-macro/input-interpolated.rs
new file mode 100644
index 00000000000..b57ce99b138
--- /dev/null
+++ b/src/test/ui/proc-macro/input-interpolated.rs
@@ -0,0 +1,25 @@
+// Check what token streams proc macros see when interpolated tokens are passed to them as input.
+
+// check-pass
+// aux-build:test-macros.rs
+
+#[macro_use]
+extern crate test_macros;
+
+macro_rules! pass_ident {
+    ($i:ident) => {
+        fn f() {
+            print_bang!($i);
+        }
+
+        #[print_attr]
+        const $i: u8 = 0;
+
+        #[derive(Print)]
+        struct $i {}
+    };
+}
+
+pass_ident!(A);
+
+fn main() {}
diff --git a/src/test/ui/proc-macro/input-interpolated.stdout b/src/test/ui/proc-macro/input-interpolated.stdout
new file mode 100644
index 00000000000..7529db3bd06
--- /dev/null
+++ b/src/test/ui/proc-macro/input-interpolated.stdout
@@ -0,0 +1,69 @@
+PRINT-BANG INPUT (DISPLAY): A
+PRINT-BANG RE-COLLECTED (DISPLAY):  A 
+PRINT-BANG INPUT (DEBUG): TokenStream [
+    Group {
+        delimiter: None,
+        stream: TokenStream [
+            Ident {
+                ident: "A",
+                span: #0 bytes(402..403),
+            },
+        ],
+        span: #3 bytes(269..271),
+    },
+]
+PRINT-ATTR INPUT (DISPLAY): const A: u8 = 0;
+PRINT-ATTR RE-COLLECTED (DISPLAY): const A : u8 = 0 ;
+PRINT-ATTR INPUT (DEBUG): TokenStream [
+    Ident {
+        ident: "const",
+        span: #0 bytes(0..0),
+    },
+    Ident {
+        ident: "A",
+        span: #0 bytes(0..0),
+    },
+    Punct {
+        ch: ':',
+        spacing: Alone,
+        span: #0 bytes(0..0),
+    },
+    Ident {
+        ident: "u8",
+        span: #0 bytes(0..0),
+    },
+    Punct {
+        ch: '=',
+        spacing: Alone,
+        span: #0 bytes(0..0),
+    },
+    Literal {
+        kind: Integer,
+        symbol: "0",
+        suffix: None,
+        span: #0 bytes(0..0),
+    },
+    Punct {
+        ch: ';',
+        spacing: Alone,
+        span: #0 bytes(0..0),
+    },
+]
+PRINT-DERIVE INPUT (DISPLAY): struct A {
+}
+PRINT-DERIVE RE-COLLECTED (DISPLAY): struct A { }
+PRINT-DERIVE INPUT (DEBUG): TokenStream [
+    Ident {
+        ident: "struct",
+        span: #0 bytes(0..0),
+    },
+    Ident {
+        ident: "A",
+        span: #0 bytes(0..0),
+    },
+    Group {
+        delimiter: Brace,
+        stream: TokenStream [],
+        span: #0 bytes(0..0),
+    },
+]