File tree Expand file tree Collapse file tree 4 files changed +28
-0
lines changed Expand file tree Collapse file tree 4 files changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -57,6 +57,10 @@ fn main() {
5757        println ! ( "cargo:rustc-cfg=span_locations" ) ; 
5858    } 
5959
60+     if  version. minor  >= 45  { 
61+         println ! ( "cargo:rustc-cfg=hygiene" ) ; 
62+     } 
63+ 
6064    let  target = env:: var ( "TARGET" ) . unwrap ( ) ; 
6165    if  !enable_use_proc_macro ( & target)  { 
6266        return ; 
Original file line number Diff line number Diff line change @@ -374,6 +374,11 @@ impl Span {
374374        Span  {  lo :  0 ,  hi :  0  } 
375375    } 
376376
377+     #[ cfg( hygiene) ]  
378+     pub  fn  mixed_site ( )  -> Span  { 
379+         Span :: call_site ( ) 
380+     } 
381+ 
377382    #[ cfg( procmacro2_semver_exempt) ]  
378383    pub  fn  def_site ( )  -> Span  { 
379384        Span :: call_site ( ) 
Original file line number Diff line number Diff line change @@ -348,6 +348,16 @@ impl Span {
348348        Span :: _new ( imp:: Span :: call_site ( ) ) 
349349    } 
350350
351+     /// The span located at the invocation of the procedural macro, but with 
352+      /// local variables, labels, and `$crate` resolved at the definition site 
353+      /// of the macro. This is the same hygiene behavior as `macro_rules`. 
354+      /// 
355+      /// This function requires Rust 1.45 or later. 
356+      #[ cfg( hygiene) ]  
357+     pub  fn  mixed_site ( )  -> Span  { 
358+         Span :: _new ( imp:: Span :: mixed_site ( ) ) 
359+     } 
360+ 
351361    /// A span that resolves at the macro definition site. 
352362     /// 
353363     /// This method is semver exempt and not exposed by default. 
Original file line number Diff line number Diff line change @@ -376,6 +376,15 @@ impl Span {
376376        } 
377377    } 
378378
379+     #[ cfg( hygiene) ]  
380+     pub  fn  mixed_site ( )  -> Span  { 
381+         if  inside_proc_macro ( )  { 
382+             Span :: Compiler ( proc_macro:: Span :: mixed_site ( ) ) 
383+         }  else  { 
384+             Span :: Fallback ( fallback:: Span :: mixed_site ( ) ) 
385+         } 
386+     } 
387+ 
379388    #[ cfg( super_unstable) ]  
380389    pub  fn  def_site ( )  -> Span  { 
381390        if  inside_proc_macro ( )  { 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments