| // This code exercises the surface area that we expect of Span's unstable API. | 
 | // If the current toolchain is able to compile it, then proc-macro2 is able to | 
 | // offer these APIs too. | 
 |  | 
 | #![feature(proc_macro_span)] | 
 |  | 
 | extern crate proc_macro; | 
 |  | 
 | use core::ops::{Range, RangeBounds}; | 
 | use proc_macro::{Literal, Span}; | 
 |  | 
 | pub fn byte_range(this: &Span) -> Range<usize> { | 
 |     this.byte_range() | 
 | } | 
 |  | 
 | pub fn join(this: &Span, other: Span) -> Option<Span> { | 
 |     this.join(other) | 
 | } | 
 |  | 
 | pub fn subspan<R: RangeBounds<usize>>(this: &Literal, range: R) -> Option<Span> { | 
 |     this.subspan(range) | 
 | } | 
 |  | 
 | // Include in sccache cache key. | 
 | const _: Option<&str> = option_env!("RUSTC_BOOTSTRAP"); |