Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-db/src/rename.rs')
| -rw-r--r-- | crates/ide-db/src/rename.rs | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/crates/ide-db/src/rename.rs b/crates/ide-db/src/rename.rs index 1633065f65..b8119e1aab 100644 --- a/crates/ide-db/src/rename.rs +++ b/crates/ide-db/src/rename.rs @@ -28,22 +28,22 @@ use crate::{ }; use base_db::AnchoredPathBuf; use either::Either; -use hir::{FieldSource, FileRange, HirFileIdExt, InFile, ModuleSource, Semantics}; -use span::{Edition, EditionedFileId, FileId, SyntaxContextId}; -use stdx::{never, TupleExt}; +use hir::{EditionedFileId, FieldSource, FileRange, InFile, ModuleSource, Semantics}; +use span::{Edition, FileId, SyntaxContext}; +use stdx::{TupleExt, never}; use syntax::{ + AstNode, SyntaxKind, T, TextRange, ast::{self, HasName}, utils::is_raw_identifier, - AstNode, SyntaxKind, TextRange, T, }; use crate::{ + RootDatabase, defs::Definition, search::{FileReference, FileReferenceNode}, source_change::{FileSystemEdit, SourceChange}, syntax_helpers::node_ext::expr_as_name_ref, traits::convert_to_def_in_trait, - RootDatabase, }; pub type Result<T, E = RenameError> = std::result::Result<T, E>; @@ -113,7 +113,7 @@ impl Definition { /// renamed and extern crate names will report its range, though a rename will introduce /// an alias instead. pub fn range_for_rename(self, sema: &Semantics<'_, RootDatabase>) -> Option<FileRange> { - let syn_ctx_is_root = |(range, ctx): (_, SyntaxContextId)| ctx.is_root().then_some(range); + let syn_ctx_is_root = |(range, ctx): (_, SyntaxContext)| ctx.is_root().then_some(range); let res = match self { Definition::Macro(mac) => { let src = sema.source(mac)?; @@ -220,7 +220,7 @@ impl Definition { fn name_range<D>( def: D, sema: &Semantics<'_, RootDatabase>, - ) -> Option<(FileRange, SyntaxContextId)> + ) -> Option<(FileRange, SyntaxContext)> where D: hir::HasSource, D::Ast: ast::HasName, @@ -249,7 +249,7 @@ fn rename_mod( let InFile { file_id, value: def_source } = module.definition_source(sema.db); if let ModuleSource::SourceFile(..) = def_source { - let anchor = file_id.original_file(sema.db).file_id(); + let anchor = file_id.original_file(sema.db).file_id(sema.db); let is_mod_rs = module.is_mod_rs(sema.db); let has_detached_child = module.children(sema.db).any(|child| !child.is_inline(sema.db)); @@ -296,13 +296,13 @@ fn rename_mod( .original_file_range_opt(sema.db) .map(TupleExt::head) { - let new_name = if is_raw_identifier(new_name, file_id.edition()) { + let new_name = if is_raw_identifier(new_name, file_id.edition(sema.db)) { format!("r#{new_name}") } else { new_name.to_owned() }; source_change.insert_source_edit( - file_id.file_id(), + file_id.file_id(sema.db), TextEdit::replace(file_range.range, new_name), ) }; @@ -315,8 +315,8 @@ fn rename_mod( let usages = def.usages(sema).all(); let ref_edits = usages.iter().map(|(file_id, references)| { ( - EditionedFileId::file_id(file_id), - source_edit_from_references(references, def, new_name, file_id.edition()), + file_id.file_id(sema.db), + source_edit_from_references(references, def, new_name, file_id.edition(sema.db)), ) }); source_change.extend(ref_edits); @@ -362,19 +362,15 @@ fn rename_reference( let mut source_change = SourceChange::default(); source_change.extend(usages.iter().map(|(file_id, references)| { ( - EditionedFileId::file_id(file_id), - source_edit_from_references(references, def, new_name, file_id.edition()), + file_id.file_id(sema.db), + source_edit_from_references(references, def, new_name, file_id.edition(sema.db)), ) })); - let mut insert_def_edit = |def| { - let (file_id, edit) = source_edit_from_def(sema, def, new_name, &mut source_change)?; - source_change.insert_source_edit(file_id, edit); - Ok(()) - }; // This needs to come after the references edits, because we change the annotation of existing edits // if a conflict is detected. - insert_def_edit(def)?; + let (file_id, edit) = source_edit_from_def(sema, def, new_name, &mut source_change)?; + source_change.insert_source_edit(file_id, edit); Ok(source_change) } @@ -545,7 +541,7 @@ fn source_edit_from_def( source_change: &mut SourceChange, ) -> Result<(FileId, TextEdit)> { let new_name_edition_aware = |new_name: &str, file_id: EditionedFileId| { - if is_raw_identifier(new_name, file_id.edition()) { + if is_raw_identifier(new_name, file_id.edition(sema.db)) { format!("r#{new_name}") } else { new_name.to_owned() @@ -642,7 +638,7 @@ fn source_edit_from_def( edit.set_annotation(conflict_annotation); let Some(file_id) = file_id else { bail!("No file available to rename") }; - return Ok((EditionedFileId::file_id(file_id), edit)); + return Ok((file_id.file_id(sema.db), edit)); } let FileRange { file_id, range } = def .range_for_rename(sema) @@ -658,7 +654,7 @@ fn source_edit_from_def( _ => (range, new_name.to_owned()), }; edit.replace(range, new_name_edition_aware(&new_name, file_id)); - Ok((file_id.file_id(), edit.finish())) + Ok((file_id.file_id(sema.db), edit.finish())) } #[derive(Copy, Clone, Debug, PartialEq)] |