add cacellation checks to expensive queries
This commit is contained in:
@@ -222,6 +222,7 @@ fn or(left: ItemOrMacro, right: ItemOrMacro) -> ItemOrMacro {
|
|||||||
|
|
||||||
impl CrateDefMap {
|
impl CrateDefMap {
|
||||||
pub(crate) fn crate_def_map_query(db: &impl DefDatabase, krate: Crate) -> Arc<CrateDefMap> {
|
pub(crate) fn crate_def_map_query(db: &impl DefDatabase, krate: Crate) -> 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);
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ where
|
|||||||
// main name resolution fixed-point loop.
|
// main name resolution fixed-point loop.
|
||||||
let mut i = 0;
|
let mut i = 0;
|
||||||
loop {
|
loop {
|
||||||
|
self.db.check_canceled();
|
||||||
match (self.resolve_imports(), self.resolve_macros()) {
|
match (self.resolve_imports(), self.resolve_macros()) {
|
||||||
(ReachedFixedPoint::Yes, ReachedFixedPoint::Yes) => break,
|
(ReachedFixedPoint::Yes, ReachedFixedPoint::Yes) => break,
|
||||||
_ => i += 1,
|
_ => i += 1,
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ 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);
|
||||||
|
|||||||
Reference in New Issue
Block a user