From 7bf0c0034ea191d9cb6e3bbff2c58aaaa437cbb3 Mon Sep 17 00:00:00 2001 From: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com> Date: Tue, 6 May 2025 17:09:28 +0900 Subject: [PATCH] Remove ast index mask Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com> --- .../crates/hir-expand/src/attrs.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/tools/rust-analyzer/crates/hir-expand/src/attrs.rs b/src/tools/rust-analyzer/crates/hir-expand/src/attrs.rs index 8b9e1c42c1ae..4e519452aa69 100644 --- a/src/tools/rust-analyzer/crates/hir-expand/src/attrs.rs +++ b/src/tools/rust-analyzer/crates/hir-expand/src/attrs.rs @@ -175,21 +175,24 @@ pub struct AttrId { // FIXME: This only handles a single level of cfg_attr nesting // that is `#[cfg_attr(all(), cfg_attr(all(), cfg(any())))]` breaks again impl AttrId { - const AST_INDEX_MASK: usize = 0x00FF_FFFF; - const INNER_ATTR_BIT: usize = 1 << 31; + const INNER_ATTR_SET_BIT: usize = 1 << 31; pub fn new(id: usize, is_inner: bool) -> Self { - let id = id & Self::AST_INDEX_MASK; - let id = if is_inner { id | Self::INNER_ATTR_BIT } else { id }; - Self { id: id as u32 } + Self { + id: if is_inner { + id | Self::INNER_ATTR_SET_BIT + } else { + id & !Self::INNER_ATTR_SET_BIT + } as u32, + } } pub fn ast_index(&self) -> usize { - self.id as usize & Self::AST_INDEX_MASK + self.id as usize & !Self::INNER_ATTR_SET_BIT } pub fn is_inner_attr(&self) -> bool { - (self.id as usize) & Self::INNER_ATTR_BIT != 0 + (self.id as usize) & Self::INNER_ATTR_SET_BIT != 0 } }