Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/span/src/lib.rs')
| -rw-r--r-- | crates/span/src/lib.rs | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/crates/span/src/lib.rs b/crates/span/src/lib.rs index 67f49928f8..54f90908f3 100644 --- a/crates/span/src/lib.rs +++ b/crates/span/src/lib.rs @@ -184,16 +184,6 @@ impl EditionedFileId { mod salsa { #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] pub struct Id(u32); - - impl Id { - pub(crate) const fn from_u32(u32: u32) -> Self { - Self(u32) - } - - pub(crate) const fn as_u32(self) -> u32 { - self.0 - } - } } /// Input to the analyzer is a set of files, where each file is identified by @@ -216,127 +206,11 @@ mod salsa { #[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub struct HirFileId(pub salsa::Id); -impl From<MacroCallId> for HirFileId { - fn from(value: MacroCallId) -> Self { - value.as_file() - } -} - -impl fmt::Debug for HirFileId { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self.repr().fmt(f) - } -} - -impl PartialEq<FileId> for HirFileId { - fn eq(&self, &other: &FileId) -> bool { - self.file_id().map(EditionedFileId::file_id) == Some(other) - } -} -impl PartialEq<HirFileId> for FileId { - fn eq(&self, other: &HirFileId) -> bool { - other.file_id().map(EditionedFileId::file_id) == Some(*self) - } -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct MacroFileId { - pub macro_call_id: MacroCallId, -} - /// `MacroCallId` identifies a particular macro invocation, like /// `println!("Hello, {}", world)`. #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct MacroCallId(pub salsa::Id); -impl MacroCallId { - pub const MAX_ID: u32 = 0x7fff_ffff; - - pub fn as_file(self) -> HirFileId { - MacroFileId { macro_call_id: self }.into() - } - - pub fn as_macro_file(self) -> MacroFileId { - MacroFileId { macro_call_id: self } - } -} - -#[derive(Clone, Copy, PartialEq, Eq, Hash)] -pub enum HirFileIdRepr { - FileId(EditionedFileId), - MacroFile(MacroFileId), -} - -impl fmt::Debug for HirFileIdRepr { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - Self::FileId(arg0) => arg0.fmt(f), - Self::MacroFile(arg0) => { - f.debug_tuple("MacroFile").field(&arg0.macro_call_id.0).finish() - } - } - } -} - -impl From<EditionedFileId> for HirFileId { - #[allow(clippy::let_unit_value)] - fn from(id: EditionedFileId) -> Self { - assert!(id.as_u32() <= Self::MAX_HIR_FILE_ID, "FileId index {} is too large", id.as_u32()); - HirFileId(salsa::Id::from_u32(id.0)) - } -} - -impl From<MacroFileId> for HirFileId { - #[allow(clippy::let_unit_value)] - fn from(MacroFileId { macro_call_id: MacroCallId(id) }: MacroFileId) -> Self { - let id: u32 = id.as_u32(); - assert!(id <= Self::MAX_HIR_FILE_ID, "MacroCallId index {id} is too large"); - HirFileId(salsa::Id::from_u32(id | Self::MACRO_FILE_TAG_MASK)) - } -} - -impl HirFileId { - const MAX_HIR_FILE_ID: u32 = u32::MAX ^ Self::MACRO_FILE_TAG_MASK; - const MACRO_FILE_TAG_MASK: u32 = 1 << 31; - - #[inline] - pub fn is_macro(self) -> bool { - self.0.as_u32() & Self::MACRO_FILE_TAG_MASK != 0 - } - - #[inline] - pub fn macro_file(self) -> Option<MacroFileId> { - match self.0.as_u32() & Self::MACRO_FILE_TAG_MASK { - 0 => None, - _ => Some(MacroFileId { - macro_call_id: MacroCallId(salsa::Id::from_u32( - self.0.as_u32() ^ Self::MACRO_FILE_TAG_MASK, - )), - }), - } - } - - #[inline] - pub fn file_id(self) -> Option<EditionedFileId> { - match self.0.as_u32() & Self::MACRO_FILE_TAG_MASK { - 0 => Some(EditionedFileId(self.0.as_u32())), - _ => None, - } - } - - #[inline] - pub fn repr(self) -> HirFileIdRepr { - match self.0.as_u32() & Self::MACRO_FILE_TAG_MASK { - 0 => HirFileIdRepr::FileId(EditionedFileId(self.0.as_u32())), - _ => HirFileIdRepr::MacroFile(MacroFileId { - macro_call_id: MacroCallId(salsa::Id::from_u32( - self.0.as_u32() ^ Self::MACRO_FILE_TAG_MASK, - )), - }), - } - } -} - /// Legacy span type, only defined here as it is still used by the proc-macro server. /// While rust-analyzer doesn't use this anymore at all, RustRover relies on the legacy type for /// proc-macro expansion. |