]> git.lizzy.rs Git - rust.git/commitdiff
Exclude special files
authorKirill Bulatov <mail4score@gmail.com>
Fri, 4 Sep 2020 12:13:31 +0000 (15:13 +0300)
committerKirill Bulatov <mail4score@gmail.com>
Wed, 9 Sep 2020 22:42:20 +0000 (01:42 +0300)
crates/base_db/src/lib.rs
crates/ide/src/completion/completion_context.rs

index 55ef9fc24d3d303414974c3461c1f0d6a3aeb700..c72e254f41526e1f3e63a5a76b5cb621fe0dfa6c 100644 (file)
@@ -172,17 +172,22 @@ fn possible_sudmobule_names(&self, module_file: FileId) -> Vec<String> {
             Some(("mod", Some("rs"))) | Some(("lib", Some("rs"))) => {
                 module_files.list_files_with_extensions(module_file, None)
             }
+            // TODO kb for `src/bin/foo.rs`, we need to check for modules in `src/bin/`
             Some((directory_with_module_name, Some("rs"))) => module_files
                 .list_files_with_extensions(
                     module_file,
                     Some(&format!("../{}/", directory_with_module_name)),
                 ),
+            // TODO kb also consider the case when there's no `../module_name.rs`, but `../module_name/mod.rs`
             _ => Vec::new(),
         };
 
         possible_submodule_files
             .into_iter()
             .filter(|(_, extension)| extension == &Some("rs"))
+            .filter(|(file_name, _)| file_name != &"mod")
+            .filter(|(file_name, _)| file_name != &"lib")
+            .filter(|(file_name, _)| file_name != &"main")
             .map(|(file_name, _)| file_name.to_owned())
             .collect()
     }
index b4c6eeb35c84c586261aae8f2ca5e19a18df7598..74cd16e0a10f485086b414216989d4a8ac53616e 100644 (file)
@@ -117,9 +117,6 @@ pub(super) fn new(
                 .to_module_def(position.file_id)
                 .and_then(|current_module| {
                     let definition_source = current_module.definition_source(db);
-                    if !matches!(definition_source.value, ModuleSource::SourceFile(_)) {
-                        return None;
-                    }
                     let module_definition_source_file = definition_source.file_id.original_file(db);
                     let mod_declaration_candidates =
                         db.possible_sudmobule_names(module_definition_source_file);