about summary refs log tree commit diff
path: root/compiler/rustc_middle/src/ty/util.rs
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2023-04-26 18:22:32 +0000
committerMichael Goulet <michael@errs.io>2023-04-27 17:02:17 +0000
commitbd146c72ac2faf6bbf189ad92d06e0bcd6cc92fc (patch)
tree3dd93051ad801fdc2d4a61ee2944480f7c401772 /compiler/rustc_middle/src/ty/util.rs
parent6ce22733b973355573efd1e6294e585460e90e17 (diff)
downloadrust-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.rs10
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")