Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/traits.rs')
-rw-r--r--crates/hir-ty/src/traits.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/crates/hir-ty/src/traits.rs b/crates/hir-ty/src/traits.rs
index b2232b920a..930bc7df5e 100644
--- a/crates/hir-ty/src/traits.rs
+++ b/crates/hir-ty/src/traits.rs
@@ -139,6 +139,7 @@ fn solve(
block: Option<BlockId>,
goal: &chalk_ir::UCanonical<chalk_ir::InEnvironment<chalk_ir::Goal<Interner>>>,
) -> Option<chalk_solve::Solution<Interner>> {
+ let _p = tracing::span!(tracing::Level::INFO, "solve", ?krate, ?block).entered();
let context = ChalkContext { db, krate, block };
tracing::debug!("solve goal: {:?}", goal);
let mut solver = create_chalk_solver();
@@ -217,6 +218,15 @@ impl FnTrait {
}
}
+ pub const fn from_lang_item(lang_item: LangItem) -> Option<Self> {
+ match lang_item {
+ LangItem::FnOnce => Some(FnTrait::FnOnce),
+ LangItem::FnMut => Some(FnTrait::FnMut),
+ LangItem::Fn => Some(FnTrait::Fn),
+ _ => None,
+ }
+ }
+
pub const fn to_chalk_ir(self) -> rust_ir::ClosureKind {
match self {
FnTrait::FnOnce => rust_ir::ClosureKind::FnOnce,