Skip to content

Commit f388f23

Browse files
committed
finally remove region_constraints::UndoLog
1 parent a7fb4d1 commit f388f23

File tree

3 files changed

+2
-60
lines changed

3 files changed

+2
-60
lines changed

compiler/rustc_infer/src/infer/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ use crate::traits::{self, ObligationCause, PredicateObligations, TraitEngine, Tr
1818
use rustc_data_structures::fx::FxIndexMap;
1919
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
2020
use rustc_data_structures::sync::Lrc;
21-
use rustc_data_structures::undo_log::Rollback;
2221
use rustc_data_structures::unify as ut;
2322
use rustc_errors::{DiagnosticBuilder, ErrorGuaranteed};
2423
use rustc_hir::def_id::{DefId, LocalDefId};

compiler/rustc_infer/src/infer/region_constraints/mod.rs

Lines changed: 1 addition & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
//! See `README.md`.
22
33
use self::CombineMapType::*;
4-
use self::UndoLog::*;
54

6-
use super::{InferCtxtUndoLogs, MiscVariable, RegionVariableOrigin, Rollback, SubregionOrigin};
5+
use super::{InferCtxtUndoLogs, MiscVariable, RegionVariableOrigin, SubregionOrigin};
76

87
use rustc_data_structures::fx::FxIndexMap;
98
use rustc_data_structures::intern::Interned;
@@ -264,21 +263,6 @@ pub(crate) struct TwoRegions<'tcx> {
264263
b: Region<'tcx>,
265264
}
266265

267-
#[derive(Copy, Clone, PartialEq)]
268-
pub(crate) enum UndoLog<'tcx> {
269-
/// We added `RegionVid`.
270-
AddVar(RegionVid),
271-
272-
/// We added the given `constraint`.
273-
AddConstraint(usize),
274-
275-
/// We added the given `verify`.
276-
AddVerify(usize),
277-
278-
/// We added a GLB/LUB "combination variable".
279-
AddCombination(CombineMapType, TwoRegions<'tcx>),
280-
}
281-
282266
#[derive(Copy, Clone, PartialEq)]
283267
pub(crate) enum CombineMapType {
284268
Lub,
@@ -314,29 +298,6 @@ impl<'tcx> RegionConstraintStorage<'tcx> {
314298
) -> RegionConstraintCollector<'a, 'tcx> {
315299
RegionConstraintCollector { storage: self, undo_log }
316300
}
317-
318-
fn rollback_undo_entry(&mut self, undo_entry: UndoLog<'tcx>) {
319-
match undo_entry {
320-
AddVar(vid) => {
321-
self.var_infos.pop().unwrap();
322-
assert_eq!(self.var_infos.len(), vid.index());
323-
}
324-
AddConstraint(index) => {
325-
self.data.constraints.pop().unwrap();
326-
assert_eq!(self.data.constraints.len(), index);
327-
}
328-
AddVerify(index) => {
329-
self.data.verifys.pop();
330-
assert_eq!(self.data.verifys.len(), index);
331-
}
332-
AddCombination(Glb, ref regions) => {
333-
self.glbs.remove(regions);
334-
}
335-
AddCombination(Lub, ref regions) => {
336-
self.lubs.remove(regions);
337-
}
338-
}
339-
}
340301
}
341302

342303
impl<'tcx> RegionConstraintCollector<'_, 'tcx> {
@@ -447,7 +408,6 @@ impl<'tcx> RegionConstraintCollector<'_, 'tcx> {
447408

448409
let u_vid = self.unification_table_mut().new_key(UnifiedRegion::new(None));
449410
assert_eq!(vid, u_vid.vid);
450-
self.undo_log.push(AddVar(vid));
451411
debug!("created new region variable {:?} in {:?} with origin {:?}", vid, universe, origin);
452412
vid
453413
}
@@ -465,10 +425,7 @@ impl<'tcx> RegionConstraintCollector<'_, 'tcx> {
465425
fn add_constraint(&mut self, constraint: Constraint<'tcx>, origin: SubregionOrigin<'tcx>) {
466426
// cannot add constraints once regions are resolved
467427
debug!("RegionConstraintCollector: add_constraint({:?})", constraint);
468-
469-
let index = self.storage.data.constraints.len();
470428
self.storage.data.constraints.push((constraint, origin));
471-
self.undo_log.push(AddConstraint(index));
472429
}
473430

474431
fn add_verify(&mut self, verify: Verify<'tcx>) {
@@ -482,9 +439,7 @@ impl<'tcx> RegionConstraintCollector<'_, 'tcx> {
482439
return;
483440
}
484441

485-
let index = self.data.verifys.len();
486442
self.data.verifys.push(verify);
487-
self.undo_log.push(AddVerify(index));
488443
}
489444

490445
pub(super) fn make_eqregion(
@@ -671,7 +626,6 @@ impl<'tcx> RegionConstraintCollector<'_, 'tcx> {
671626
let c_universe = cmp::max(a_universe, b_universe);
672627
let c = self.new_region_var(c_universe, MiscVariable(origin.span()));
673628
self.combine_map(t).insert(vars, c);
674-
self.undo_log.push(AddCombination(t, vars));
675629
let new_r = ty::Region::new_var(tcx, c);
676630
for old_r in [a, b] {
677631
match t {
@@ -804,9 +758,3 @@ impl<'tcx> RegionConstraintData<'tcx> {
804758
constraints.is_empty() && member_constraints.is_empty() && verifys.is_empty()
805759
}
806760
}
807-
808-
impl<'tcx> Rollback<UndoLog<'tcx>> for RegionConstraintStorage<'tcx> {
809-
fn reverse(&mut self, undo: UndoLog<'tcx>) {
810-
self.rollback_undo_entry(undo)
811-
}
812-
}

compiler/rustc_infer/src/infer/undo_log.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use rustc_middle::infer::unify_key::{ConstVidKey, EffectVidKey, RegionVidKey};
77
use rustc_middle::ty::{self, OpaqueHiddenType, OpaqueTypeKey};
88

99
use crate::{
10-
infer::{region_constraints, type_variable, InferCtxtInner},
10+
infer::{type_variable, InferCtxtInner},
1111
traits,
1212
};
1313

@@ -25,7 +25,6 @@ pub(crate) enum UndoLog<'tcx> {
2525
IntUnificationTable(sv::UndoLog<ut::Delegate<ty::IntVid>>),
2626
FloatUnificationTable(sv::UndoLog<ut::Delegate<ty::FloatVid>>),
2727
EffectUnificationTable(sv::UndoLog<ut::Delegate<EffectVidKey<'tcx>>>),
28-
RegionConstraintCollector(region_constraints::UndoLog<'tcx>),
2928
RegionUnificationTable(sv::UndoLog<ut::Delegate<RegionVidKey<'tcx>>>),
3029
ProjectionCache(traits::UndoLog<'tcx>),
3130
PushRegionObligation,
@@ -45,7 +44,6 @@ macro_rules! impl_from {
4544

4645
// Upcast from a single kind of "undoable action" to the general enum
4746
impl_from! {
48-
RegionConstraintCollector(region_constraints::UndoLog<'tcx>),
4947
TypeVariables(type_variable::UndoLog<'tcx>),
5048

5149
TypeVariables(sv::UndoLog<ut::Delegate<type_variable::TyVidEqKey<'tcx>>>),
@@ -72,9 +70,6 @@ impl<'tcx> Rollback<UndoLog<'tcx>> for InferCtxtInner<'tcx> {
7270
UndoLog::IntUnificationTable(undo) => self.int_unification_storage.reverse(undo),
7371
UndoLog::FloatUnificationTable(undo) => self.float_unification_storage.reverse(undo),
7472
UndoLog::EffectUnificationTable(undo) => self.effect_unification_storage.reverse(undo),
75-
UndoLog::RegionConstraintCollector(undo) => {
76-
self.region_constraint_storage.as_mut().unwrap().reverse(undo)
77-
}
7873
UndoLog::RegionUnificationTable(undo) => {
7974
self.region_constraint_storage.as_mut().unwrap().unification_table.reverse(undo)
8075
}

0 commit comments

Comments
 (0)