Open
Description
This issue is intended to track a number of unstable APIs which are used to inspect the contents of a Span
for information like the file name, byte position, manufacturing new spans, combining them, etc.
This issue tracks the proc_macro_span
unstable feature.
Public API
Already stabilized:
impl Span {
// as `proc_macro_source_text`
pub fn source_text(&self) -> Option<String>;
// as `proc_macro_span_location`
pub fn start(&self) -> Span;
pub fn end(&self) -> Span;
pub fn line(&self) -> usize;
pub fn column(&self) -> usize;
}
impl Group {
// as `proc_macro_group_span`
pub fn span_open(&self) -> Span;
pub fn span_close(&self) -> Span;
}
About to be stabilized:
impl Span {
pub fn file(&self) -> String; // Mapped file name, for display purposes.
pub fn local_file(&self) -> Option<PathBuf>; // Real file name as it exists on disk.
}
Close to stabilization, pending some bikeshedding:
impl Span {
pub fn byte_range(&self) -> Range<usize>;
// Open question: Do we want to use the old or new Range type?
}
Things that require more discussion:
impl Span {
pub fn eq(&self, other: &Span) -> bool;
pub fn join(&self, other: Span) -> Option<Span>;
pub fn parent(&self) -> Option<Span>;
pub fn source(&self) -> Span;
}
impl Literal {
pub fn subspan<R: RangeBounds<usize>>(&self, range: R) -> Option<Span>;
}
History:
- Implementation
- Stabilization of
proc_macro_source_text
- Stabilization of
proc_macro_group_span
- Stabilization of
proc_macro_span_location
Stabilize proc_macro::Span::{start,end,line,column}. #139865
Metadata
Metadata
Assignees
Labels
Area: All kinds of macros (custom derive, macro_rules!, proc macros, ..)Area: Procedural macrosBlocker: Implemented in the nightly compiler and unstable.Category: An issue tracking the progress of sth. like the implementation of an RFCLibs issues that are tracked on the team's project board.Status: There are blocking design concerns.Relevant to the language team, which will review and decide on the PR/issue.Relevant to the library API team, which will review and decide on the PR/issue.