diff options
Diffstat (limited to 'crates/ra_ide_api/src/parent_module.rs')
-rw-r--r-- | crates/ra_ide_api/src/parent_module.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/crates/ra_ide_api/src/parent_module.rs b/crates/ra_ide_api/src/parent_module.rs index e94297fe3..603c3db6a 100644 --- a/crates/ra_ide_api/src/parent_module.rs +++ b/crates/ra_ide_api/src/parent_module.rs | |||
@@ -1,4 +1,4 @@ | |||
1 | use ra_db::FilePosition; | 1 | use ra_db::{FilePosition, FileId, CrateId}; |
2 | 2 | ||
3 | use crate::{NavigationTarget, db::RootDatabase}; | 3 | use crate::{NavigationTarget, db::RootDatabase}; |
4 | 4 | ||
@@ -13,6 +13,19 @@ pub(crate) fn parent_module(db: &RootDatabase, position: FilePosition) -> Vec<Na | |||
13 | vec![nav] | 13 | vec![nav] |
14 | } | 14 | } |
15 | 15 | ||
16 | /// Returns `Vec` for the same reason as `parent_module` | ||
17 | pub(crate) fn crate_for(db: &RootDatabase, file_id: FileId) -> Vec<CrateId> { | ||
18 | let module = match hir::source_binder::module_from_file_id(db, file_id) { | ||
19 | Some(it) => it, | ||
20 | None => return Vec::new(), | ||
21 | }; | ||
22 | let krate = match module.krate(db) { | ||
23 | Some(it) => it, | ||
24 | None => return Vec::new(), | ||
25 | }; | ||
26 | vec![krate.crate_id()] | ||
27 | } | ||
28 | |||
16 | #[cfg(test)] | 29 | #[cfg(test)] |
17 | mod tests { | 30 | mod tests { |
18 | use crate::mock_analysis::analysis_and_position; | 31 | use crate::mock_analysis::analysis_and_position; |