mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 04:19:13 +00:00
Merge #6785
6785: Fix "no value set for FileTextQuery(FileId(..))" r=jonas-schievink a=jonas-schievink Fixes https://github.com/rust-analyzer/rust-analyzer/issues/6622 Let's hope I got it right this time, but I feel like I slowly begin to understand the main loop logic. bors r+ Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
This commit is contained in:
commit
243ba330dd
3 changed files with 19 additions and 8 deletions
|
@ -103,18 +103,19 @@ impl Vfs {
|
|||
(file_id, path)
|
||||
})
|
||||
}
|
||||
pub fn set_file_contents(&mut self, path: VfsPath, contents: Option<Vec<u8>>) {
|
||||
pub fn set_file_contents(&mut self, path: VfsPath, contents: Option<Vec<u8>>) -> bool {
|
||||
let file_id = self.alloc_file_id(path);
|
||||
let change_kind = match (&self.get(file_id), &contents) {
|
||||
(None, None) => return,
|
||||
(None, None) => return false,
|
||||
(None, Some(_)) => ChangeKind::Create,
|
||||
(Some(_), None) => ChangeKind::Delete,
|
||||
(Some(old), Some(new)) if old == new => return,
|
||||
(Some(old), Some(new)) if old == new => return false,
|
||||
(Some(_), Some(_)) => ChangeKind::Modify,
|
||||
};
|
||||
|
||||
*self.get_mut(file_id) = contents;
|
||||
self.changes.push(ChangedFile { file_id, change_kind })
|
||||
self.changes.push(ChangedFile { file_id, change_kind });
|
||||
true
|
||||
}
|
||||
pub fn has_changes(&self) -> bool {
|
||||
!self.changes.is_empty()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue