Add with_{def_site,call_site,legacy}_ctxt,
methods to Span
Use these to create call-site spans for AST passes when needed.
This commit is contained in:
parent
0b86782058
commit
c8cf9f5a02
10 changed files with 138 additions and 117 deletions
|
@ -514,6 +514,25 @@ impl Span {
|
|||
span.ctxt)
|
||||
}
|
||||
|
||||
/// Equivalent of `Span::def_site` from the proc macro API,
|
||||
/// except that the location is taken from the `self` span.
|
||||
pub fn with_def_site_ctxt(self, expn_id: ExpnId) -> Span {
|
||||
self.with_ctxt_from_mark(expn_id, Transparency::Opaque)
|
||||
}
|
||||
|
||||
/// Equivalent of `Span::call_site` from the proc macro API,
|
||||
/// except that the location is taken from the `self` span.
|
||||
pub fn with_call_site_ctxt(&self, expn_id: ExpnId) -> Span {
|
||||
self.with_ctxt_from_mark(expn_id, Transparency::Transparent)
|
||||
}
|
||||
|
||||
/// Span with a context reproducing `macro_rules` hygiene (hygienic locals, unhygienic items).
|
||||
/// FIXME: This should be eventually replaced either with `with_def_site_ctxt` (preferably),
|
||||
/// or with `with_call_site_ctxt` (where necessary).
|
||||
pub fn with_legacy_ctxt(&self, expn_id: ExpnId) -> Span {
|
||||
self.with_ctxt_from_mark(expn_id, Transparency::SemiTransparent)
|
||||
}
|
||||
|
||||
/// Produces a span with the same location as `self` and context produced by a macro with the
|
||||
/// given ID and transparency, assuming that macro was defined directly and not produced by
|
||||
/// some other macro (which is the case for built-in and procedural macros).
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue