|  | // Testing token span hygiene. | 
|  |  | 
|  | //@ proc-macro: mixed-site-span.rs | 
|  |  | 
|  | extern crate mixed_site_span; | 
|  |  | 
|  | use mixed_site_span::declare_macro; | 
|  |  | 
|  | pub struct TokenItem; | 
|  |  | 
|  | #[macro_export] | 
|  | macro_rules! invoke_with_crate { | 
|  | ($s:ident $i:ident) => { with_crate!{$crate $s $i} }; | 
|  | } | 
|  |  | 
|  | #[macro_export] | 
|  | macro_rules! invoke_with_ident { | 
|  | ($s:ident $i:ident) => { with_crate!{krate $s $i} }; | 
|  | ($m:ident $s:ident $i:ident) => { with_crate!{$m $s $i} }; | 
|  | } | 
|  |  | 
|  | macro_rules! local {() => { | 
|  | declare_macro!{$crate input use_input_crate} | 
|  | declare_macro!{$crate mixed use_mixed_crate} | 
|  | declare_macro!{$crate call use_call_crate} | 
|  | }} | 
|  | local!{} | 
|  | declare_macro!{krate input use_input_krate} | 
|  | declare_macro!{krate mixed use_mixed_krate} | 
|  | declare_macro!{krate call use_call_krate} |