From ee4d904cfb1b604bc8627491e05980ac43cd59e3 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 25 Oct 2018 10:57:55 +0300 Subject: Store all the data in the Salsa Database --- crates/ra_lsp_server/src/path_map.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'crates/ra_lsp_server/src/path_map.rs') diff --git a/crates/ra_lsp_server/src/path_map.rs b/crates/ra_lsp_server/src/path_map.rs index d32829382..b3d1dc3db 100644 --- a/crates/ra_lsp_server/src/path_map.rs +++ b/crates/ra_lsp_server/src/path_map.rs @@ -22,15 +22,18 @@ impl PathMap { pub fn new() -> PathMap { Default::default() } - pub fn get_or_insert(&mut self, path: PathBuf, root: Root) -> FileId { - self.path2id + pub fn get_or_insert(&mut self, path: PathBuf, root: Root) -> (bool, FileId) { + let mut inserted = false; + let file_id = self.path2id .get(path.as_path()) .map(|&id| id) .unwrap_or_else(|| { + inserted = true; let id = self.new_file_id(); self.insert(path, id, root); id - }) + }); + (inserted, file_id) } pub fn get_id(&self, path: &Path) -> Option { self.path2id.get(path).map(|&id| id) @@ -105,8 +108,8 @@ mod test { #[test] fn test_resolve() { let mut m = PathMap::new(); - let id1 = m.get_or_insert(PathBuf::from("/foo"), Root::Workspace); - let id2 = m.get_or_insert(PathBuf::from("/foo/bar.rs"), Root::Workspace); + let (_, id1) = m.get_or_insert(PathBuf::from("/foo"), Root::Workspace); + let (_, id2) = m.get_or_insert(PathBuf::from("/foo/bar.rs"), Root::Workspace); assert_eq!(m.resolve(id1, &RelativePath::new("bar.rs")), Some(id2),) } } -- cgit v1.2.3