1
Fork 0

Add SyntaxContext::is_root

This commit is contained in:
Maybe Waffle 2023-06-16 13:45:48 +00:00
parent 99b334696f
commit 73c5c97de7
4 changed files with 20 additions and 15 deletions

View file

@ -507,7 +507,7 @@ impl HygieneData {
self.normalize_to_macro_rules(call_site_ctxt)
};
if call_site_ctxt == SyntaxContext::root() {
if call_site_ctxt.is_root() {
return self.apply_mark_internal(ctxt, expn_id, transparency);
}
@ -671,12 +671,17 @@ impl SyntaxContext {
}
#[inline]
pub(crate) fn as_u32(self) -> u32 {
pub const fn is_root(self) -> bool {
self.0 == SyntaxContext::root().as_u32()
}
#[inline]
pub(crate) const fn as_u32(self) -> u32 {
self.0
}
#[inline]
pub(crate) fn from_u32(raw: u32) -> SyntaxContext {
pub(crate) const fn from_u32(raw: u32) -> SyntaxContext {
SyntaxContext(raw)
}
@ -1500,7 +1505,7 @@ impl<CTX: HashStableContext> HashStable<CTX> for SyntaxContext {
const TAG_EXPANSION: u8 = 0;
const TAG_NO_EXPANSION: u8 = 1;
if *self == SyntaxContext::root() {
if self.is_root() {
TAG_NO_EXPANSION.hash_stable(ctx, hasher);
} else {
TAG_EXPANSION.hash_stable(ctx, hasher);

View file

@ -826,9 +826,9 @@ impl Span {
// Return the macro span on its own to avoid weird diagnostic output. It is preferable to
// have an incomplete span than a completely nonsensical one.
if span_data.ctxt != end_data.ctxt {
if span_data.ctxt == SyntaxContext::root() {
if span_data.ctxt.is_root() {
return end;
} else if end_data.ctxt == SyntaxContext::root() {
} else if end_data.ctxt.is_root() {
return self;
}
// Both spans fall within a macro.
@ -837,7 +837,7 @@ impl Span {
Span::new(
cmp::min(span_data.lo, end_data.lo),
cmp::max(span_data.hi, end_data.hi),
if span_data.ctxt == SyntaxContext::root() { end_data.ctxt } else { span_data.ctxt },
if span_data.ctxt.is_root() { end_data.ctxt } else { span_data.ctxt },
if span_data.parent == end_data.parent { span_data.parent } else { None },
)
}
@ -855,7 +855,7 @@ impl Span {
Span::new(
span.hi,
end.lo,
if end.ctxt == SyntaxContext::root() { end.ctxt } else { span.ctxt },
if end.ctxt.is_root() { end.ctxt } else { span.ctxt },
if span.parent == end.parent { span.parent } else { None },
)
}
@ -879,9 +879,9 @@ impl Span {
// Return the macro span on its own to avoid weird diagnostic output. It is preferable to
// have an incomplete span than a completely nonsensical one.
if span_data.ctxt != end_data.ctxt {
if span_data.ctxt == SyntaxContext::root() {
if span_data.ctxt.is_root() {
return end;
} else if end_data.ctxt == SyntaxContext::root() {
} else if end_data.ctxt.is_root() {
return self;
}
// Both spans fall within a macro.
@ -890,7 +890,7 @@ impl Span {
Span::new(
span_data.lo,
end_data.lo,
if end_data.ctxt == SyntaxContext::root() { end_data.ctxt } else { span_data.ctxt },
if end_data.ctxt.is_root() { end_data.ctxt } else { span_data.ctxt },
if span_data.parent == end_data.parent { span_data.parent } else { None },
)
}