1*a9acfcebSMiguel Ojeda // SPDX-License-Identifier: Apache-2.0 OR MIT 2*a9acfcebSMiguel Ojeda 33a8b546aSMiguel Ojeda // This code exercises the surface area that we expect of Span's unstable API. 43a8b546aSMiguel Ojeda // If the current toolchain is able to compile it, then proc-macro2 is able to 53a8b546aSMiguel Ojeda // offer these APIs too. 63a8b546aSMiguel Ojeda 73a8b546aSMiguel Ojeda #![cfg_attr(procmacro2_build_probe, feature(proc_macro_span))] 83a8b546aSMiguel Ojeda 93a8b546aSMiguel Ojeda extern crate proc_macro; 103a8b546aSMiguel Ojeda 113a8b546aSMiguel Ojeda use core::ops::{Range, RangeBounds}; 123a8b546aSMiguel Ojeda use proc_macro::{Literal, Span}; 133a8b546aSMiguel Ojeda use std::path::PathBuf; 143a8b546aSMiguel Ojeda byte_range(this: &Span) -> Range<usize>153a8b546aSMiguel Ojedapub fn byte_range(this: &Span) -> Range<usize> { 163a8b546aSMiguel Ojeda this.byte_range() 173a8b546aSMiguel Ojeda } 183a8b546aSMiguel Ojeda start(this: &Span) -> Span193a8b546aSMiguel Ojedapub fn start(this: &Span) -> Span { 203a8b546aSMiguel Ojeda this.start() 213a8b546aSMiguel Ojeda } 223a8b546aSMiguel Ojeda end(this: &Span) -> Span233a8b546aSMiguel Ojedapub fn end(this: &Span) -> Span { 243a8b546aSMiguel Ojeda this.end() 253a8b546aSMiguel Ojeda } 263a8b546aSMiguel Ojeda line(this: &Span) -> usize273a8b546aSMiguel Ojedapub fn line(this: &Span) -> usize { 283a8b546aSMiguel Ojeda this.line() 293a8b546aSMiguel Ojeda } 303a8b546aSMiguel Ojeda column(this: &Span) -> usize313a8b546aSMiguel Ojedapub fn column(this: &Span) -> usize { 323a8b546aSMiguel Ojeda this.column() 333a8b546aSMiguel Ojeda } 343a8b546aSMiguel Ojeda file(this: &Span) -> String353a8b546aSMiguel Ojedapub fn file(this: &Span) -> String { 363a8b546aSMiguel Ojeda this.file() 373a8b546aSMiguel Ojeda } 383a8b546aSMiguel Ojeda local_file(this: &Span) -> Option<PathBuf>393a8b546aSMiguel Ojedapub fn local_file(this: &Span) -> Option<PathBuf> { 403a8b546aSMiguel Ojeda this.local_file() 413a8b546aSMiguel Ojeda } 423a8b546aSMiguel Ojeda join(this: &Span, other: Span) -> Option<Span>433a8b546aSMiguel Ojedapub fn join(this: &Span, other: Span) -> Option<Span> { 443a8b546aSMiguel Ojeda this.join(other) 453a8b546aSMiguel Ojeda } 463a8b546aSMiguel Ojeda subspan<R: RangeBounds<usize>>(this: &Literal, range: R) -> Option<Span>473a8b546aSMiguel Ojedapub fn subspan<R: RangeBounds<usize>>(this: &Literal, range: R) -> Option<Span> { 483a8b546aSMiguel Ojeda this.subspan(range) 493a8b546aSMiguel Ojeda } 503a8b546aSMiguel Ojeda 513a8b546aSMiguel Ojeda // Include in sccache cache key. 523a8b546aSMiguel Ojeda #[cfg(procmacro2_build_probe)] 533a8b546aSMiguel Ojeda const _: Option<&str> = option_env!("RUSTC_BOOTSTRAP"); 54