Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs')
-rw-r--r--crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs b/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs
index c8ec8da7f3..f246af1f2e 100644
--- a/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs
+++ b/crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs
@@ -28,8 +28,8 @@ pub(crate) enum UndoLog<'db> {
FloatUnificationTable(sv::UndoLog<ut::Delegate<FloatVid>>),
RegionConstraintCollector(region_constraints::UndoLog<'db>),
RegionUnificationTable(sv::UndoLog<ut::Delegate<RegionVidKey<'db>>>),
- #[expect(dead_code, reason = "this is used in rustc")]
- PushRegionObligation,
+ PushTypeOutlivesConstraint,
+ PushRegionAssumption,
}
macro_rules! impl_from {
@@ -75,8 +75,13 @@ impl<'db> Rollback<UndoLog<'db>> for InferCtxtInner<'db> {
UndoLog::RegionUnificationTable(undo) => {
self.region_constraint_storage.as_mut().unwrap().unification_table.reverse(undo)
}
- UndoLog::PushRegionObligation => {
- self.region_obligations.pop();
+ UndoLog::PushTypeOutlivesConstraint => {
+ let popped = self.region_obligations.pop();
+ assert!(popped.is_some(), "pushed region constraint but could not pop it");
+ }
+ UndoLog::PushRegionAssumption => {
+ let popped = self.region_assumptions.pop();
+ assert!(popped.is_some(), "pushed region assumption but could not pop it");
}
}
}