mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 04:19:13 +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 {
|
||||
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 def_map = {
|
||||
let edition = krate.edition(db);
|
||||
|
|
|
@ -112,6 +112,7 @@ where
|
|||
// main name resolution fixed-point loop.
|
||||
let mut i = 0;
|
||||
loop {
|
||||
self.db.check_canceled();
|
||||
match (self.resolve_imports(), self.resolve_macros()) {
|
||||
(ReachedFixedPoint::Yes, ReachedFixedPoint::Yes) => break,
|
||||
_ => i += 1,
|
||||
|
|
|
@ -82,6 +82,7 @@ pub(crate) fn implements_query(
|
|||
krate: Crate,
|
||||
trait_ref: Canonical<TraitRef>,
|
||||
) -> Option<Solution> {
|
||||
db.check_canceled();
|
||||
let _p = profile("implements_query");
|
||||
let goal: chalk_ir::Goal = trait_ref.value.to_chalk(db).cast();
|
||||
debug!("goal: {:?}", goal);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue