xref: /linux/rust/proc-macro2/probe/proc_macro_span.rs (revision 3a8b546a2786e54fbfff4d368ae45e65e1e43d21)
1*3a8b546aSMiguel Ojeda // This code exercises the surface area that we expect of Span's unstable API.
2*3a8b546aSMiguel Ojeda // If the current toolchain is able to compile it, then proc-macro2 is able to
3*3a8b546aSMiguel Ojeda // offer these APIs too.
4*3a8b546aSMiguel Ojeda 
5*3a8b546aSMiguel Ojeda #![cfg_attr(procmacro2_build_probe, feature(proc_macro_span))]
6*3a8b546aSMiguel Ojeda 
7*3a8b546aSMiguel Ojeda extern crate proc_macro;
8*3a8b546aSMiguel Ojeda 
9*3a8b546aSMiguel Ojeda use core::ops::{Range, RangeBounds};
10*3a8b546aSMiguel Ojeda use proc_macro::{Literal, Span};
11*3a8b546aSMiguel Ojeda use std::path::PathBuf;
12*3a8b546aSMiguel Ojeda 
13*3a8b546aSMiguel Ojeda pub fn byte_range(this: &Span) -> Range<usize> {
14*3a8b546aSMiguel Ojeda     this.byte_range()
15*3a8b546aSMiguel Ojeda }
16*3a8b546aSMiguel Ojeda 
17*3a8b546aSMiguel Ojeda pub fn start(this: &Span) -> Span {
18*3a8b546aSMiguel Ojeda     this.start()
19*3a8b546aSMiguel Ojeda }
20*3a8b546aSMiguel Ojeda 
21*3a8b546aSMiguel Ojeda pub fn end(this: &Span) -> Span {
22*3a8b546aSMiguel Ojeda     this.end()
23*3a8b546aSMiguel Ojeda }
24*3a8b546aSMiguel Ojeda 
25*3a8b546aSMiguel Ojeda pub fn line(this: &Span) -> usize {
26*3a8b546aSMiguel Ojeda     this.line()
27*3a8b546aSMiguel Ojeda }
28*3a8b546aSMiguel Ojeda 
29*3a8b546aSMiguel Ojeda pub fn column(this: &Span) -> usize {
30*3a8b546aSMiguel Ojeda     this.column()
31*3a8b546aSMiguel Ojeda }
32*3a8b546aSMiguel Ojeda 
33*3a8b546aSMiguel Ojeda pub fn file(this: &Span) -> String {
34*3a8b546aSMiguel Ojeda     this.file()
35*3a8b546aSMiguel Ojeda }
36*3a8b546aSMiguel Ojeda 
37*3a8b546aSMiguel Ojeda pub fn local_file(this: &Span) -> Option<PathBuf> {
38*3a8b546aSMiguel Ojeda     this.local_file()
39*3a8b546aSMiguel Ojeda }
40*3a8b546aSMiguel Ojeda 
41*3a8b546aSMiguel Ojeda pub fn join(this: &Span, other: Span) -> Option<Span> {
42*3a8b546aSMiguel Ojeda     this.join(other)
43*3a8b546aSMiguel Ojeda }
44*3a8b546aSMiguel Ojeda 
45*3a8b546aSMiguel Ojeda pub fn subspan<R: RangeBounds<usize>>(this: &Literal, range: R) -> Option<Span> {
46*3a8b546aSMiguel Ojeda     this.subspan(range)
47*3a8b546aSMiguel Ojeda }
48*3a8b546aSMiguel Ojeda 
49*3a8b546aSMiguel Ojeda // Include in sccache cache key.
50*3a8b546aSMiguel Ojeda #[cfg(procmacro2_build_probe)]
51*3a8b546aSMiguel Ojeda const _: Option<&str> = option_env!("RUSTC_BOOTSTRAP");
52