diff options
| author | Michael Goulet <michael@errs.io> | 2023-04-26 18:22:32 +0000 | 
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-04-27 17:02:17 +0000 | 
| commit | bd146c72ac2faf6bbf189ad92d06e0bcd6cc92fc (patch) | |
| tree | 3dd93051ad801fdc2d4a61ee2944480f7c401772 /compiler/rustc_middle/src/ty/util.rs | |
| parent | 6ce22733b973355573efd1e6294e585460e90e17 (diff) | |
| download | rust-bd146c72ac2faf6bbf189ad92d06e0bcd6cc92fc.tar.gz rust-bd146c72ac2faf6bbf189ad92d06e0bcd6cc92fc.zip | |
Explicitly reject negative and reservation drop impls
Diffstat (limited to 'compiler/rustc_middle/src/ty/util.rs')
| -rw-r--r-- | compiler/rustc_middle/src/ty/util.rs | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/compiler/rustc_middle/src/ty/util.rs b/compiler/rustc_middle/src/ty/util.rs index c77985c6bd6..e5b2d342452 100644 --- a/compiler/rustc_middle/src/ty/util.rs +++ b/compiler/rustc_middle/src/ty/util.rs @@ -360,16 +360,16 @@ impl<'tcx> TyCtxt<'tcx> { let ty = self.type_of(adt_did).subst_identity(); let mut dtor_candidate = None; self.for_each_relevant_impl(drop_trait, ty, |impl_did| { - let Some(item_id) = self.associated_item_def_ids(impl_did).first() else { - self.sess.delay_span_bug(self.def_span(impl_did), "Drop impl without drop function"); - return; - }; - if validate(self, impl_did).is_err() { // Already `ErrorGuaranteed`, no need to delay a span bug here. return; } + let Some(item_id) = self.associated_item_def_ids(impl_did).first() else { + self.sess.delay_span_bug(self.def_span(impl_did), "Drop impl without drop function"); + return; + }; + if let Some((old_item_id, _)) = dtor_candidate { self.sess .struct_span_err(self.def_span(item_id), "multiple drop impls found") | 
