aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_db/src/fixture.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-06-11 10:04:09 +0100
committerAleksey Kladov <[email protected]>2020-06-23 16:51:06 +0100
commitdad1333b48c38bc7a5628fc0ff5304d003776a85 (patch)
tree29be52a980b4cae72f46a48c48135a15e31641e0 /crates/ra_db/src/fixture.rs
parent7aa66371ee3e8b31217513204c8b4f683584419d (diff)
New VFS
Diffstat (limited to 'crates/ra_db/src/fixture.rs')
-rw-r--r--crates/ra_db/src/fixture.rs32
1 files changed, 13 insertions, 19 deletions
diff --git a/crates/ra_db/src/fixture.rs b/crates/ra_db/src/fixture.rs
index af8fe11ec..f7d9118a9 100644
--- a/crates/ra_db/src/fixture.rs
+++ b/crates/ra_db/src/fixture.rs
@@ -57,17 +57,16 @@
57//! fn insert_source_code_here() {} 57//! fn insert_source_code_here() {}
58//! " 58//! "
59//! ``` 59//! ```
60 60use std::{str::FromStr, sync::Arc};
61use std::str::FromStr;
62use std::sync::Arc;
63 61
64use ra_cfg::CfgOptions; 62use ra_cfg::CfgOptions;
65use rustc_hash::FxHashMap; 63use rustc_hash::FxHashMap;
66use test_utils::{extract_offset, parse_fixture, parse_single_fixture, FixtureMeta, CURSOR_MARKER}; 64use test_utils::{extract_offset, parse_fixture, parse_single_fixture, FixtureMeta, CURSOR_MARKER};
65use vfs::{file_set::FileSet, VfsPath};
67 66
68use crate::{ 67use crate::{
69 input::CrateName, CrateGraph, CrateId, Edition, Env, FileId, FilePosition, RelativePathBuf, 68 input::CrateName, CrateGraph, CrateId, Edition, Env, FileId, FilePosition, SourceDatabaseExt,
70 SourceDatabaseExt, SourceRoot, SourceRootId, 69 SourceRoot, SourceRootId,
71}; 70};
72 71
73pub const WORKSPACE: SourceRootId = SourceRootId(0); 72pub const WORKSPACE: SourceRootId = SourceRootId(0);
@@ -105,10 +104,10 @@ impl<DB: SourceDatabaseExt + Default + 'static> WithFixture for DB {}
105 104
106fn with_single_file(db: &mut dyn SourceDatabaseExt, ra_fixture: &str) -> FileId { 105fn with_single_file(db: &mut dyn SourceDatabaseExt, ra_fixture: &str) -> FileId {
107 let file_id = FileId(0); 106 let file_id = FileId(0);
108 let rel_path: RelativePathBuf = "/main.rs".into(); 107 let mut file_set = vfs::file_set::FileSet::default();
108 file_set.insert(file_id, vfs::VfsPath::new_virtual_path("/main.rs".to_string()));
109 109
110 let mut source_root = SourceRoot::new_local(); 110 let source_root = SourceRoot::new_local(file_set);
111 source_root.insert_file(rel_path.clone(), file_id);
112 111
113 let fixture = parse_single_fixture(ra_fixture); 112 let fixture = parse_single_fixture(ra_fixture);
114 113
@@ -128,7 +127,6 @@ fn with_single_file(db: &mut dyn SourceDatabaseExt, ra_fixture: &str) -> FileId
128 meta.cfg, 127 meta.cfg,
129 meta.env, 128 meta.env,
130 Default::default(), 129 Default::default(),
131 Default::default(),
132 ); 130 );
133 crate_graph 131 crate_graph
134 } else { 132 } else {
@@ -140,13 +138,11 @@ fn with_single_file(db: &mut dyn SourceDatabaseExt, ra_fixture: &str) -> FileId
140 CfgOptions::default(), 138 CfgOptions::default(),
141 Env::default(), 139 Env::default(),
142 Default::default(), 140 Default::default(),
143 Default::default(),
144 ); 141 );
145 crate_graph 142 crate_graph
146 }; 143 };
147 144
148 db.set_file_text(file_id, Arc::new(ra_fixture.to_string())); 145 db.set_file_text(file_id, Arc::new(ra_fixture.to_string()));
149 db.set_file_relative_path(file_id, rel_path);
150 db.set_file_source_root(file_id, WORKSPACE); 146 db.set_file_source_root(file_id, WORKSPACE);
151 db.set_source_root(WORKSPACE, Arc::new(source_root)); 147 db.set_source_root(WORKSPACE, Arc::new(source_root));
152 db.set_crate_graph(Arc::new(crate_graph)); 148 db.set_crate_graph(Arc::new(crate_graph));
@@ -162,7 +158,7 @@ fn with_files(db: &mut dyn SourceDatabaseExt, fixture: &str) -> Option<FilePosit
162 let mut crate_deps = Vec::new(); 158 let mut crate_deps = Vec::new();
163 let mut default_crate_root: Option<FileId> = None; 159 let mut default_crate_root: Option<FileId> = None;
164 160
165 let mut source_root = SourceRoot::new_local(); 161 let mut file_set = FileSet::default();
166 let mut source_root_id = WORKSPACE; 162 let mut source_root_id = WORKSPACE;
167 let mut source_root_prefix = "/".to_string(); 163 let mut source_root_prefix = "/".to_string();
168 let mut file_id = FileId(0); 164 let mut file_id = FileId(0);
@@ -172,8 +168,8 @@ fn with_files(db: &mut dyn SourceDatabaseExt, fixture: &str) -> Option<FilePosit
172 for entry in fixture.iter() { 168 for entry in fixture.iter() {
173 let meta = match ParsedMeta::from(&entry.meta) { 169 let meta = match ParsedMeta::from(&entry.meta) {
174 ParsedMeta::Root { path } => { 170 ParsedMeta::Root { path } => {
175 let source_root = std::mem::replace(&mut source_root, SourceRoot::new_local()); 171 let file_set = std::mem::replace(&mut file_set, FileSet::default());
176 db.set_source_root(source_root_id, Arc::new(source_root)); 172 db.set_source_root(source_root_id, Arc::new(SourceRoot::new_local(file_set)));
177 source_root_id.0 += 1; 173 source_root_id.0 += 1;
178 source_root_prefix = path; 174 source_root_prefix = path;
179 continue; 175 continue;
@@ -190,7 +186,6 @@ fn with_files(db: &mut dyn SourceDatabaseExt, fixture: &str) -> Option<FilePosit
190 meta.cfg, 186 meta.cfg,
191 meta.env, 187 meta.env,
192 Default::default(), 188 Default::default(),
193 Default::default(),
194 ); 189 );
195 let prev = crates.insert(krate.clone(), crate_id); 190 let prev = crates.insert(krate.clone(), crate_id);
196 assert!(prev.is_none()); 191 assert!(prev.is_none());
@@ -212,9 +207,9 @@ fn with_files(db: &mut dyn SourceDatabaseExt, fixture: &str) -> Option<FilePosit
212 }; 207 };
213 208
214 db.set_file_text(file_id, Arc::new(text)); 209 db.set_file_text(file_id, Arc::new(text));
215 db.set_file_relative_path(file_id, meta.path.clone().into());
216 db.set_file_source_root(file_id, source_root_id); 210 db.set_file_source_root(file_id, source_root_id);
217 source_root.insert_file(meta.path.into(), file_id); 211 let path = VfsPath::new_virtual_path(meta.path);
212 file_set.insert(file_id, path.into());
218 213
219 file_id.0 += 1; 214 file_id.0 += 1;
220 } 215 }
@@ -228,7 +223,6 @@ fn with_files(db: &mut dyn SourceDatabaseExt, fixture: &str) -> Option<FilePosit
228 CfgOptions::default(), 223 CfgOptions::default(),
229 Env::default(), 224 Env::default(),
230 Default::default(), 225 Default::default(),
231 Default::default(),
232 ); 226 );
233 } else { 227 } else {
234 for (from, to) in crate_deps { 228 for (from, to) in crate_deps {
@@ -238,7 +232,7 @@ fn with_files(db: &mut dyn SourceDatabaseExt, fixture: &str) -> Option<FilePosit
238 } 232 }
239 } 233 }
240 234
241 db.set_source_root(source_root_id, Arc::new(source_root)); 235 db.set_source_root(source_root_id, Arc::new(SourceRoot::new_local(file_set)));
242 db.set_crate_graph(Arc::new(crate_graph)); 236 db.set_crate_graph(Arc::new(crate_graph));
243 237
244 file_position 238 file_position