aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/mock.rs
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2019-02-13 19:31:27 +0000
committerFlorian Diebold <[email protected]>2019-02-13 19:31:47 +0000
commit70839b7ef8217fd019ce5bd3a643a8a16f5fa829 (patch)
treed6888643048c0cf5738f4ddf756047ad138e500c /crates/ra_hir/src/mock.rs
parentd5ad38cbb87103d8713855e0ec705fd957249afd (diff)
Make edition handling a bit nicer and allow specifying edition in crate_graph macro
Diffstat (limited to 'crates/ra_hir/src/mock.rs')
-rw-r--r--crates/ra_hir/src/mock.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/crates/ra_hir/src/mock.rs b/crates/ra_hir/src/mock.rs
index 145ed39a1..f1cad77c5 100644
--- a/crates/ra_hir/src/mock.rs
+++ b/crates/ra_hir/src/mock.rs
@@ -59,12 +59,12 @@ impl MockDatabase {
59 pub fn set_crate_graph_from_fixture(&mut self, graph: CrateGraphFixture) { 59 pub fn set_crate_graph_from_fixture(&mut self, graph: CrateGraphFixture) {
60 let mut ids = FxHashMap::default(); 60 let mut ids = FxHashMap::default();
61 let mut crate_graph = CrateGraph::default(); 61 let mut crate_graph = CrateGraph::default();
62 for (crate_name, (crate_root, _)) in graph.0.iter() { 62 for (crate_name, (crate_root, edition, _)) in graph.0.iter() {
63 let crate_root = self.file_id_of(&crate_root); 63 let crate_root = self.file_id_of(&crate_root);
64 let crate_id = crate_graph.add_crate_root(crate_root, Edition::Edition2018); 64 let crate_id = crate_graph.add_crate_root(crate_root, *edition);
65 ids.insert(crate_name, crate_id); 65 ids.insert(crate_name, crate_id);
66 } 66 }
67 for (crate_name, (_, deps)) in graph.0.iter() { 67 for (crate_name, (_, _, deps)) in graph.0.iter() {
68 let from = ids[crate_name]; 68 let from = ids[crate_name];
69 for dep in deps { 69 for dep in deps {
70 let to = ids[dep]; 70 let to = ids[dep];
@@ -233,16 +233,19 @@ impl MockDatabase {
233} 233}
234 234
235#[derive(Default)] 235#[derive(Default)]
236pub struct CrateGraphFixture(pub FxHashMap<String, (String, Vec<String>)>); 236pub struct CrateGraphFixture(pub FxHashMap<String, (String, Edition, Vec<String>)>);
237 237
238#[macro_export] 238#[macro_export]
239macro_rules! crate_graph { 239macro_rules! crate_graph {
240 ($($crate_name:literal: ($crate_path:literal, [$($dep:literal),*]),)*) => {{ 240 ($($crate_name:literal: ($crate_path:literal, $($edition:literal,)? [$($dep:literal),*]),)*) => {{
241 let mut res = $crate::mock::CrateGraphFixture::default(); 241 let mut res = $crate::mock::CrateGraphFixture::default();
242 $( 242 $(
243 #[allow(unused_mut, unused_assignments)]
244 let mut edition = ra_db::Edition::Edition2018;
245 $(edition = ra_db::Edition::from_string($edition);)?
243 res.0.insert( 246 res.0.insert(
244 $crate_name.to_string(), 247 $crate_name.to_string(),
245 ($crate_path.to_string(), vec![$($dep.to_string()),*]) 248 ($crate_path.to_string(), edition, vec![$($dep.to_string()),*])
246 ); 249 );
247 )* 250 )*
248 res 251 res