Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/extract_module.rs')
| -rw-r--r-- | crates/ide-assists/src/handlers/extract_module.rs | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/crates/ide-assists/src/handlers/extract_module.rs b/crates/ide-assists/src/handlers/extract_module.rs index 6e3be0ce69..b82b7984d4 100644 --- a/crates/ide-assists/src/handlers/extract_module.rs +++ b/crates/ide-assists/src/handlers/extract_module.rs @@ -1,25 +1,26 @@ use std::iter; use either::Either; -use hir::{HasSource, HirFileIdExt, ModuleSource}; +use hir::{HasSource, ModuleSource}; use ide_db::{ - assists::{AssistId, AssistKind}, + FileId, FxHashMap, FxHashSet, + assists::AssistId, defs::{Definition, NameClass, NameRefClass}, search::{FileReference, SearchScope}, - FileId, FxHashMap, FxHashSet, }; use itertools::Itertools; use smallvec::SmallVec; use syntax::{ + AstNode, + SyntaxKind::{self, WHITESPACE}, + SyntaxNode, TextRange, TextSize, algo::find_node_at_range, ast::{ - self, + self, HasVisibility, edit::{AstNodeEdit, IndentLevel}, - make, HasVisibility, + make, }, - match_ast, ted, AstNode, - SyntaxKind::{self, WHITESPACE}, - SyntaxNode, TextRange, TextSize, + match_ast, ted, }; use crate::{AssistContext, Assists}; @@ -90,7 +91,7 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti let old_item_indent = module.body_items[0].indent_level(); acc.add( - AssistId("extract_module", AssistKind::RefactorExtract), + AssistId::refactor_extract("extract_module"), "Extract Module", module.text_range, |builder| { @@ -112,7 +113,7 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti let (usages_to_be_processed, record_fields, use_stmts_to_be_inserted) = module.get_usages_and_record_fields(ctx); - builder.edit_file(ctx.file_id()); + builder.edit_file(ctx.vfs_file_id()); use_stmts_to_be_inserted.into_iter().for_each(|(_, use_stmt)| { builder.insert(ctx.selection_trimmed().end(), format!("\n{use_stmt}")); }); @@ -124,7 +125,7 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti let mut usages_to_be_processed_for_cur_file = vec![]; for (file_id, usages) in usages_to_be_processed { - if file_id == ctx.file_id() { + if file_id == ctx.vfs_file_id() { usages_to_be_processed_for_cur_file = usages; continue; } @@ -134,7 +135,7 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti } } - builder.edit_file(ctx.file_id()); + builder.edit_file(ctx.vfs_file_id()); for (text_range, usage) in usages_to_be_processed_for_cur_file { builder.replace(text_range, usage); } @@ -363,7 +364,7 @@ impl Module { None }); - refs_in_files.entry(file_id.file_id()).or_default().extend(usages); + refs_in_files.entry(file_id.file_id(ctx.db())).or_default().extend(usages); } } @@ -457,6 +458,7 @@ impl Module { let selection_range = ctx.selection_trimmed(); let file_id = ctx.file_id(); let usage_res = def.usages(&ctx.sema).in_scope(&SearchScope::single_file(file_id)).all(); + let file = ctx.sema.parse(file_id); // track uses which does not exists in `Use` @@ -483,7 +485,7 @@ impl Module { ctx, curr_parent_module, selection_range, - file_id.file_id(), + file_id.file_id(ctx.db()), ); // Find use stmt that use def in current file @@ -670,7 +672,7 @@ fn check_def_in_mod_and_out_sel( let have_same_parent = if let Some(ast_module) = &curr_parent_module { ctx.sema.to_module_def(ast_module).is_some_and(|it| it == $x.module(ctx.db())) } else { - source.file_id.original_file(ctx.db()) == curr_file_id + source.file_id.original_file(ctx.db()).file_id(ctx.db()) == curr_file_id }; let in_sel = !selection_range.contains_range(source.value.syntax().text_range()); @@ -686,7 +688,7 @@ fn check_def_in_mod_and_out_sel( (Some(ast_module), Some(hir_module)) => { ctx.sema.to_module_def(ast_module).is_some_and(|it| it == hir_module) } - _ => source.file_id.original_file(ctx.db()) == curr_file_id, + _ => source.file_id.original_file(ctx.db()).file_id(ctx.db()) == curr_file_id, }; if have_same_parent { @@ -1159,8 +1161,8 @@ mod modname { } #[test] - fn test_extract_module_for_impl_not_having_corresponding_adt_in_selection_and_not_in_same_mod_but_with_super( - ) { + fn test_extract_module_for_impl_not_having_corresponding_adt_in_selection_and_not_in_same_mod_but_with_super() + { check_assist( extract_module, r" |