Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/lib.rs')
-rw-r--r--crates/ide/src/lib.rs23
1 files changed, 17 insertions, 6 deletions
diff --git a/crates/ide/src/lib.rs b/crates/ide/src/lib.rs
index 270998cdf7..0af2a1f820 100644
--- a/crates/ide/src/lib.rs
+++ b/crates/ide/src/lib.rs
@@ -64,9 +64,11 @@ use cfg::CfgOptions;
use fetch_crates::CrateInfo;
use hir::{ChangeWithProcMacros, EditionedFileId, crate_def_map, sym};
use ide_db::base_db::relevant_crates;
+use ide_db::base_db::salsa::Durability;
+use ide_db::line_index;
use ide_db::ra_fixture::RaFixtureAnalysis;
use ide_db::{
- FxHashMap, FxIndexSet, LineIndexDatabase,
+ FxHashMap, FxIndexSet,
base_db::{
CrateOrigin, CrateWorkspaceData, Env, FileSet, SourceDatabase, VfsPath,
salsa::{Cancelled, Database},
@@ -126,7 +128,8 @@ pub use ide_assists::{
};
pub use ide_completion::{
CallableSnippets, CompletionConfig, CompletionFieldsToResolve, CompletionItem,
- CompletionItemKind, CompletionItemRefMode, CompletionRelevance, Snippet, SnippetScope,
+ CompletionItemImport, CompletionItemKind, CompletionItemRefMode, CompletionRelevance, Snippet,
+ SnippetScope,
};
pub use ide_db::{
FileId, FilePosition, FileRange, RootDatabase, Severity, SymbolKind,
@@ -202,10 +205,18 @@ impl AnalysisHost {
self.db.per_query_memory_usage()
}
pub fn trigger_cancellation(&mut self) {
- self.db.trigger_cancellation();
+ // We need to do a synthetic write right now due to how fixpoint cycles handle cancellation
+ // the revision bump there is a reset marker for clearing fixpoint poisoning.
+ // That is `trigger_cancellation` is currently bugged wrt to cancellation.
+ // self.db.trigger_cancellation();
+ self.db.synthetic_write(Durability::LOW);
}
pub fn trigger_garbage_collection(&mut self) {
- self.db.trigger_lru_eviction();
+ // We need to do a synthetic write right now due to how fixpoint cycles handle cancellation
+ // the revision bump there is a reset marker for clearing fixpoint poisoning.
+ // That is `trigger_lru_eviction` is currently bugged wrt to cancellation.
+ // self.db.trigger_lru_eviction();
+ self.db.synthetic_write(Durability::LOW);
// SAFETY: `trigger_lru_eviction` triggers cancellation, so all running queries were canceled.
unsafe { hir::collect_ty_garbage() };
}
@@ -358,7 +369,7 @@ impl Analysis {
/// Gets the file's `LineIndex`: data structure to convert between absolute
/// offsets and line/column representation.
pub fn file_line_index(&self, file_id: FileId) -> Cancellable<Arc<LineIndex>> {
- self.with_db(|db| db.line_index(file_id))
+ self.with_db(|db| line_index(db, file_id).clone())
}
/// Selects the next syntactic nodes encompassing the range.
@@ -768,7 +779,7 @@ impl Analysis {
&self,
config: &CompletionConfig<'_>,
position: FilePosition,
- imports: impl IntoIterator<Item = String> + std::panic::UnwindSafe,
+ imports: impl IntoIterator<Item = CompletionItemImport> + std::panic::UnwindSafe,
) -> Cancellable<Vec<TextEdit>> {
Ok(self
.with_db(|db| ide_completion::resolve_completion_edits(db, config, position, imports))?