Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/drop.rs')
-rw-r--r--crates/hir-ty/src/drop.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/crates/hir-ty/src/drop.rs b/crates/hir-ty/src/drop.rs
index 0d25d7dbd1..61e6720a29 100644
--- a/crates/hir-ty/src/drop.rs
+++ b/crates/hir-ty/src/drop.rs
@@ -22,9 +22,9 @@ use crate::{
#[salsa::tracked]
pub fn destructor(db: &dyn HirDatabase, adt: AdtId) -> Option<ImplId> {
let module = match adt {
- AdtId::EnumId(id) => db.lookup_intern_enum(id).container,
- AdtId::StructId(id) => db.lookup_intern_struct(id).container,
- AdtId::UnionId(id) => db.lookup_intern_union(id).container,
+ AdtId::EnumId(id) => id.loc(db).container,
+ AdtId::StructId(id) => id.loc(db).container,
+ AdtId::UnionId(id) => id.loc(db).container,
};
let interner = DbInterner::new_with(db, module.krate(db));
let drop_trait = interner.lang_items().Drop?;
@@ -70,7 +70,7 @@ fn has_drop_glue_impl<'db>(
let db = infcx.interner.db;
match ty.kind() {
TyKind::Adt(adt_def, subst) => {
- let adt_id = adt_def.def_id().0;
+ let adt_id = adt_def.def_id();
if adt_def.destructor(infcx.interner).is_some() {
return DropGlue::HasDropGlue;
}
@@ -87,7 +87,7 @@ fn has_drop_glue_impl<'db>(
.map(|(_, field_ty)| {
has_drop_glue_impl(
infcx,
- field_ty.get().instantiate(infcx.interner, subst),
+ field_ty.get().instantiate(infcx.interner, subst).skip_norm_wip(),
env,
visited,
)
@@ -107,7 +107,10 @@ fn has_drop_glue_impl<'db>(
.map(|(_, field_ty)| {
has_drop_glue_impl(
infcx,
- field_ty.get().instantiate(infcx.interner, subst),
+ field_ty
+ .get()
+ .instantiate(infcx.interner, subst)
+ .skip_norm_wip(),
env,
visited,
)