]> git.lizzy.rs Git - rust.git/blobdiff - compiler/rustc_const_eval/src/transform/promote_consts.rs
Auto merge of #105085 - oli-obk:stop_promoting_all_the_things, r=RalfJung
[rust.git] / compiler / rustc_const_eval / src / transform / promote_consts.rs
index 6777fae74f1ca5d00018354072ef0ef5c15e62c3..04ce701452b90de0c346efd4b8c8250f0e6d76f9 100644 (file)
@@ -216,12 +216,6 @@ fn validate_candidate(&mut self, candidate: Candidate) -> Result<(), Unpromotabl
                     return Err(Unpromotable);
                 }
 
-                // We cannot promote things that need dropping, since the promoted value
-                // would not get dropped.
-                if self.qualif_local::<qualifs::NeedsDrop>(place.local) {
-                    return Err(Unpromotable);
-                }
-
                 Ok(())
             }
             _ => bug!(),
@@ -262,13 +256,17 @@ fn qualif_local<Q: qualifs::Qualif>(&mut self, local: Local) -> bool {
                 }
             }
         } else {
-            let span = self.body.local_decls[local].source_info.span;
-            span_bug!(span, "{:?} not promotable, qualif_local shouldn't have been called", local);
+            false
         }
     }
 
     fn validate_local(&mut self, local: Local) -> Result<(), Unpromotable> {
         if let TempState::Defined { location: loc, uses, valid } = self.temps[local] {
+            // We cannot promote things that need dropping, since the promoted value
+            // would not get dropped.
+            if self.qualif_local::<qualifs::NeedsDrop>(local) {
+                return Err(Unpromotable);
+            }
             valid.or_else(|_| {
                 let ok = {
                     let block = &self.body[loc.block];