about summary refs log tree commit diff
path: root/tests/ui/proc-macro/mixed-site-span.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/proc-macro/mixed-site-span.rs')
-rw-r--r--tests/ui/proc-macro/mixed-site-span.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/ui/proc-macro/mixed-site-span.rs b/tests/ui/proc-macro/mixed-site-span.rs
new file mode 100644
index 00000000000..0083846568e
--- /dev/null
+++ b/tests/ui/proc-macro/mixed-site-span.rs
@@ -0,0 +1,24 @@
+// Proc macros using `mixed_site` spans exhibit usual properties of `macro_rules` hygiene.
+
+// aux-build:mixed-site-span.rs
+
+#[macro_use]
+extern crate mixed_site_span;
+
+struct ItemUse;
+
+fn main() {
+    'label_use: loop {
+        let local_use = 1;
+        proc_macro_rules!();
+        //~^ ERROR use of undeclared label `'label_use`
+        //~| ERROR cannot find value `local_use` in this scope
+        ItemDef; // OK
+        local_def; //~ ERROR cannot find value `local_def` in this scope
+    }
+}
+
+macro_rules! pass_dollar_crate {
+    () => (proc_macro_rules!($crate);) //~ ERROR cannot find type `ItemUse` in crate `$crate`
+}
+pass_dollar_crate!();