Rename needs_drop to needs_non_const_drop

This commit is contained in:
Tomasz Miąsko 2021-10-17 00:00:00 +00:00
parent 5dab47dcd8
commit 171cbc01ef
4 changed files with 15 additions and 15 deletions
compiler
rustc_const_eval/src/transform/check_consts
rustc_middle/src/mir

@ -39,7 +39,7 @@ type QualifResults<'mir, 'tcx, Q> =
#[derive(Default)] #[derive(Default)]
pub struct Qualifs<'mir, 'tcx> { pub struct Qualifs<'mir, 'tcx> {
has_mut_interior: Option<QualifResults<'mir, 'tcx, HasMutInterior>>, has_mut_interior: Option<QualifResults<'mir, 'tcx, HasMutInterior>>,
needs_drop: Option<QualifResults<'mir, 'tcx, NeedsNonConstDrop>>, needs_non_const_drop: Option<QualifResults<'mir, 'tcx, NeedsNonConstDrop>>,
indirectly_mutable: Option<IndirectlyMutableResults<'mir, 'tcx>>, indirectly_mutable: Option<IndirectlyMutableResults<'mir, 'tcx>>,
} }
@ -70,10 +70,10 @@ impl Qualifs<'mir, 'tcx> {
indirectly_mutable.get().contains(local) indirectly_mutable.get().contains(local)
} }
/// Returns `true` if `local` is `NeedsDrop` at the given `Location`. /// Returns `true` if `local` is `NeedsNonConstDrop` at the given `Location`.
/// ///
/// Only updates the cursor if absolutely necessary /// Only updates the cursor if absolutely necessary
pub fn needs_drop( pub fn needs_non_const_drop(
&mut self, &mut self,
ccx: &'mir ConstCx<'mir, 'tcx>, ccx: &'mir ConstCx<'mir, 'tcx>,
local: Local, local: Local,
@ -84,7 +84,7 @@ impl Qualifs<'mir, 'tcx> {
return false; return false;
} }
let needs_drop = self.needs_drop.get_or_insert_with(|| { let needs_non_const_drop = self.needs_non_const_drop.get_or_insert_with(|| {
let ConstCx { tcx, body, .. } = *ccx; let ConstCx { tcx, body, .. } = *ccx;
FlowSensitiveAnalysis::new(NeedsNonConstDrop, ccx) FlowSensitiveAnalysis::new(NeedsNonConstDrop, ccx)
@ -93,8 +93,8 @@ impl Qualifs<'mir, 'tcx> {
.into_results_cursor(&body) .into_results_cursor(&body)
}); });
needs_drop.seek_before_primary_effect(location); needs_non_const_drop.seek_before_primary_effect(location);
needs_drop.get().contains(local) || self.indirectly_mutable(ccx, local, location) needs_non_const_drop.get().contains(local) || self.indirectly_mutable(ccx, local, location)
} }
/// Returns `true` if `local` is `HasMutInterior` at the given `Location`. /// Returns `true` if `local` is `HasMutInterior` at the given `Location`.
@ -172,7 +172,7 @@ impl Qualifs<'mir, 'tcx> {
}; };
ConstQualifs { ConstQualifs {
needs_drop: self.needs_drop(ccx, RETURN_PLACE, return_loc), needs_non_const_drop: self.needs_non_const_drop(ccx, RETURN_PLACE, return_loc),
has_mut_interior: self.has_mut_interior(ccx, RETURN_PLACE, return_loc), has_mut_interior: self.has_mut_interior(ccx, RETURN_PLACE, return_loc),
custom_eq, custom_eq,
error_occured, error_occured,
@ -999,7 +999,7 @@ impl Visitor<'tcx> for Checker<'mir, 'tcx> {
} }
// Forbid all `Drop` terminators unless the place being dropped is a local with no // Forbid all `Drop` terminators unless the place being dropped is a local with no
// projections that cannot be `NeedsDrop`. // projections that cannot be `NeedsNonConstDrop`.
TerminatorKind::Drop { place: dropped_place, .. } TerminatorKind::Drop { place: dropped_place, .. }
| TerminatorKind::DropAndReplace { place: dropped_place, .. } => { | TerminatorKind::DropAndReplace { place: dropped_place, .. } => {
// If we are checking live drops after drop-elaboration, don't emit duplicate // If we are checking live drops after drop-elaboration, don't emit duplicate
@ -1019,15 +1019,15 @@ impl Visitor<'tcx> for Checker<'mir, 'tcx> {
return; return;
} }
let needs_drop = if let Some(local) = dropped_place.as_local() { let needs_non_const_drop = if let Some(local) = dropped_place.as_local() {
// Use the span where the local was declared as the span of the drop error. // Use the span where the local was declared as the span of the drop error.
err_span = self.body.local_decls[local].source_info.span; err_span = self.body.local_decls[local].source_info.span;
self.qualifs.needs_drop(self.ccx, local, location) self.qualifs.needs_non_const_drop(self.ccx, local, location)
} else { } else {
true true
}; };
if needs_drop { if needs_non_const_drop {
self.check_op_spanned( self.check_op_spanned(
ops::LiveDrop { dropped_at: Some(terminator.source_info.span) }, ops::LiveDrop { dropped_at: Some(terminator.source_info.span) },
err_span, err_span,

@ -97,7 +97,7 @@ impl Visitor<'tcx> for CheckLiveDrops<'mir, 'tcx> {
// `src/test/ui/consts/control-flow/drop-pass.rs`; e.g., when an `Option<Vec<T>>` is // `src/test/ui/consts/control-flow/drop-pass.rs`; e.g., when an `Option<Vec<T>>` is
// initialized with `None` and never changed, it still emits drop glue. // initialized with `None` and never changed, it still emits drop glue.
// Hence we additionally check the qualifs here to allow more code to pass. // Hence we additionally check the qualifs here to allow more code to pass.
if self.qualifs.needs_drop(self.ccx, dropped_place.local, location) { if self.qualifs.needs_non_const_drop(self.ccx, dropped_place.local, location) {
// Use the span where the dropped local was declared for the error. // Use the span where the dropped local was declared for the error.
let span = self.body.local_decls[dropped_place.local].source_info.span; let span = self.body.local_decls[dropped_place.local].source_info.span;
self.check_live_drop(span); self.check_live_drop(span);

@ -21,7 +21,7 @@ pub fn in_any_value_of_ty(
) -> ConstQualifs { ) -> ConstQualifs {
ConstQualifs { ConstQualifs {
has_mut_interior: HasMutInterior::in_any_value_of_ty(cx, ty), has_mut_interior: HasMutInterior::in_any_value_of_ty(cx, ty),
needs_drop: NeedsNonConstDrop::in_any_value_of_ty(cx, ty), needs_non_const_drop: NeedsNonConstDrop::in_any_value_of_ty(cx, ty),
custom_eq: CustomEq::in_any_value_of_ty(cx, ty), custom_eq: CustomEq::in_any_value_of_ty(cx, ty),
error_occured, error_occured,
} }
@ -108,7 +108,7 @@ impl Qualif for NeedsNonConstDrop {
const IS_CLEARED_ON_MOVE: bool = true; const IS_CLEARED_ON_MOVE: bool = true;
fn in_qualifs(qualifs: &ConstQualifs) -> bool { fn in_qualifs(qualifs: &ConstQualifs) -> bool {
qualifs.needs_drop qualifs.needs_non_const_drop
} }
fn in_any_value_of_ty(cx: &ConstCx<'_, 'tcx>, mut ty: Ty<'tcx>) -> bool { fn in_any_value_of_ty(cx: &ConstCx<'_, 'tcx>, mut ty: Ty<'tcx>) -> bool {

@ -224,7 +224,7 @@ pub struct BorrowCheckResult<'tcx> {
#[derive(Clone, Copy, Debug, Default, TyEncodable, TyDecodable, HashStable)] #[derive(Clone, Copy, Debug, Default, TyEncodable, TyDecodable, HashStable)]
pub struct ConstQualifs { pub struct ConstQualifs {
pub has_mut_interior: bool, pub has_mut_interior: bool,
pub needs_drop: bool, pub needs_non_const_drop: bool,
pub custom_eq: bool, pub custom_eq: bool,
pub error_occured: Option<ErrorReported>, pub error_occured: Option<ErrorReported>,
} }