Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/mod_.rs')
| -rw-r--r-- | crates/ide-completion/src/completions/mod_.rs | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/crates/ide-completion/src/completions/mod_.rs b/crates/ide-completion/src/completions/mod_.rs index cca6a22f29..013747e4d0 100644 --- a/crates/ide-completion/src/completions/mod_.rs +++ b/crates/ide-completion/src/completions/mod_.rs @@ -2,14 +2,14 @@ use std::iter; -use hir::{HirFileIdExt, Module}; +use hir::Module; use ide_db::{ - base_db::{SourceRootDatabase, VfsPath}, FxHashSet, RootDatabase, SymbolKind, + base_db::{SourceDatabase, VfsPath}, }; -use syntax::{ast, AstNode, SyntaxKind}; +use syntax::{AstNode, SyntaxKind, ast}; -use crate::{context::CompletionContext, CompletionItem, Completions}; +use crate::{CompletionItem, Completions, context::CompletionContext}; /// Complete mod declaration, i.e. `mod $0;` pub(crate) fn complete_mod( @@ -43,11 +43,14 @@ pub(crate) fn complete_mod( let module_definition_file = current_module.definition_source_file_id(ctx.db).original_file(ctx.db); - let source_root = ctx.db.source_root(ctx.db.file_source_root(module_definition_file.file_id())); + let source_root_id = + ctx.db.file_source_root(module_definition_file.file_id(ctx.db)).source_root_id(ctx.db); + let source_root = ctx.db.source_root(source_root_id).source_root(ctx.db); + let directory_to_look_for_submodules = directory_to_look_for_submodules( current_module, ctx.db, - source_root.path_for_file(&module_definition_file.file_id())?, + source_root.path_for_file(&module_definition_file.file_id(ctx.db))?, )?; let existing_mod_declarations = current_module @@ -63,9 +66,11 @@ pub(crate) fn complete_mod( source_root .iter() - .filter(|&submodule_candidate_file| submodule_candidate_file != module_definition_file) .filter(|&submodule_candidate_file| { - module_declaration_file.is_none_or(|it| it != submodule_candidate_file) + submodule_candidate_file != module_definition_file.file_id(ctx.db) + }) + .filter(|&submodule_candidate_file| { + module_declaration_file.is_none_or(|it| it.file_id(ctx.db) != submodule_candidate_file) }) .filter_map(|submodule_file| { let submodule_path = source_root.path_for_file(&submodule_file)?; |