Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/next_solver/interner.rs')
-rw-r--r--crates/hir-ty/src/next_solver/interner.rs28
1 files changed, 11 insertions, 17 deletions
diff --git a/crates/hir-ty/src/next_solver/interner.rs b/crates/hir-ty/src/next_solver/interner.rs
index 229e520972..4095dbe47d 100644
--- a/crates/hir-ty/src/next_solver/interner.rs
+++ b/crates/hir-ty/src/next_solver/interner.rs
@@ -33,7 +33,7 @@ use rustc_type_ir::{
fast_reject,
inherent::{self, Const as _, GenericsOf, IntoKind, SliceLike as _, Span as _, Ty as _},
lang_items::{SolverAdtLangItem, SolverLangItem, SolverTraitLangItem},
- solve::SizedTraitKind,
+ solve::{AdtDestructorKind, SizedTraitKind},
};
use crate::{
@@ -725,12 +725,8 @@ impl<'db> inherent::AdtDef<DbInterner<'db>> for AdtDef {
.transpose()
}
- fn destructor(
- self,
- _interner: DbInterner<'db>,
- ) -> Option<rustc_type_ir::solve::AdtDestructorKind> {
- // FIXME(next-solver)
- None
+ fn destructor(self, interner: DbInterner<'db>) -> Option<AdtDestructorKind> {
+ crate::drop::destructor(interner.db, self.def_id().0).map(|_| AdtDestructorKind::NotConst)
}
fn is_manually_drop(self) -> bool {
@@ -1492,7 +1488,7 @@ impl<'db> Interner for DbInterner<'db> {
fn require_lang_item(self, lang_item: SolverLangItem) -> Self::DefId {
let lang_items = self.lang_items();
let lang_item = match lang_item {
- SolverLangItem::AsyncFnKindUpvars => unimplemented!(),
+ SolverLangItem::AsyncFnKindUpvars => lang_items.AsyncFnKindUpvars,
SolverLangItem::AsyncFnOnceOutput => lang_items.AsyncFnOnceOutput,
SolverLangItem::CallOnceFuture => lang_items.CallOnceFuture,
SolverLangItem::CallRefFuture => lang_items.CallRefFuture,
@@ -1503,8 +1499,8 @@ impl<'db> Interner for DbInterner<'db> {
SolverLangItem::DynMetadata => {
return lang_items.DynMetadata.expect("Lang item required but not found.").into();
}
- SolverLangItem::FieldBase => unimplemented!(),
- SolverLangItem::FieldType => unimplemented!(),
+ SolverLangItem::FieldBase => lang_items.FieldBase,
+ SolverLangItem::FieldType => lang_items.FieldType,
};
lang_item.expect("Lang item required but not found.").into()
}
@@ -1513,13 +1509,13 @@ impl<'db> Interner for DbInterner<'db> {
let lang_items = self.lang_items();
let lang_item = match lang_item {
SolverTraitLangItem::AsyncFn => lang_items.AsyncFn,
- SolverTraitLangItem::AsyncFnKindHelper => unimplemented!(),
+ SolverTraitLangItem::AsyncFnKindHelper => lang_items.AsyncFnKindHelper,
SolverTraitLangItem::AsyncFnMut => lang_items.AsyncFnMut,
SolverTraitLangItem::AsyncFnOnce => lang_items.AsyncFnOnce,
SolverTraitLangItem::AsyncFnOnceOutput => unimplemented!(
"This is incorrectly marked as `SolverTraitLangItem`, and is not used by the solver."
),
- SolverTraitLangItem::AsyncIterator => unimplemented!(),
+ SolverTraitLangItem::AsyncIterator => lang_items.AsyncIterator,
SolverTraitLangItem::Clone => lang_items.Clone,
SolverTraitLangItem::Copy => lang_items.Copy,
SolverTraitLangItem::Coroutine => lang_items.Coroutine,
@@ -1530,7 +1526,7 @@ impl<'db> Interner for DbInterner<'db> {
SolverTraitLangItem::FnMut => lang_items.FnMut,
SolverTraitLangItem::FnOnce => lang_items.FnOnce,
SolverTraitLangItem::FnPtrTrait => lang_items.FnPtrTrait,
- SolverTraitLangItem::FusedIterator => unimplemented!(),
+ SolverTraitLangItem::FusedIterator => lang_items.FusedIterator,
SolverTraitLangItem::Future => lang_items.Future,
SolverTraitLangItem::Iterator => lang_items.Iterator,
SolverTraitLangItem::PointeeTrait => lang_items.PointeeTrait,
@@ -1541,11 +1537,9 @@ impl<'db> Interner for DbInterner<'db> {
SolverTraitLangItem::Tuple => lang_items.Tuple,
SolverTraitLangItem::Unpin => lang_items.Unpin,
SolverTraitLangItem::Unsize => lang_items.Unsize,
- SolverTraitLangItem::BikeshedGuaranteedNoDrop => {
- unimplemented!()
- }
+ SolverTraitLangItem::BikeshedGuaranteedNoDrop => lang_items.BikeshedGuaranteedNoDrop,
SolverTraitLangItem::TrivialClone => lang_items.TrivialClone,
- SolverTraitLangItem::Field => unimplemented!(),
+ SolverTraitLangItem::Field => lang_items.Field,
};
lang_item.expect("Lang item required but not found.").into()
}