mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-03 07:04:49 +00:00
actually check for cancelation
This commit is contained in:
parent
71cbdddf1c
commit
8eea10e3ab
3 changed files with 20 additions and 7 deletions
|
@ -10,7 +10,8 @@ use rustc_hash::FxHashSet;
|
|||
use salsa;
|
||||
|
||||
use crate::{
|
||||
Cancelable,
|
||||
db,
|
||||
Cancelable, Canceled,
|
||||
module_map::{ModuleDescriptorQuery, ModuleTreeQuery, ModulesDatabase},
|
||||
symbol_index::SymbolIndex,
|
||||
FileId, FileResolverImp,
|
||||
|
@ -33,6 +34,14 @@ impl salsa::Database for RootDatabase {
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn check_canceled(db: &impl salsa::Database) -> Cancelable<()> {
|
||||
if db.salsa_runtime().is_current_revision_canceled() {
|
||||
Err(Canceled)
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl salsa::ParallelDatabase for RootDatabase {
|
||||
fn fork(&self) -> Self {
|
||||
RootDatabase {
|
||||
|
@ -115,6 +124,7 @@ fn file_lines(db: &impl SyntaxDatabase, file_id: FileId) -> Arc<LineIndex> {
|
|||
Arc::new(LineIndex::new(&*text))
|
||||
}
|
||||
fn file_symbols(db: &impl SyntaxDatabase, file_id: FileId) -> Cancelable<Arc<SymbolIndex>> {
|
||||
db::check_canceled(db)?;
|
||||
let syntax = db.file_syntax(file_id);
|
||||
Ok(Arc::new(SymbolIndex::for_file(file_id, syntax)))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue