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.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/crates/span/src/lib.rs b/crates/span/src/lib.rs
index fbd1b25cff..f3f6d80ad2 100644
--- a/crates/span/src/lib.rs
+++ b/crates/span/src/lib.rs
@@ -180,6 +180,22 @@ impl EditionedFileId {
}
}
+#[cfg(not(feature = "salsa"))]
+mod salsa {
+ #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
+ pub(crate) 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
/// `FileId` and contains source code. However, another source of source code in
/// Rust are macros: each macro can be thought of as producing a "temporary
@@ -201,12 +217,14 @@ impl EditionedFileId {
#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct HirFileId(salsa::Id);
+#[cfg(feature = "salsa")]
impl salsa::plumbing::AsId for HirFileId {
fn as_id(&self) -> salsa::Id {
self.0
}
}
+#[cfg(feature = "salsa")]
impl salsa::plumbing::FromId for HirFileId {
fn from_id(id: salsa::Id) -> Self {
HirFileId(id)
@@ -273,12 +291,14 @@ pub struct MacroFileId {
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct MacroCallId(salsa::Id);
+#[cfg(feature = "salsa")]
impl salsa::plumbing::AsId for MacroCallId {
fn as_id(&self) -> salsa::Id {
self.0
}
}
+#[cfg(feature = "salsa")]
impl salsa::plumbing::FromId for MacroCallId {
fn from_id(id: salsa::Id) -> Self {
MacroCallId(id)