diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2016-10-19 18:39:49 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2016-10-21 11:13:36 -0400 |
| commit | 567b11fc3a70cdba960bf6037b9d658fafdc5ada (patch) | |
| tree | f056cf57009f563b8887a61692e3b9a016f663a6 /src/librustc_data_structures/snapshot_map | |
| parent | 974817d4932fd447f724c4527360a258952ffd48 (diff) | |
| download | rust-567b11fc3a70cdba960bf6037b9d658fafdc5ada.tar.gz rust-567b11fc3a70cdba960bf6037b9d658fafdc5ada.zip | |
only remove keys that mention skolemized regions
Diffstat (limited to 'src/librustc_data_structures/snapshot_map')
| -rw-r--r-- | src/librustc_data_structures/snapshot_map/mod.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/librustc_data_structures/snapshot_map/mod.rs b/src/librustc_data_structures/snapshot_map/mod.rs index 23a67b3bd93..a4e6166032d 100644 --- a/src/librustc_data_structures/snapshot_map/mod.rs +++ b/src/librustc_data_structures/snapshot_map/mod.rs @@ -102,15 +102,19 @@ impl<K, V> SnapshotMap<K, V> } } - pub fn partial_rollback(&mut self, snapshot: &Snapshot) { + pub fn partial_rollback<F>(&mut self, + snapshot: &Snapshot, + should_revert_key: &F) + where F: Fn(&K) -> bool + { self.assert_open_snapshot(snapshot); for i in (snapshot.len + 1..self.undo_log.len()).rev() { let reverse = match self.undo_log[i] { UndoLog::OpenSnapshot => false, UndoLog::CommittedSnapshot => false, UndoLog::Noop => false, - UndoLog::Inserted(..) => true, - UndoLog::Overwrite(..) => true, + UndoLog::Inserted(ref k) => should_revert_key(k), + UndoLog::Overwrite(ref k, _) => should_revert_key(k), }; if reverse { |
