use body's param-env when checking if type needs drop
This commit is contained in:
parent
c2ecd3af87
commit
6d2bd541e0
3 changed files with 25 additions and 7 deletions
|
@ -219,14 +219,11 @@ impl<'tcx> Visitor<'tcx> for UnsafetyChecker<'_, 'tcx> {
|
|||
// We have to check the actual type of the assignment, as that determines if the
|
||||
// old value is being dropped.
|
||||
let assigned_ty = place.ty(&self.body.local_decls, self.tcx).ty;
|
||||
if assigned_ty.needs_drop(
|
||||
self.tcx,
|
||||
self.tcx.param_env(base_ty.ty_adt_def().unwrap().did()),
|
||||
) {
|
||||
if assigned_ty.needs_drop(self.tcx, self.param_env) {
|
||||
// This would be unsafe, but should be outright impossible since we reject such unions.
|
||||
self.tcx.sess.delay_span_bug(
|
||||
self.source_info.span,
|
||||
"union fields that need dropping should be impossible",
|
||||
format!("union fields that need dropping should be impossible: {assigned_ty}")
|
||||
);
|
||||
}
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue