Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_db/src/source_change.rs')
| -rw-r--r-- | crates/ide_db/src/source_change.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/crates/ide_db/src/source_change.rs b/crates/ide_db/src/source_change.rs index 4c2133e65b..aa910eb325 100644 --- a/crates/ide_db/src/source_change.rs +++ b/crates/ide_db/src/source_change.rs @@ -54,6 +54,13 @@ impl SourceChange { pub fn get_source_edit(&self, file_id: FileId) -> Option<&TextEdit> { self.source_file_edits.get(&file_id) } + + pub fn merge(mut self, other: SourceChange) -> SourceChange { + self.extend(other.source_file_edits); + self.extend(other.file_system_edits); + self.is_snippet |= other.is_snippet; + self + } } impl Extend<(FileId, TextEdit)> for SourceChange { @@ -62,6 +69,12 @@ impl Extend<(FileId, TextEdit)> for SourceChange { } } +impl Extend<FileSystemEdit> for SourceChange { + fn extend<T: IntoIterator<Item = FileSystemEdit>>(&mut self, iter: T) { + iter.into_iter().for_each(|edit| self.push_file_system_edit(edit)); + } +} + impl From<FxHashMap<FileId, TextEdit>> for SourceChange { fn from(source_file_edits: FxHashMap<FileId, TextEdit>) -> SourceChange { SourceChange { source_file_edits, file_system_edits: Vec::new(), is_snippet: false } |