about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-07-09 22:21:55 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-07-09 22:45:25 +0300
commit4cb67c0f1c429a1a1e2ec8c3e02714557feeb60d (patch)
treee17a13805f19f8f80e9479e405f4cf2b9c5a4325
parent39975077868fc63a7e9a3cec5130adb3607f6838 (diff)
downloadrust-4cb67c0f1c429a1a1e2ec8c3e02714557feeb60d.tar.gz
rust-4cb67c0f1c429a1a1e2ec8c3e02714557feeb60d.zip
Add a test case with `$crate` from other crate
-rw-r--r--src/test/ui/proc-macro/auxiliary/dollar-crate-external.rs6
-rw-r--r--src/test/ui/proc-macro/dollar-crate-issue-62325.rs4
-rw-r--r--src/test/ui/proc-macro/dollar-crate-issue-62325.stdout56
3 files changed, 66 insertions, 0 deletions
diff --git a/src/test/ui/proc-macro/auxiliary/dollar-crate-external.rs b/src/test/ui/proc-macro/auxiliary/dollar-crate-external.rs
index d5d393b5a64..bdcdb7922ca 100644
--- a/src/test/ui/proc-macro/auxiliary/dollar-crate-external.rs
+++ b/src/test/ui/proc-macro/auxiliary/dollar-crate-external.rs
@@ -14,3 +14,9 @@ macro_rules! external {
         struct D($crate::S);
     };
 }
+
+#[macro_export]
+macro_rules! issue_62325 { () => {
+    #[print_attr]
+    struct B(identity!($crate::S));
+}}
diff --git a/src/test/ui/proc-macro/dollar-crate-issue-62325.rs b/src/test/ui/proc-macro/dollar-crate-issue-62325.rs
index 35c61b2bc69..b7b152e6692 100644
--- a/src/test/ui/proc-macro/dollar-crate-issue-62325.rs
+++ b/src/test/ui/proc-macro/dollar-crate-issue-62325.rs
@@ -1,6 +1,7 @@
 // check-pass
 // edition:2018
 // aux-build:test-macros.rs
+// aux-build:dollar-crate-external.rs
 
 // Anonymize unstable non-dummy spans while still showing dummy spans `0..0`.
 // normalize-stdout-test "bytes\([^0]\w*\.\.(\w+)\)" -> "bytes(LO..$1)"
@@ -10,6 +11,7 @@
 
 #[macro_use]
 extern crate test_macros;
+extern crate dollar_crate_external;
 
 type S = u8;
 
@@ -20,4 +22,6 @@ macro_rules! m { () => {
 
 m!();
 
+dollar_crate_external::issue_62325!();
+
 fn main() {}
diff --git a/src/test/ui/proc-macro/dollar-crate-issue-62325.stdout b/src/test/ui/proc-macro/dollar-crate-issue-62325.stdout
index 033699d8d86..17ad1a7af70 100644
--- a/src/test/ui/proc-macro/dollar-crate-issue-62325.stdout
+++ b/src/test/ui/proc-macro/dollar-crate-issue-62325.stdout
@@ -54,3 +54,59 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
         span: #2 bytes(LO..HI),
     },
 ]
+PRINT-ATTR INPUT (DISPLAY): struct B(identity!(::dollar_crate_external :: S));
+PRINT-ATTR RE-COLLECTED (DISPLAY): struct B ( identity ! ( ::dollar_crate_external :: S ) ) ;
+PRINT-ATTR INPUT (DEBUG): TokenStream [
+    Ident {
+        ident: "struct",
+        span: #7 bytes(LO..HI),
+    },
+    Ident {
+        ident: "B",
+        span: #7 bytes(LO..HI),
+    },
+    Group {
+        delimiter: Parenthesis,
+        stream: TokenStream [
+            Ident {
+                ident: "identity",
+                span: #7 bytes(LO..HI),
+            },
+            Punct {
+                ch: '!',
+                spacing: Alone,
+                span: #7 bytes(LO..HI),
+            },
+            Group {
+                delimiter: Parenthesis,
+                stream: TokenStream [
+                    Ident {
+                        ident: "$crate",
+                        span: #7 bytes(LO..HI),
+                    },
+                    Punct {
+                        ch: ':',
+                        spacing: Joint,
+                        span: #7 bytes(LO..HI),
+                    },
+                    Punct {
+                        ch: ':',
+                        spacing: Alone,
+                        span: #7 bytes(LO..HI),
+                    },
+                    Ident {
+                        ident: "S",
+                        span: #7 bytes(LO..HI),
+                    },
+                ],
+                span: #7 bytes(LO..HI),
+            },
+        ],
+        span: #7 bytes(LO..HI),
+    },
+    Punct {
+        ch: ';',
+        spacing: Alone,
+        span: #7 bytes(LO..HI),
+    },
+]