about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Hewson <michael@michaelhewson.ca>2017-11-09 09:56:14 -0500
committerMichael Hewson <michael@michaelhewson.ca>2017-11-09 09:56:14 -0500
commit5d170f0a3c3591b000a0400e7029fc8622144be2 (patch)
tree9bb8929e7cc0c85fe660fb2bd062b847d4d32b35
parentc046fda312b5a23dd2c531967b6ce241c9cf3d63 (diff)
downloadrust-5d170f0a3c3591b000a0400e7029fc8622144be2.tar.gz
rust-5d170f0a3c3591b000a0400e7029fc8622144be2.zip
add a comment explaining the bugfix to infer::region_inference::add_constraint
-rw-r--r--src/librustc/infer/region_inference/mod.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/librustc/infer/region_inference/mod.rs b/src/librustc/infer/region_inference/mod.rs
index 0bc388a0089..4c8a72512f1 100644
--- a/src/librustc/infer/region_inference/mod.rs
+++ b/src/librustc/infer/region_inference/mod.rs
@@ -633,6 +633,9 @@ impl<'a, 'gcx, 'tcx> RegionVarBindings<'a, 'gcx, 'tcx> {
 
         debug!("RegionVarBindings: add_constraint({:?})", constraint);
 
+        // never overwrite an existing (constraint, origin) - only insert one if it isn't
+        // present in the map yet. This prevents origins from outside the snapshot being
+        // replaced with "less informative" origins e.g. during calls to `can_eq`
         self.constraints.borrow_mut().entry(constraint).or_insert_with(|| {
             if self.in_snapshot() {
                 self.undo_log.borrow_mut().push(AddConstraint(constraint));