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.rs | 15 |
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, ) |