aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/ra_assists/src/assists/auto_import.rs24
-rw-r--r--crates/ra_hir/src/code_model.rs17
2 files changed, 35 insertions, 6 deletions
diff --git a/crates/ra_assists/src/assists/auto_import.rs b/crates/ra_assists/src/assists/auto_import.rs
index 932a52bff..8c483e2da 100644
--- a/crates/ra_assists/src/assists/auto_import.rs
+++ b/crates/ra_assists/src/assists/auto_import.rs
@@ -211,4 +211,28 @@ mod tests {
211 }", 211 }",
212 ); 212 );
213 } 213 }
214
215 #[test]
216 fn function_import() {
217 check_assist_with_imports_locator(
218 auto_import,
219 TestImportsLocator::new,
220 r"
221 test_function<|>
222
223 pub mod PubMod {
224 pub fn test_function() {};
225 }
226 ",
227 r"
228 use PubMod::test_function;
229
230 test_function<|>
231
232 pub mod PubMod {
233 pub fn test_function() {};
234 }
235 ",
236 );
237 }
214} 238}
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs
index 500b34c17..eaacf8c9e 100644
--- a/crates/ra_hir/src/code_model.rs
+++ b/crates/ra_hir/src/code_model.rs
@@ -119,7 +119,7 @@ impl_froms!(
119 BuiltinType 119 BuiltinType
120); 120);
121 121
122pub use hir_def::{attr::Attrs, visibility::Visibility, AssocItemId}; 122pub use hir_def::{attr::Attrs, item_scope::ItemInNs, visibility::Visibility, AssocItemId};
123use rustc_hash::FxHashSet; 123use rustc_hash::FxHashSet;
124 124
125impl Module { 125impl Module {
@@ -238,11 +238,16 @@ impl Module {
238 item: ModuleDef, 238 item: ModuleDef,
239 ) -> Option<hir_def::path::ModPath> { 239 ) -> Option<hir_def::path::ModPath> {
240 // FIXME expose namespace choice 240 // FIXME expose namespace choice
241 hir_def::find_path::find_path( 241 hir_def::find_path::find_path(db, determine_item_namespace(item), self.into())
242 db, 242 }
243 hir_def::item_scope::ItemInNs::Types(item.into()), 243}
244 self.into(), 244
245 ) 245fn determine_item_namespace(module_def: ModuleDef) -> ItemInNs {
246 match module_def {
247 ModuleDef::Static(_) | ModuleDef::Const(_) | ModuleDef::Function(_) => {
248 ItemInNs::Values(module_def.into())
249 }
250 _ => ItemInNs::Types(module_def.into()),
246 } 251 }
247} 252}
248 253