AsyncDrop trait without sync Drop generates an error
This commit is contained in:
@@ -113,7 +113,15 @@ pub fn provide(providers: &mut Providers) {
|
||||
}
|
||||
|
||||
fn adt_destructor(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Option<ty::Destructor> {
|
||||
tcx.calculate_dtor(def_id, always_applicable::check_drop_impl)
|
||||
let dtor = tcx.calculate_dtor(def_id, always_applicable::check_drop_impl);
|
||||
if dtor.is_none() && tcx.features().async_drop() {
|
||||
if let Some(async_dtor) = adt_async_destructor(tcx, def_id) {
|
||||
// When type has AsyncDrop impl, but doesn't have Drop impl, generate error
|
||||
let span = tcx.def_span(async_dtor.impl_did);
|
||||
tcx.dcx().emit_err(errors::AsyncDropWithoutSyncDrop { span });
|
||||
}
|
||||
}
|
||||
dtor
|
||||
}
|
||||
|
||||
fn adt_async_destructor(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Option<ty::AsyncDestructor> {
|
||||
|
||||
Reference in New Issue
Block a user