]> git.lizzy.rs Git - rust.git/commitdiff
Add a test for `$crate` inside macro invocation
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>
Wed, 3 Jul 2019 22:28:24 +0000 (01:28 +0300)
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>
Tue, 9 Jul 2019 19:17:44 +0000 (22:17 +0300)
src/test/ui/proc-macro/dollar-crate-issue-62325.rs [new file with mode: 0644]
src/test/ui/proc-macro/dollar-crate-issue-62325.stderr [new file with mode: 0644]
src/test/ui/proc-macro/dollar-crate-issue-62325.stdout [new file with mode: 0644]

diff --git a/src/test/ui/proc-macro/dollar-crate-issue-62325.rs b/src/test/ui/proc-macro/dollar-crate-issue-62325.rs
new file mode 100644 (file)
index 0000000..8e21ca8
--- /dev/null
@@ -0,0 +1,24 @@
+//~ ERROR expected type, found `$`
+
+// edition:2018
+// aux-build:test-macros.rs
+
+// Anonymize unstable non-dummy spans while still showing dummy spans `0..0`.
+// normalize-stdout-test "bytes\([^0]\w*\.\.(\w+)\)" -> "bytes(LO..$1)"
+// normalize-stdout-test "bytes\((\w+)\.\.[^0]\w*\)" -> "bytes($1..HI)"
+
+#![feature(proc_macro_hygiene)]
+
+#[macro_use]
+extern crate test_macros;
+
+type S = u8;
+
+macro_rules! m { () => {
+    #[print_attr]
+    struct A(identity!($crate::S));
+}}
+
+m!();
+
+fn main() {}
diff --git a/src/test/ui/proc-macro/dollar-crate-issue-62325.stderr b/src/test/ui/proc-macro/dollar-crate-issue-62325.stderr
new file mode 100644 (file)
index 0000000..ecc0d38
--- /dev/null
@@ -0,0 +1,4 @@
+error: expected type, found `$`
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/proc-macro/dollar-crate-issue-62325.stdout b/src/test/ui/proc-macro/dollar-crate-issue-62325.stdout
new file mode 100644 (file)
index 0000000..e181a4e
--- /dev/null
@@ -0,0 +1,61 @@
+PRINT-ATTR INPUT (DISPLAY): struct A(identity!($crate :: S));
+PRINT-ATTR RE-COLLECTED (DISPLAY): struct A ( identity ! ( $ crate :: S ) ) ;
+PRINT-ATTR INPUT (DEBUG): TokenStream [
+    Ident {
+        ident: "struct",
+        span: #0 bytes(0..0),
+    },
+    Ident {
+        ident: "A",
+        span: #0 bytes(0..0),
+    },
+    Group {
+        delimiter: Parenthesis,
+        stream: TokenStream [
+            Ident {
+                ident: "identity",
+                span: #0 bytes(0..0),
+            },
+            Punct {
+                ch: '!',
+                spacing: Alone,
+                span: #0 bytes(0..0),
+            },
+            Group {
+                delimiter: Parenthesis,
+                stream: TokenStream [
+                    Punct {
+                        ch: '$',
+                        spacing: Alone,
+                        span: #0 bytes(0..0),
+                    },
+                    Ident {
+                        ident: "crate",
+                        span: #0 bytes(0..0),
+                    },
+                    Punct {
+                        ch: ':',
+                        spacing: Joint,
+                        span: #0 bytes(0..0),
+                    },
+                    Punct {
+                        ch: ':',
+                        spacing: Alone,
+                        span: #0 bytes(0..0),
+                    },
+                    Ident {
+                        ident: "S",
+                        span: #0 bytes(0..0),
+                    },
+                ],
+                span: #0 bytes(0..0),
+            },
+        ],
+        span: #0 bytes(0..0),
+    },
+    Punct {
+        ch: ';',
+        spacing: Alone,
+        span: #0 bytes(0..0),
+    },
+]