/// `self` was generated from, if any.
#[unstable(feature = "proc_macro", issue = "38356")]
pub fn parent(&self) -> Option<Span> {
- self.0.parent().map(|x| { Span(x) })
+ self.0.parent().map(Span)
}
/// The span for the origin source code that `self` was generated from. If
/// mark. That is, the following holds:
///
/// ```rust
- /// let lub = lub(a, b);
- /// assert!(a.is_descendant_of(lub))
- /// assert!(b.is_descendant_of(lub))
+ /// let la = least_ancestor(a, b);
+ /// assert!(a.is_descendant_of(la))
+ /// assert!(b.is_descendant_of(la))
/// ```
- pub fn lub(mut a: Mark, mut b: Mark) -> Mark {
+ pub fn least_ancestor(mut a: Mark, mut b: Mark) -> Mark {
HygieneData::with(|data| {
// Compute the path from a to the root
let mut a_path = FxHashSet::<Mark>();
// While the path from b to the root hasn't intersected, move up the tree
while !a_path.contains(&b) {
- b = data.marks[b.0 as usize].parent;
+ b = data.marks[b.0 as usize].parent;
}
b
self.ctxt().outer().expn_info().map(|info| info.call_site.source_callsite()).unwrap_or(self)
}
- /// The `Span for the tokens in the previous macro expansion from which `self` was generated,
+ /// The `Span` for the tokens in the previous macro expansion from which `self` was generated,
/// if any
pub fn parent(self) -> Option<Span> {
self.ctxt().outer().expn_info().map(|i| i.call_site)