diff options
| author | Nicholas Nethercote <nnethercote@mozilla.com> | 2018-11-05 10:37:23 +1100 |
|---|---|---|
| committer | Nicholas Nethercote <nnethercote@mozilla.com> | 2018-11-25 17:54:06 +1100 |
| commit | f5624e41e819bb85408eba7b3abd550f61a2857a (patch) | |
| tree | 400fe865828ee33380988c0c14527784857ba7db | |
| parent | 7fe09a6551b72133e68911f3125f28642ec243ac (diff) | |
| download | rust-f5624e41e819bb85408eba7b3abd550f61a2857a.tar.gz rust-f5624e41e819bb85408eba7b3abd550f61a2857a.zip | |
Make `commit` and `rollback_to` methods take ownership of the snapshots.
Because they shouldn't be reused. This provides consistency with the `ena` crate.
| -rw-r--r-- | src/librustc/infer/mod.rs | 2 | ||||
| -rw-r--r-- | src/librustc/traits/project.rs | 6 | ||||
| -rw-r--r-- | src/librustc_data_structures/snapshot_map/mod.rs | 8 | ||||
| -rw-r--r-- | src/librustc_data_structures/snapshot_map/test.rs | 8 |
4 files changed, 12 insertions, 12 deletions
diff --git a/src/librustc/infer/mod.rs b/src/librustc/infer/mod.rs index 87e32be1a17..9e51a4c16e5 100644 --- a/src/librustc/infer/mod.rs +++ b/src/librustc/infer/mod.rs @@ -790,7 +790,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); self.int_unification_table.borrow_mut().commit(int_snapshot); self.float_unification_table diff --git a/src/librustc/traits/project.rs b/src/librustc/traits/project.rs index e44bf2661c5..8f165863b3b 100644 --- a/src/librustc/traits/project.rs +++ b/src/librustc/traits/project.rs @@ -1652,15 +1652,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_placeholder(&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 diff --git a/src/librustc_data_structures/snapshot_map/mod.rs b/src/librustc_data_structures/snapshot_map/mod.rs index 6ad886625d8..8b761bdc8c6 100644 --- a/src/librustc_data_structures/snapshot_map/mod.rs +++ b/src/librustc_data_structures/snapshot_map/mod.rs @@ -102,8 +102,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.clear(); @@ -134,8 +134,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); diff --git a/src/librustc_data_structures/snapshot_map/test.rs b/src/librustc_data_structures/snapshot_map/test.rs index 700f9c95e3b..67be806261b 100644 --- a/src/librustc_data_structures/snapshot_map/test.rs +++ b/src/librustc_data_structures/snapshot_map/test.rs @@ -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"); } |
