diff options
Diffstat (limited to 'crates/ra_hir/src/mock.rs')
-rw-r--r-- | crates/ra_hir/src/mock.rs | 48 |
1 files changed, 2 insertions, 46 deletions
diff --git a/crates/ra_hir/src/mock.rs b/crates/ra_hir/src/mock.rs index 48723fa02..94aff93de 100644 --- a/crates/ra_hir/src/mock.rs +++ b/crates/ra_hir/src/mock.rs | |||
@@ -5,10 +5,9 @@ use std::{panic, sync::Arc}; | |||
5 | use hir_def::{db::DefDatabase2, ModuleId}; | 5 | use hir_def::{db::DefDatabase2, ModuleId}; |
6 | use hir_expand::diagnostics::DiagnosticSink; | 6 | use hir_expand::diagnostics::DiagnosticSink; |
7 | use parking_lot::Mutex; | 7 | use parking_lot::Mutex; |
8 | use ra_cfg::CfgOptions; | ||
9 | use ra_db::{ | 8 | use ra_db::{ |
10 | salsa, CrateGraph, CrateId, Edition, FileId, FileLoader, FileLoaderDelegate, RelativePath, | 9 | salsa, CrateId, FileId, FileLoader, FileLoaderDelegate, RelativePath, SourceDatabase, |
11 | RelativePathBuf, SourceDatabase, SourceDatabaseExt, SourceRoot, SourceRootId, | 10 | SourceRootId, |
12 | }; | 11 | }; |
13 | use rustc_hash::FxHashMap; | 12 | use rustc_hash::FxHashMap; |
14 | 13 | ||
@@ -63,14 +62,6 @@ impl HirDebugHelper for MockDatabase { | |||
63 | } | 62 | } |
64 | 63 | ||
65 | impl MockDatabase { | 64 | impl MockDatabase { |
66 | pub fn with_single_file(text: &str) -> (MockDatabase, SourceRoot, FileId) { | ||
67 | let mut db = MockDatabase::default(); | ||
68 | let mut source_root = SourceRoot::default(); | ||
69 | let file_id = db.add_file(WORKSPACE, "/", &mut source_root, "/main.rs", text); | ||
70 | db.set_source_root(WORKSPACE, Arc::new(source_root.clone())); | ||
71 | (db, source_root, file_id) | ||
72 | } | ||
73 | |||
74 | pub fn file_id_of(&self, path: &str) -> FileId { | 65 | pub fn file_id_of(&self, path: &str) -> FileId { |
75 | match self.files.get(path) { | 66 | match self.files.get(path) { |
76 | Some(it) => *it, | 67 | Some(it) => *it, |
@@ -96,41 +87,6 @@ impl MockDatabase { | |||
96 | } | 87 | } |
97 | buf | 88 | buf |
98 | } | 89 | } |
99 | |||
100 | fn add_file( | ||
101 | &mut self, | ||
102 | source_root_id: SourceRootId, | ||
103 | source_root_prefix: &str, | ||
104 | source_root: &mut SourceRoot, | ||
105 | path: &str, | ||
106 | text: &str, | ||
107 | ) -> FileId { | ||
108 | assert!(source_root_prefix.starts_with('/')); | ||
109 | assert!(source_root_prefix.ends_with('/')); | ||
110 | assert!(path.starts_with(source_root_prefix)); | ||
111 | let rel_path = RelativePathBuf::from_path(&path[source_root_prefix.len()..]).unwrap(); | ||
112 | |||
113 | let is_crate_root = rel_path == "lib.rs" || rel_path == "/main.rs"; | ||
114 | |||
115 | let file_id = FileId(self.files.len() as u32); | ||
116 | |||
117 | let prev = self.files.insert(path.to_string(), file_id); | ||
118 | assert!(prev.is_none(), "duplicate files in the text fixture"); | ||
119 | Arc::make_mut(&mut self.file_paths).insert(file_id, path.to_string()); | ||
120 | |||
121 | let text = Arc::new(text.to_string()); | ||
122 | self.set_file_text(file_id, text); | ||
123 | self.set_file_relative_path(file_id, rel_path.clone()); | ||
124 | self.set_file_source_root(file_id, source_root_id); | ||
125 | source_root.insert_file(rel_path, file_id); | ||
126 | |||
127 | if is_crate_root { | ||
128 | let mut crate_graph = CrateGraph::default(); | ||
129 | crate_graph.add_crate_root(file_id, Edition::Edition2018, CfgOptions::default()); | ||
130 | self.set_crate_graph(Arc::new(crate_graph)); | ||
131 | } | ||
132 | file_id | ||
133 | } | ||
134 | } | 90 | } |
135 | 91 | ||
136 | impl salsa::Database for MockDatabase { | 92 | impl salsa::Database for MockDatabase { |