mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 21:43:37 +00:00
Use lang-item instead of db lookup for FnTrait
kind
This commit is contained in:
parent
46cdce1b53
commit
a4021f6ed5
2 changed files with 10 additions and 9 deletions
|
@ -177,15 +177,7 @@ impl InferenceContext<'_> {
|
|||
}
|
||||
|
||||
fn fn_trait_kind_from_trait_id(&self, trait_id: hir_def::TraitId) -> Option<FnTrait> {
|
||||
utils::fn_traits(self.db.upcast(), self.owner.module(self.db.upcast()).krate())
|
||||
.enumerate()
|
||||
.find_map(|(i, t)| (t == trait_id).then_some(i))
|
||||
.map(|i| match i {
|
||||
0 => FnTrait::Fn,
|
||||
1 => FnTrait::FnMut,
|
||||
2 => FnTrait::FnOnce,
|
||||
_ => unreachable!(),
|
||||
})
|
||||
FnTrait::from_lang_item(self.db.lang_attr(trait_id.into())?)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -217,6 +217,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,
|
||||
|
|
Loading…
Reference in a new issue