Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/base_db/src/input.rs')
-rw-r--r--crates/base_db/src/input.rs41
1 files changed, 22 insertions, 19 deletions
diff --git a/crates/base_db/src/input.rs b/crates/base_db/src/input.rs
index db3f85604b..43d7ccad49 100644
--- a/crates/base_db/src/input.rs
+++ b/crates/base_db/src/input.rs
@@ -117,21 +117,22 @@ impl ops::Deref for CrateName {
}
/// Origin of the crates. It is used in emitting monikers.
-#[derive(Debug, Clone)]
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum CrateOrigin {
/// Crates that are from crates.io official registry,
CratesIo { repo: Option<String> },
/// Crates that are provided by the language, like std, core, proc-macro, ...
- Lang,
- /// Crates that we don't know their origin.
- // Ideally this enum should cover all cases, and then we remove this variant.
- Unknown,
+ Lang(LangCrateOrigin),
}
-impl Default for CrateOrigin {
- fn default() -> Self {
- Self::Unknown
- }
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
+pub enum LangCrateOrigin {
+ Alloc,
+ Core,
+ ProcMacro,
+ Std,
+ Test,
+ Other,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
@@ -585,6 +586,8 @@ impl fmt::Display for CyclicDependenciesError {
#[cfg(test)]
mod tests {
+ use crate::CrateOrigin;
+
use super::{CfgOptions, CrateGraph, CrateName, Dependency, Edition::Edition2018, Env, FileId};
#[test]
@@ -600,7 +603,7 @@ mod tests {
Env::default(),
Default::default(),
false,
- Default::default(),
+ CrateOrigin::CratesIo { repo: None },
);
let crate2 = graph.add_crate_root(
FileId(2u32),
@@ -612,7 +615,7 @@ mod tests {
Env::default(),
Default::default(),
false,
- Default::default(),
+ CrateOrigin::CratesIo { repo: None },
);
let crate3 = graph.add_crate_root(
FileId(3u32),
@@ -624,7 +627,7 @@ mod tests {
Env::default(),
Default::default(),
false,
- Default::default(),
+ CrateOrigin::CratesIo { repo: None },
);
assert!(graph
.add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2))
@@ -650,7 +653,7 @@ mod tests {
Env::default(),
Default::default(),
false,
- Default::default(),
+ CrateOrigin::CratesIo { repo: None },
);
let crate2 = graph.add_crate_root(
FileId(2u32),
@@ -662,7 +665,7 @@ mod tests {
Env::default(),
Default::default(),
false,
- Default::default(),
+ CrateOrigin::CratesIo { repo: None },
);
assert!(graph
.add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2))
@@ -685,7 +688,7 @@ mod tests {
Env::default(),
Default::default(),
false,
- Default::default(),
+ CrateOrigin::CratesIo { repo: None },
);
let crate2 = graph.add_crate_root(
FileId(2u32),
@@ -697,7 +700,7 @@ mod tests {
Env::default(),
Default::default(),
false,
- Default::default(),
+ CrateOrigin::CratesIo { repo: None },
);
let crate3 = graph.add_crate_root(
FileId(3u32),
@@ -709,7 +712,7 @@ mod tests {
Env::default(),
Default::default(),
false,
- Default::default(),
+ CrateOrigin::CratesIo { repo: None },
);
assert!(graph
.add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2))
@@ -732,7 +735,7 @@ mod tests {
Env::default(),
Default::default(),
false,
- Default::default(),
+ CrateOrigin::CratesIo { repo: None },
);
let crate2 = graph.add_crate_root(
FileId(2u32),
@@ -744,7 +747,7 @@ mod tests {
Env::default(),
Default::default(),
false,
- Default::default(),
+ CrateOrigin::CratesIo { repo: None },
);
assert!(graph
.add_dep(