mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-26 20:09:19 +00:00
Stop using an Arc when setting the file text
This commit is contained in:
parent
02b6c181dd
commit
0f43b55e83
11 changed files with 21 additions and 24 deletions
|
@ -13,7 +13,7 @@ use crate::{CrateGraph, SourceDatabaseExt, SourceDatabaseExt2, SourceRoot, Sourc
|
|||
#[derive(Default)]
|
||||
pub struct FileChange {
|
||||
pub roots: Option<Vec<SourceRoot>>,
|
||||
pub files_changed: Vec<(FileId, Option<Arc<str>>)>,
|
||||
pub files_changed: Vec<(FileId, Option<String>)>,
|
||||
pub crate_graph: Option<CrateGraph>,
|
||||
}
|
||||
|
||||
|
@ -42,7 +42,7 @@ impl FileChange {
|
|||
self.roots = Some(roots);
|
||||
}
|
||||
|
||||
pub fn change_file(&mut self, file_id: FileId, new_text: Option<Arc<str>>) {
|
||||
pub fn change_file(&mut self, file_id: FileId, new_text: Option<String>) {
|
||||
self.files_changed.push((file_id, new_text))
|
||||
}
|
||||
|
||||
|
@ -68,7 +68,7 @@ impl FileChange {
|
|||
let source_root = db.source_root(source_root_id);
|
||||
let durability = durability(&source_root);
|
||||
// XXX: can't actually remove the file, just reset the text
|
||||
let text = text.unwrap_or_else(|| Arc::from(""));
|
||||
let text = text.as_ref().map(String::as_str).unwrap_or_else(|| "");
|
||||
db.set_file_text_with_durability(file_id, text, durability)
|
||||
}
|
||||
if let Some(crate_graph) = self.crate_graph {
|
||||
|
|
|
@ -115,14 +115,14 @@ fn file_text(db: &dyn SourceDatabaseExt, file_id: FileId) -> Arc<str> {
|
|||
}
|
||||
|
||||
pub trait SourceDatabaseExt2 {
|
||||
fn set_file_text(&mut self, file_id: FileId, text: Arc<str>) {
|
||||
fn set_file_text(&mut self, file_id: FileId, text: &str) {
|
||||
self.set_file_text_with_durability(file_id, text, Durability::LOW);
|
||||
}
|
||||
|
||||
fn set_file_text_with_durability(
|
||||
&mut self,
|
||||
file_id: FileId,
|
||||
text: Arc<str>,
|
||||
text: &str,
|
||||
durability: Durability,
|
||||
);
|
||||
}
|
||||
|
@ -131,7 +131,7 @@ impl<Db: ?Sized + SourceDatabaseExt> SourceDatabaseExt2 for Db {
|
|||
fn set_file_text_with_durability(
|
||||
&mut self,
|
||||
file_id: FileId,
|
||||
text: Arc<str>,
|
||||
text: &str,
|
||||
durability: Durability,
|
||||
) {
|
||||
let bytes = text.as_bytes();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue