Make SnapshotMap::{commit, rollback_to} take references
This commit is contained in:
parent
76b69a604e
commit
ffdac5d592
@ -709,7 +709,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
|
||||
|
||||
self.projection_cache
|
||||
.borrow_mut()
|
||||
.commit(projection_cache_snapshot);
|
||||
.commit(&projection_cache_snapshot);
|
||||
self.type_variables
|
||||
.borrow_mut()
|
||||
.commit(type_snapshot);
|
||||
|
@ -1668,15 +1668,15 @@ impl<'tcx> ProjectionCache<'tcx> {
|
||||
}
|
||||
|
||||
pub fn rollback_to(&mut self, snapshot: ProjectionCacheSnapshot) {
|
||||
self.map.rollback_to(snapshot.snapshot);
|
||||
self.map.rollback_to(&snapshot.snapshot);
|
||||
}
|
||||
|
||||
pub fn rollback_skolemized(&mut self, snapshot: &ProjectionCacheSnapshot) {
|
||||
self.map.partial_rollback(&snapshot.snapshot, &|k| k.ty.has_re_skol());
|
||||
}
|
||||
|
||||
pub fn commit(&mut self, snapshot: ProjectionCacheSnapshot) {
|
||||
self.map.commit(snapshot.snapshot);
|
||||
pub fn commit(&mut self, snapshot: &ProjectionCacheSnapshot) {
|
||||
self.map.commit(&snapshot.snapshot);
|
||||
}
|
||||
|
||||
/// Try to start normalize `key`; returns an error if
|
||||
|
@ -92,7 +92,7 @@ impl<K, V> SnapshotMap<K, V>
|
||||
pub fn snapshot(&mut self) -> Snapshot {
|
||||
self.undo_log.push(UndoLog::OpenSnapshot);
|
||||
let len = self.undo_log.len() - 1;
|
||||
Snapshot { len: len }
|
||||
Snapshot { len }
|
||||
}
|
||||
|
||||
fn assert_open_snapshot(&self, snapshot: &Snapshot) {
|
||||
@ -103,8 +103,8 @@ impl<K, V> SnapshotMap<K, V>
|
||||
});
|
||||
}
|
||||
|
||||
pub fn commit(&mut self, snapshot: Snapshot) {
|
||||
self.assert_open_snapshot(&snapshot);
|
||||
pub fn commit(&mut self, snapshot: &Snapshot) {
|
||||
self.assert_open_snapshot(snapshot);
|
||||
if snapshot.len == 0 {
|
||||
// The root snapshot.
|
||||
self.undo_log.truncate(0);
|
||||
@ -135,8 +135,8 @@ impl<K, V> SnapshotMap<K, V>
|
||||
}
|
||||
}
|
||||
|
||||
pub fn rollback_to(&mut self, snapshot: Snapshot) {
|
||||
self.assert_open_snapshot(&snapshot);
|
||||
pub fn rollback_to(&mut self, snapshot: &Snapshot) {
|
||||
self.assert_open_snapshot(snapshot);
|
||||
while self.undo_log.len() > snapshot.len + 1 {
|
||||
let entry = self.undo_log.pop().unwrap();
|
||||
self.reverse(entry);
|
||||
|
@ -20,7 +20,7 @@ fn basic() {
|
||||
map.insert(44, "fourty-four");
|
||||
assert_eq!(map[&44], "fourty-four");
|
||||
assert_eq!(map.get(&33), None);
|
||||
map.rollback_to(snapshot);
|
||||
map.rollback_to(&snapshot);
|
||||
assert_eq!(map[&22], "twenty-two");
|
||||
assert_eq!(map.get(&33), None);
|
||||
assert_eq!(map.get(&44), None);
|
||||
@ -33,7 +33,7 @@ fn out_of_order() {
|
||||
map.insert(22, "twenty-two");
|
||||
let snapshot1 = map.snapshot();
|
||||
let _snapshot2 = map.snapshot();
|
||||
map.rollback_to(snapshot1);
|
||||
map.rollback_to(&snapshot1);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -43,8 +43,8 @@ fn nested_commit_then_rollback() {
|
||||
let snapshot1 = map.snapshot();
|
||||
let snapshot2 = map.snapshot();
|
||||
map.insert(22, "thirty-three");
|
||||
map.commit(snapshot2);
|
||||
map.commit(&snapshot2);
|
||||
assert_eq!(map[&22], "thirty-three");
|
||||
map.rollback_to(snapshot1);
|
||||
map.rollback_to(&snapshot1);
|
||||
assert_eq!(map[&22], "twenty-two");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user