1398: check for cancellation when executing queries r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot] 2019-06-12 15:49:39 +00:00
commit a3a03b65dc
5 changed files with 6 additions and 6 deletions

View file

@ -61,7 +61,6 @@ impl HirFileId {
db: &impl AstDatabase, db: &impl AstDatabase,
file_id: HirFileId, file_id: HirFileId,
) -> Option<TreeArc<SyntaxNode>> { ) -> Option<TreeArc<SyntaxNode>> {
db.check_canceled();
match file_id.0 { match file_id.0 {
HirFileIdRepr::File(file_id) => Some(db.parse(file_id).tree.syntax().to_owned()), HirFileIdRepr::File(file_id) => Some(db.parse(file_id).tree.syntax().to_owned()),
HirFileIdRepr::Macro(macro_file) => db.parse_macro(macro_file), HirFileIdRepr::Macro(macro_file) => db.parse_macro(macro_file),

View file

@ -234,7 +234,6 @@ impl CrateDefMap {
db: &(impl DefDatabase + AstDatabase), db: &(impl DefDatabase + AstDatabase),
krate: Crate, krate: Crate,
) -> Arc<CrateDefMap> { ) -> Arc<CrateDefMap> {
db.check_canceled();
let _p = profile("crate_def_map_query"); let _p = profile("crate_def_map_query");
let def_map = { let def_map = {
let edition = krate.edition(db); let edition = krate.edition(db);

View file

@ -54,7 +54,6 @@ mod unify;
/// The entry point of type inference. /// The entry point of type inference.
pub fn infer_query(db: &impl HirDatabase, def: DefWithBody) -> Arc<InferenceResult> { pub fn infer_query(db: &impl HirDatabase, def: DefWithBody) -> Arc<InferenceResult> {
let _p = profile("infer_query"); let _p = profile("infer_query");
db.check_canceled();
let body = def.body(db); let body = def.body(db);
let resolver = def.resolver(db); let resolver = def.resolver(db);
let mut ctx = InferenceContext::new(db, body, resolver); let mut ctx = InferenceContext::new(db, body, resolver);

View file

@ -83,7 +83,6 @@ pub(crate) fn implements_query(
krate: Crate, krate: Crate,
trait_ref: Canonical<TraitRef>, trait_ref: Canonical<TraitRef>,
) -> Option<Solution> { ) -> Option<Solution> {
db.check_canceled();
let _p = profile("implements_query"); let _p = profile("implements_query");
let goal: chalk_ir::Goal = trait_ref.value.to_chalk(db).cast(); let goal: chalk_ir::Goal = trait_ref.value.to_chalk(db).cast();
debug!("goal: {:?}", goal); debug!("goal: {:?}", goal);

View file

@ -33,8 +33,12 @@ impl salsa::Database for RootDatabase {
Canceled::throw() Canceled::throw()
} }
fn salsa_event(&self, event: impl Fn() -> salsa::Event<RootDatabase>) { fn salsa_event(&self, event: impl Fn() -> salsa::Event<RootDatabase>) {
if let salsa::EventKind::DidValidateMemoizedValue { .. } = event().kind { match event().kind {
self.check_canceled(); salsa::EventKind::DidValidateMemoizedValue { .. }
| salsa::EventKind::WillExecute { .. } => {
self.check_canceled();
}
_ => (),
} }
} }
} }