diff options
author | Kirill Bulatov <[email protected]> | 2020-09-07 17:21:39 +0100 |
---|---|---|
committer | Kirill Bulatov <[email protected]> | 2020-09-09 23:42:20 +0100 |
commit | 6ba479cd058aa54a9f161085c7ff9ac1f12d8df3 (patch) | |
tree | 1fc72b28fba9df437edb514ec6c7c31af1d7406a /crates/ide/src/completion/complete_mod.rs | |
parent | 33179a0ae1ba9a908cc34a4cf87599ed779b9886 (diff) |
Finally cretae the mod completion module
Diffstat (limited to 'crates/ide/src/completion/complete_mod.rs')
-rw-r--r-- | crates/ide/src/completion/complete_mod.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/crates/ide/src/completion/complete_mod.rs b/crates/ide/src/completion/complete_mod.rs new file mode 100644 index 000000000..4c1e79603 --- /dev/null +++ b/crates/ide/src/completion/complete_mod.rs | |||
@@ -0,0 +1,39 @@ | |||
1 | //! Completes mod declarations. | ||
2 | |||
3 | use base_db::FileLoader; | ||
4 | use hir::ModuleSource; | ||
5 | |||
6 | use super::{completion_context::CompletionContext, completion_item::Completions}; | ||
7 | |||
8 | /// Complete mod declaration, i.e. `mod <|> ;` | ||
9 | pub(super) fn complete_mod(acc: &mut Completions, ctx: &CompletionContext) { | ||
10 | let module_names_for_import = ctx | ||
11 | .sema | ||
12 | // TODO kb this is wrong, since we need not the file module | ||
13 | .to_module_def(ctx.position.file_id) | ||
14 | .and_then(|current_module| { | ||
15 | dbg!(current_module.name(ctx.db)); | ||
16 | dbg!(current_module.definition_source(ctx.db)); | ||
17 | dbg!(current_module.declaration_source(ctx.db)); | ||
18 | let mut zz = Vec::new(); | ||
19 | let mut vv = Some(current_module); | ||
20 | while let Some(ModuleSource::Module(_)) = | ||
21 | vv.map(|vv| vv.definition_source(ctx.db).value) | ||
22 | { | ||
23 | zz.push(current_module.name(ctx.db)); | ||
24 | vv = current_module.parent(ctx.db); | ||
25 | } | ||
26 | dbg!(zz); | ||
27 | let definition_source = current_module.definition_source(ctx.db); | ||
28 | // TODO kb filter out declarations in possible_sudmobule_names | ||
29 | // let declaration_source = current_module.declaration_source(ctx.db); | ||
30 | let module_definition_source_file = definition_source.file_id.original_file(ctx.db); | ||
31 | let mod_declaration_candidates = | ||
32 | ctx.db.possible_sudmobule_names(module_definition_source_file); | ||
33 | dbg!(mod_declaration_candidates); | ||
34 | // TODO kb exlude existing children from the candidates | ||
35 | let existing_children = current_module.children(ctx.db).collect::<Vec<_>>(); | ||
36 | None::<Vec<String>> | ||
37 | }) | ||
38 | .unwrap_or_default(); | ||
39 | } | ||