diff options
Diffstat (limited to 'crates/ra_db/src/input.rs')
-rw-r--r-- | crates/ra_db/src/input.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/crates/ra_db/src/input.rs b/crates/ra_db/src/input.rs index e371f849d..65b553a9f 100644 --- a/crates/ra_db/src/input.rs +++ b/crates/ra_db/src/input.rs | |||
@@ -19,6 +19,7 @@ use rustc_hash::FxHashSet; | |||
19 | 19 | ||
20 | use crate::{RelativePath, RelativePathBuf}; | 20 | use crate::{RelativePath, RelativePathBuf}; |
21 | use fmt::Display; | 21 | use fmt::Display; |
22 | use ra_proc_macro::ProcMacro; | ||
22 | 23 | ||
23 | /// `FileId` is an integer which uniquely identifies a file. File paths are | 24 | /// `FileId` is an integer which uniquely identifies a file. File paths are |
24 | /// messy and system-dependent, so most of the code should work directly with | 25 | /// messy and system-dependent, so most of the code should work directly with |
@@ -115,6 +116,9 @@ impl Display for CrateName { | |||
115 | } | 116 | } |
116 | } | 117 | } |
117 | 118 | ||
119 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] | ||
120 | pub struct ProcMacroId(pub usize); | ||
121 | |||
118 | #[derive(Debug, Clone, PartialEq, Eq)] | 122 | #[derive(Debug, Clone, PartialEq, Eq)] |
119 | pub struct CrateData { | 123 | pub struct CrateData { |
120 | pub root_file_id: FileId, | 124 | pub root_file_id: FileId, |
@@ -127,6 +131,7 @@ pub struct CrateData { | |||
127 | pub env: Env, | 131 | pub env: Env, |
128 | pub extern_source: ExternSource, | 132 | pub extern_source: ExternSource, |
129 | pub dependencies: Vec<Dependency>, | 133 | pub dependencies: Vec<Dependency>, |
134 | pub proc_macro: Vec<ProcMacro>, | ||
130 | } | 135 | } |
131 | 136 | ||
132 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 137 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
@@ -166,6 +171,7 @@ impl CrateGraph { | |||
166 | cfg_options: CfgOptions, | 171 | cfg_options: CfgOptions, |
167 | env: Env, | 172 | env: Env, |
168 | extern_source: ExternSource, | 173 | extern_source: ExternSource, |
174 | proc_macro: Vec<ProcMacro>, | ||
169 | ) -> CrateId { | 175 | ) -> CrateId { |
170 | let data = CrateData { | 176 | let data = CrateData { |
171 | root_file_id: file_id, | 177 | root_file_id: file_id, |
@@ -174,6 +180,7 @@ impl CrateGraph { | |||
174 | cfg_options, | 180 | cfg_options, |
175 | env, | 181 | env, |
176 | extern_source, | 182 | extern_source, |
183 | proc_macro, | ||
177 | dependencies: Vec::new(), | 184 | dependencies: Vec::new(), |
178 | }; | 185 | }; |
179 | let crate_id = CrateId(self.arena.len() as u32); | 186 | let crate_id = CrateId(self.arena.len() as u32); |
@@ -345,6 +352,7 @@ mod tests { | |||
345 | CfgOptions::default(), | 352 | CfgOptions::default(), |
346 | Env::default(), | 353 | Env::default(), |
347 | Default::default(), | 354 | Default::default(), |
355 | Default::default(), | ||
348 | ); | 356 | ); |
349 | let crate2 = graph.add_crate_root( | 357 | let crate2 = graph.add_crate_root( |
350 | FileId(2u32), | 358 | FileId(2u32), |
@@ -353,6 +361,7 @@ mod tests { | |||
353 | CfgOptions::default(), | 361 | CfgOptions::default(), |
354 | Env::default(), | 362 | Env::default(), |
355 | Default::default(), | 363 | Default::default(), |
364 | Default::default(), | ||
356 | ); | 365 | ); |
357 | let crate3 = graph.add_crate_root( | 366 | let crate3 = graph.add_crate_root( |
358 | FileId(3u32), | 367 | FileId(3u32), |
@@ -361,6 +370,7 @@ mod tests { | |||
361 | CfgOptions::default(), | 370 | CfgOptions::default(), |
362 | Env::default(), | 371 | Env::default(), |
363 | Default::default(), | 372 | Default::default(), |
373 | Default::default(), | ||
364 | ); | 374 | ); |
365 | assert!(graph.add_dep(crate1, CrateName::new("crate2").unwrap(), crate2).is_ok()); | 375 | assert!(graph.add_dep(crate1, CrateName::new("crate2").unwrap(), crate2).is_ok()); |
366 | assert!(graph.add_dep(crate2, CrateName::new("crate3").unwrap(), crate3).is_ok()); | 376 | assert!(graph.add_dep(crate2, CrateName::new("crate3").unwrap(), crate3).is_ok()); |
@@ -377,6 +387,7 @@ mod tests { | |||
377 | CfgOptions::default(), | 387 | CfgOptions::default(), |
378 | Env::default(), | 388 | Env::default(), |
379 | Default::default(), | 389 | Default::default(), |
390 | Default::default(), | ||
380 | ); | 391 | ); |
381 | let crate2 = graph.add_crate_root( | 392 | let crate2 = graph.add_crate_root( |
382 | FileId(2u32), | 393 | FileId(2u32), |
@@ -385,6 +396,7 @@ mod tests { | |||
385 | CfgOptions::default(), | 396 | CfgOptions::default(), |
386 | Env::default(), | 397 | Env::default(), |
387 | Default::default(), | 398 | Default::default(), |
399 | Default::default(), | ||
388 | ); | 400 | ); |
389 | let crate3 = graph.add_crate_root( | 401 | let crate3 = graph.add_crate_root( |
390 | FileId(3u32), | 402 | FileId(3u32), |
@@ -393,6 +405,7 @@ mod tests { | |||
393 | CfgOptions::default(), | 405 | CfgOptions::default(), |
394 | Env::default(), | 406 | Env::default(), |
395 | Default::default(), | 407 | Default::default(), |
408 | Default::default(), | ||
396 | ); | 409 | ); |
397 | assert!(graph.add_dep(crate1, CrateName::new("crate2").unwrap(), crate2).is_ok()); | 410 | assert!(graph.add_dep(crate1, CrateName::new("crate2").unwrap(), crate2).is_ok()); |
398 | assert!(graph.add_dep(crate2, CrateName::new("crate3").unwrap(), crate3).is_ok()); | 411 | assert!(graph.add_dep(crate2, CrateName::new("crate3").unwrap(), crate3).is_ok()); |
@@ -408,6 +421,7 @@ mod tests { | |||
408 | CfgOptions::default(), | 421 | CfgOptions::default(), |
409 | Env::default(), | 422 | Env::default(), |
410 | Default::default(), | 423 | Default::default(), |
424 | Default::default(), | ||
411 | ); | 425 | ); |
412 | let crate2 = graph.add_crate_root( | 426 | let crate2 = graph.add_crate_root( |
413 | FileId(2u32), | 427 | FileId(2u32), |
@@ -416,6 +430,7 @@ mod tests { | |||
416 | CfgOptions::default(), | 430 | CfgOptions::default(), |
417 | Env::default(), | 431 | Env::default(), |
418 | Default::default(), | 432 | Default::default(), |
433 | Default::default(), | ||
419 | ); | 434 | ); |
420 | assert!(graph | 435 | assert!(graph |
421 | .add_dep(crate1, CrateName::normalize_dashes("crate-name-with-dashes"), crate2) | 436 | .add_dep(crate1, CrateName::normalize_dashes("crate-name-with-dashes"), crate2) |