xref: /linux/rust/proc-macro2/probe/proc_macro_span.rs (revision 784faa8eca8270671e0ed6d9d21f04bbb80fc5f7)
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 Ojeda pub fn byte_range(this: &Span) -> Range<usize> {
163a8b546aSMiguel Ojeda     this.byte_range()
173a8b546aSMiguel Ojeda }
183a8b546aSMiguel Ojeda 
start(this: &Span) -> Span193a8b546aSMiguel Ojeda pub fn start(this: &Span) -> Span {
203a8b546aSMiguel Ojeda     this.start()
213a8b546aSMiguel Ojeda }
223a8b546aSMiguel Ojeda 
end(this: &Span) -> Span233a8b546aSMiguel Ojeda pub fn end(this: &Span) -> Span {
243a8b546aSMiguel Ojeda     this.end()
253a8b546aSMiguel Ojeda }
263a8b546aSMiguel Ojeda 
line(this: &Span) -> usize273a8b546aSMiguel Ojeda pub fn line(this: &Span) -> usize {
283a8b546aSMiguel Ojeda     this.line()
293a8b546aSMiguel Ojeda }
303a8b546aSMiguel Ojeda 
column(this: &Span) -> usize313a8b546aSMiguel Ojeda pub fn column(this: &Span) -> usize {
323a8b546aSMiguel Ojeda     this.column()
333a8b546aSMiguel Ojeda }
343a8b546aSMiguel Ojeda 
file(this: &Span) -> String353a8b546aSMiguel Ojeda pub fn file(this: &Span) -> String {
363a8b546aSMiguel Ojeda     this.file()
373a8b546aSMiguel Ojeda }
383a8b546aSMiguel Ojeda 
local_file(this: &Span) -> Option<PathBuf>393a8b546aSMiguel Ojeda pub fn local_file(this: &Span) -> Option<PathBuf> {
403a8b546aSMiguel Ojeda     this.local_file()
413a8b546aSMiguel Ojeda }
423a8b546aSMiguel Ojeda 
join(this: &Span, other: Span) -> Option<Span>433a8b546aSMiguel Ojeda pub 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 Ojeda pub 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