From 5d170f0a3c3591b000a0400e7029fc8622144be2 Mon Sep 17 00:00:00 2001 From: Michael Hewson Date: Thu, 9 Nov 2017 09:56:14 -0500 Subject: [PATCH] add a comment explaining the bugfix to infer::region_inference::add_constraint --- src/librustc/infer/region_inference/mod.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/librustc/infer/region_inference/mod.rs b/src/librustc/infer/region_inference/mod.rs index 0bc388a00894..4c8a72512f1d 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));