diff options
Diffstat (limited to 'crates/ra_ide_api/src/parent_module.rs')
-rw-r--r-- | crates/ra_ide_api/src/parent_module.rs | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/crates/ra_ide_api/src/parent_module.rs b/crates/ra_ide_api/src/parent_module.rs index 603c3db6a..27788c984 100644 --- a/crates/ra_ide_api/src/parent_module.rs +++ b/crates/ra_ide_api/src/parent_module.rs | |||
@@ -28,7 +28,11 @@ pub(crate) fn crate_for(db: &RootDatabase, file_id: FileId) -> Vec<CrateId> { | |||
28 | 28 | ||
29 | #[cfg(test)] | 29 | #[cfg(test)] |
30 | mod tests { | 30 | mod tests { |
31 | use crate::mock_analysis::analysis_and_position; | 31 | use crate::{ |
32 | AnalysisChange, CrateGraph, | ||
33 | mock_analysis::{analysis_and_position, MockAnalysis}, | ||
34 | Edition::Edition2018, | ||
35 | }; | ||
32 | 36 | ||
33 | #[test] | 37 | #[test] |
34 | fn test_resolve_parent_module() { | 38 | fn test_resolve_parent_module() { |
@@ -59,4 +63,28 @@ mod tests { | |||
59 | let nav = analysis.parent_module(pos).unwrap().pop().unwrap(); | 63 | let nav = analysis.parent_module(pos).unwrap().pop().unwrap(); |
60 | nav.assert_match("baz MODULE FileId(1) [32; 44)"); | 64 | nav.assert_match("baz MODULE FileId(1) [32; 44)"); |
61 | } | 65 | } |
66 | |||
67 | #[test] | ||
68 | fn test_resolve_crate_root() { | ||
69 | let mock = MockAnalysis::with_files( | ||
70 | " | ||
71 | //- /bar.rs | ||
72 | mod foo; | ||
73 | //- /foo.rs | ||
74 | // empty <|> | ||
75 | ", | ||
76 | ); | ||
77 | let root_file = mock.id_of("/bar.rs"); | ||
78 | let mod_file = mock.id_of("/foo.rs"); | ||
79 | let mut host = mock.analysis_host(); | ||
80 | assert!(host.analysis().crate_for(mod_file).unwrap().is_empty()); | ||
81 | |||
82 | let mut crate_graph = CrateGraph::default(); | ||
83 | let crate_id = crate_graph.add_crate_root(root_file, Edition2018); | ||
84 | let mut change = AnalysisChange::new(); | ||
85 | change.set_crate_graph(crate_graph); | ||
86 | host.apply_change(change); | ||
87 | |||
88 | assert_eq!(host.analysis().crate_for(mod_file).unwrap(), vec![crate_id]); | ||
89 | } | ||
62 | } | 90 | } |