De-querify transitive_deps again

This commit is contained in:
Lukas Wirth 2025-11-23 12:42:55 +01:00
parent 037a0678bd
commit 277dffe9d6
5 changed files with 5 additions and 8 deletions

View file

@ -460,13 +460,11 @@ pub struct Crate {
pub env: Env,
}
#[salsa::tracked]
impl Crate {
/// Returns an iterator over all transitive dependencies of the given crate,
/// including the crate itself.
///
/// **Warning**: do not use this query in `hir-*` crates! It kills incrementality across crate metadata modifications.
#[salsa::tracked(returns(deref))]
pub fn transitive_deps(self, db: &dyn salsa::Database) -> Box<[Crate]> {
// There is a bit of duplication here and in `CrateGraphBuilder` in the same method, but it's not terrible
// and removing that is a bit difficult.

View file

@ -142,7 +142,7 @@ fn eval_goal(db: &TestDB, file_id: EditionedFileId) -> Result<Const<'_>, ConstEv
_ => None,
})
.expect("No const named GOAL found in the test");
db.const_eval(const_id.into(), GenericArgs::new_from_iter(interner, []), None)
db.const_eval(const_id, GenericArgs::new_from_iter(interner, []), None)
}
#[test]

View file

@ -4,8 +4,8 @@
use base_db::{Crate, target::TargetLoadError};
use hir_def::{
AdtId, CallableDefId, ConstId, ConstParamId, DefWithBodyId, EnumVariantId, FunctionId,
GenericDefId, ImplId, LifetimeParamId, LocalFieldId, StaticId, TraitId, TypeAliasId,
TypeOrConstParamId, VariantId, db::DefDatabase, hir::ExprId, layout::TargetDataLayout,
GenericDefId, ImplId, LifetimeParamId, LocalFieldId, StaticId, TraitId, TypeAliasId, VariantId,
db::DefDatabase, hir::ExprId, layout::TargetDataLayout,
};
use la_arena::ArenaMap;
use salsa::plumbing::AsId;

View file

@ -613,7 +613,6 @@ fn main() {
"impl_signature_with_source_map_shim",
"callable_item_signature_shim",
"TraitImpls::for_crate_and_deps_",
"Crate::transitive_deps_",
"TraitImpls::for_crate_",
"impl_trait_with_diagnostics_shim",
"impl_self_ty_with_diagnostics_shim",

View file

@ -254,7 +254,7 @@ impl Crate {
self.id
.transitive_deps(db)
.into_iter()
.filter_map(|&krate| db.crate_notable_traits(krate))
.filter_map(|krate| db.crate_notable_traits(krate))
.flatten()
}
@ -2806,7 +2806,7 @@ impl Const {
pub fn eval(self, db: &dyn HirDatabase) -> Result<EvaluatedConst<'_>, ConstEvalError<'_>> {
let interner = DbInterner::new_with(db, None, None);
let ty = db.value_ty(self.id.into()).unwrap().instantiate_identity();
db.const_eval(self.id.into(), GenericArgs::new_from_iter(interner, []), None)
db.const_eval(self.id, GenericArgs::new_from_iter(interner, []), None)
.map(|it| EvaluatedConst { const_: it, def: self.id.into(), ty })
}
}