From 2c1777a2e264e58fccd5ace94b238c8a497ddbda Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 12 Jan 2021 15:51:02 +0100 Subject: Ensure uniqueness of file ids in reference search via hashmap --- crates/ide/src/references/rename.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'crates/ide/src/references/rename.rs') diff --git a/crates/ide/src/references/rename.rs b/crates/ide/src/references/rename.rs index dd08e1c32..5207388b5 100644 --- a/crates/ide/src/references/rename.rs +++ b/crates/ide/src/references/rename.rs @@ -9,7 +9,7 @@ use hir::{Module, ModuleDef, ModuleSource, Semantics}; use ide_db::{ base_db::{AnchoredPathBuf, FileId, FileRange, SourceDatabaseExt}, defs::{Definition, NameClass, NameRefClass}, - search::FileReferences, + search::FileReference, RootDatabase, }; use syntax::{ @@ -176,7 +176,8 @@ fn find_all_refs( fn source_edit_from_references( sema: &Semantics, - &FileReferences { file_id, ref references }: &FileReferences, + file_id: FileId, + references: &[FileReference], new_name: &str, ) -> SourceFileEdit { let mut edit = TextEdit::builder(); @@ -283,10 +284,9 @@ fn rename_mod( } let RangeInfo { range, info: refs } = find_all_refs(sema, position)?; - let ref_edits = refs - .references() - .iter() - .map(|reference| source_edit_from_references(sema, reference, new_name)); + let ref_edits = refs.references().iter().map(|(&file_id, references)| { + source_edit_from_references(sema, file_id, references, new_name) + }); source_file_edits.extend(ref_edits); Ok(RangeInfo::new(range, SourceChange::from_edits(source_file_edits, file_system_edits))) @@ -341,7 +341,9 @@ fn rename_to_self( let mut edits = refs .references() .iter() - .map(|reference| source_edit_from_references(sema, reference, "self")) + .map(|(&file_id, references)| { + source_edit_from_references(sema, file_id, references, "self") + }) .collect::>(); edits.push(SourceFileEdit { @@ -467,7 +469,9 @@ fn rename_reference( let edit = refs .into_iter() - .map(|reference| source_edit_from_references(sema, &reference, new_name)) + .map(|(file_id, references)| { + source_edit_from_references(sema, file_id, &references, new_name) + }) .collect::>(); Ok(RangeInfo::new(range, SourceChange::from(edit))) -- cgit v1.2.3