summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_span/src/span_encoding.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
commit9835e2ae736235810b4ea1c162ca5e65c547e770 (patch)
tree3fcebf40ed70e581d776a8a4c65923e8ec20e026 /compiler/rustc_span/src/span_encoding.rs
parentReleasing progress-linux version 1.70.0+dfsg2-1~progress7.99u1. (diff)
downloadrustc-9835e2ae736235810b4ea1c162ca5e65c547e770.tar.xz
rustc-9835e2ae736235810b4ea1c162ca5e65c547e770.zip
Merging upstream version 1.71.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'compiler/rustc_span/src/span_encoding.rs')
-rw-r--r--compiler/rustc_span/src/span_encoding.rs24
1 files changed, 14 insertions, 10 deletions
diff --git a/compiler/rustc_span/src/span_encoding.rs b/compiler/rustc_span/src/span_encoding.rs
index c600298c5..1eea0f63c 100644
--- a/compiler/rustc_span/src/span_encoding.rs
+++ b/compiler/rustc_span/src/span_encoding.rs
@@ -181,19 +181,23 @@ impl Span {
#[inline]
pub fn ctxt(self) -> SyntaxContext {
let ctxt_or_tag = self.ctxt_or_tag as u32;
- if ctxt_or_tag <= MAX_CTXT {
- if self.len_or_tag == LEN_TAG || self.len_or_tag & PARENT_MASK == 0 {
- // Inline format or interned format with inline ctxt.
- SyntaxContext::from_u32(ctxt_or_tag)
+ // Check for interned format.
+ if self.len_or_tag == LEN_TAG {
+ if ctxt_or_tag == CTXT_TAG {
+ // Fully interned format.
+ let index = self.base_or_index;
+ with_span_interner(|interner| interner.spans[index as usize].ctxt)
} else {
- // Inline format or interned format with inline parent.
- // We know that the SyntaxContext is root.
- SyntaxContext::root()
+ // Interned format with inline ctxt.
+ SyntaxContext::from_u32(ctxt_or_tag)
}
+ } else if self.len_or_tag & PARENT_MASK == 0 {
+ // Inline format with inline ctxt.
+ SyntaxContext::from_u32(ctxt_or_tag)
} else {
- // Interned format.
- let index = self.base_or_index;
- with_span_interner(|interner| interner.spans[index as usize].ctxt)
+ // Inline format with inline parent.
+ // We know that the SyntaxContext is root.
+ SyntaxContext::root()
}
}
}