Skip to content

Commit af8a604

Browse files
Profile trait solving for all invocations
1 parent 678af41 commit af8a604

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

crates/hir_ty/src/autoderef.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,7 @@ fn deref_by_trait(
8585
environment: ty.environment.clone(),
8686
},
8787
};
88-
if {
89-
let _p = profile::span("db.trait_solve");
90-
db.trait_solve(krate, implements_goal).is_none()
91-
} {
88+
if db.trait_solve(krate, implements_goal).is_none() {
9289
return None;
9390
}
9491

crates/hir_ty/src/db.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,13 +128,21 @@ pub trait HirDatabase: DefDatabase + Upcast<dyn DefDatabase> {
128128
id: chalk_db::AssociatedTyValueId,
129129
) -> Arc<chalk_db::AssociatedTyValue>;
130130

131-
#[salsa::invoke(crate::traits::trait_solve_query)]
131+
#[salsa::invoke(trait_solve_wait)]
132+
#[salsa::transparent]
132133
fn trait_solve(
133134
&self,
134135
krate: CrateId,
135136
goal: crate::Canonical<crate::InEnvironment<crate::DomainGoal>>,
136137
) -> Option<crate::Solution>;
137138

139+
#[salsa::invoke(crate::traits::trait_solve_query)]
140+
fn trait_solve_query(
141+
&self,
142+
krate: CrateId,
143+
goal: crate::Canonical<crate::InEnvironment<crate::DomainGoal>>,
144+
) -> Option<crate::Solution>;
145+
138146
#[salsa::invoke(chalk_db::program_clauses_for_chalk_env_query)]
139147
fn program_clauses_for_chalk_env(
140148
&self,
@@ -156,6 +164,15 @@ fn infer_wait(db: &dyn HirDatabase, def: DefWithBodyId) -> Arc<InferenceResult>
156164
db.infer_query(def)
157165
}
158166

167+
fn trait_solve_wait(
168+
db: &dyn HirDatabase,
169+
krate: CrateId,
170+
goal: crate::Canonical<crate::InEnvironment<crate::DomainGoal>>,
171+
) -> Option<crate::Solution> {
172+
let _p = profile::span("trait_solve::wait");
173+
db.trait_solve_query(krate, goal)
174+
}
175+
159176
#[test]
160177
fn hir_database_is_object_safe() {
161178
fn _assert_object_safe(_: &dyn HirDatabase) {}

crates/ide_db/src/apply_change.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ impl RootDatabase {
201201
hir::db::InternImplTraitIdQuery
202202
hir::db::InternClosureQuery
203203
hir::db::AssociatedTyValueQuery
204-
hir::db::TraitSolveQuery
204+
hir::db::TraitSolveQueryQuery
205205

206206
// SymbolsDatabase
207207
crate::symbol_index::FileSymbolsQuery

0 commit comments

Comments
 (0)