diff --git a/crates/ra_analysis/src/descriptors/module/mod.rs b/crates/ra_analysis/src/descriptors/module/mod.rs
index 8a75e11be4..16faea94e9 100644
--- a/crates/ra_analysis/src/descriptors/module/mod.rs
+++ b/crates/ra_analysis/src/descriptors/module/mod.rs
@@ -6,6 +6,7 @@ use std::sync::Arc;
use ra_editor::find_node_at_offset;
use ra_syntax::{
+ algo::generate,
ast::{self, AstNode, NameOwner},
SmolStr, SyntaxNode, SyntaxNodeRef,
};
@@ -27,6 +28,16 @@ pub(crate) struct ModuleDescriptor {
}
impl ModuleDescriptor {
+ /// Lookup `ModuleDescriptor` by `FileId`. Note that this is inherently
+ /// lossy transformation: in general, a single source might correspond to
+ /// several modules.
+ pub fn guess_from_file_id(
+ db: &impl DescriptorDatabase,
+ file_id: FileId,
+ ) -> Cancelable