]> git.lizzy.rs Git - rust.git/commitdiff
Add outlives_constraint to BlameConstraint
authorJack Huey <31162821+jackh726@users.noreply.github.com>
Fri, 16 Sep 2022 21:08:35 +0000 (17:08 -0400)
committerJack Huey <31162821+jackh726@users.noreply.github.com>
Fri, 16 Sep 2022 21:08:35 +0000 (17:08 -0400)
compiler/rustc_borrowck/src/diagnostics/explain_borrow.rs
compiler/rustc_borrowck/src/diagnostics/region_errors.rs
compiler/rustc_borrowck/src/region_infer/mod.rs

index 3b58da11e84a0edf7c20143c4f34714aacfd2c38..c5e0e41d042979148e7fffd56badbdfa9c2737aa 100644 (file)
@@ -310,11 +310,12 @@ fn free_region_constraint_info(
         borrow_region: RegionVid,
         outlived_region: RegionVid,
     ) -> (ConstraintCategory<'tcx>, bool, Span, Option<RegionName>) {
-        let BlameConstraint { category, from_closure, cause, variance_info: _ } = self
-            .regioncx
-            .best_blame_constraint(borrow_region, NllRegionVariableOrigin::FreeRegion, |r| {
-                self.regioncx.provides_universal_region(r, borrow_region, outlived_region)
-            });
+        let blame_constraint = self.regioncx.best_blame_constraint(
+            borrow_region,
+            NllRegionVariableOrigin::FreeRegion,
+            |r| self.regioncx.provides_universal_region(r, borrow_region, outlived_region),
+        );
+        let BlameConstraint { category, from_closure, cause, .. } = blame_constraint;
 
         let outlived_fr_name = self.give_region_a_name(outlived_region);
 
index e7681222fc1f0d0e40528787e30fc587d589f676..2bf9308c142ad708012908d3b4a20ae7b7d5c0dc 100644 (file)
@@ -354,7 +354,7 @@ pub(crate) fn report_region_error(
     ) {
         debug!("report_region_error(fr={:?}, outlived_fr={:?})", fr, outlived_fr);
 
-        let BlameConstraint { category, cause, variance_info, from_closure: _ } =
+        let BlameConstraint { category, cause, variance_info, .. } =
             self.regioncx.best_blame_constraint(fr, fr_origin, |r| {
                 self.regioncx.provides_universal_region(r, fr, outlived_fr)
             });
index 154a471a2b385a8e527f280fddd03b9c5bc6ebb1..c147a0708f45c466631520efb6cd69cb2756fa9b 100644 (file)
@@ -2073,6 +2073,7 @@ pub(crate) fn best_blame_constraint(
                     from_closure,
                     cause: ObligationCause::new(span, CRATE_HIR_ID, cause_code),
                     variance_info: constraint.variance_info,
+                    outlives_constraint: *constraint,
                 }
             })
             .collect();
@@ -2328,4 +2329,5 @@ pub struct BlameConstraint<'tcx> {
     pub from_closure: bool,
     pub cause: ObligationCause<'tcx>,
     pub variance_info: ty::VarianceDiagInfo<'tcx>,
+    pub outlives_constraint: OutlivesConstraint<'tcx>,
 }