Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/autoderef.rs')
-rw-r--r--crates/hir-ty/src/autoderef.rs24
1 files changed, 8 insertions, 16 deletions
diff --git a/crates/hir-ty/src/autoderef.rs b/crates/hir-ty/src/autoderef.rs
index 47d06be893..4efe64377b 100644
--- a/crates/hir-ty/src/autoderef.rs
+++ b/crates/hir-ty/src/autoderef.rs
@@ -5,7 +5,7 @@
use std::fmt;
-use hir_def::{TraitId, TypeAliasId, lang_item::LangItem};
+use hir_def::{TraitId, TypeAliasId};
use rustc_type_ir::inherent::{IntoKind, Ty as _};
use tracing::debug;
use triomphe::Arc;
@@ -301,36 +301,28 @@ where
self.infcx().interner
}
- #[inline]
- fn db(&self) -> &'db dyn HirDatabase {
- self.interner().db
- }
-
fn autoderef_traits(&mut self) -> Option<AutoderefTraits> {
+ let lang_items = self.interner().lang_items();
match &mut self.traits {
Some(it) => Some(*it),
None => {
let traits = if self.use_receiver_trait {
(|| {
Some(AutoderefTraits {
- trait_: LangItem::Receiver
- .resolve_trait(self.db(), self.env().krate)?,
- trait_target: LangItem::ReceiverTarget
- .resolve_type_alias(self.db(), self.env().krate)?,
+ trait_: lang_items.Receiver?,
+ trait_target: lang_items.ReceiverTarget?,
})
})()
.or_else(|| {
Some(AutoderefTraits {
- trait_: LangItem::Deref.resolve_trait(self.db(), self.env().krate)?,
- trait_target: LangItem::DerefTarget
- .resolve_type_alias(self.db(), self.env().krate)?,
+ trait_: lang_items.Deref?,
+ trait_target: lang_items.DerefTarget?,
})
})?
} else {
AutoderefTraits {
- trait_: LangItem::Deref.resolve_trait(self.db(), self.env().krate)?,
- trait_target: LangItem::DerefTarget
- .resolve_type_alias(self.db(), self.env().krate)?,
+ trait_: lang_items.Deref?,
+ trait_target: lang_items.DerefTarget?,
}
};
Some(*self.traits.insert(traits))