aboutsummaryrefslogtreecommitdiff
path: root/crates/assists/src/assist_context.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/assists/src/assist_context.rs')
-rw-r--r--crates/assists/src/assist_context.rs16
1 files changed, 4 insertions, 12 deletions
diff --git a/crates/assists/src/assist_context.rs b/crates/assists/src/assist_context.rs
index 91cc63427..de4b32573 100644
--- a/crates/assists/src/assist_context.rs
+++ b/crates/assists/src/assist_context.rs
@@ -10,7 +10,7 @@ use ide_db::{
10}; 10};
11use ide_db::{ 11use ide_db::{
12 label::Label, 12 label::Label,
13 source_change::{FileSystemEdit, SourceChange, SourceFileEdit}, 13 source_change::{FileSystemEdit, SourceChange, SourceFileEdits},
14 RootDatabase, 14 RootDatabase,
15}; 15};
16use syntax::{ 16use syntax::{
@@ -181,7 +181,7 @@ pub(crate) struct AssistBuilder {
181 edit: TextEditBuilder, 181 edit: TextEditBuilder,
182 file_id: FileId, 182 file_id: FileId,
183 is_snippet: bool, 183 is_snippet: bool,
184 source_file_edits: Vec<SourceFileEdit>, 184 source_file_edits: SourceFileEdits,
185 file_system_edits: Vec<FileSystemEdit>, 185 file_system_edits: Vec<FileSystemEdit>,
186} 186}
187 187
@@ -191,7 +191,7 @@ impl AssistBuilder {
191 edit: TextEdit::builder(), 191 edit: TextEdit::builder(),
192 file_id, 192 file_id,
193 is_snippet: false, 193 is_snippet: false,
194 source_file_edits: Vec::default(), 194 source_file_edits: SourceFileEdits::default(),
195 file_system_edits: Vec::default(), 195 file_system_edits: Vec::default(),
196 } 196 }
197 } 197 }
@@ -204,15 +204,7 @@ impl AssistBuilder {
204 fn commit(&mut self) { 204 fn commit(&mut self) {
205 let edit = mem::take(&mut self.edit).finish(); 205 let edit = mem::take(&mut self.edit).finish();
206 if !edit.is_empty() { 206 if !edit.is_empty() {
207 match self.source_file_edits.binary_search_by_key(&self.file_id, |edit| edit.file_id) { 207 self.source_file_edits.insert(self.file_id, edit);
208 Ok(idx) => self.source_file_edits[idx]
209 .edit
210 .union(edit)
211 .expect("overlapping edits for same file"),
212 Err(idx) => self
213 .source_file_edits
214 .insert(idx, SourceFileEdit { file_id: self.file_id, edit }),
215 }
216 } 208 }
217 } 209 }
218 210