mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 12:29:21 +00:00
add cacellation checks to expensive queries
This commit is contained in:
parent
a9373c4220
commit
6bcc1b8b9e
3 changed files with 3 additions and 0 deletions
|
@ -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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue