Add RegionInferenceContext::outlives_constraints
This commit is contained in:
parent
c6e3f27864
commit
8dac074087
2 changed files with 7 additions and 1 deletions
|
@ -12,6 +12,7 @@ use std::rc::Rc;
|
||||||
use crate::borrow_set::BorrowSet;
|
use crate::borrow_set::BorrowSet;
|
||||||
|
|
||||||
pub use super::{
|
pub use super::{
|
||||||
|
constraints::OutlivesConstraint,
|
||||||
dataflow::{calculate_borrows_out_of_scope_at_location, BorrowIndex, Borrows},
|
dataflow::{calculate_borrows_out_of_scope_at_location, BorrowIndex, Borrows},
|
||||||
facts::{AllFacts as PoloniusInput, RustcFacts},
|
facts::{AllFacts as PoloniusInput, RustcFacts},
|
||||||
location::{LocationTable, RichLocation},
|
location::{LocationTable, RichLocation},
|
||||||
|
|
|
@ -585,6 +585,11 @@ impl<'tcx> RegionInferenceContext<'tcx> {
|
||||||
self.universal_regions.to_region_vid(r)
|
self.universal_regions.to_region_vid(r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns an iterator over all the outlives constraints.
|
||||||
|
pub fn outlives_constraints(&self) -> impl Iterator<Item = OutlivesConstraint<'tcx>> + '_ {
|
||||||
|
self.constraints.outlives().iter().copied()
|
||||||
|
}
|
||||||
|
|
||||||
/// Adds annotations for `#[rustc_regions]`; see `UniversalRegions::annotate`.
|
/// Adds annotations for `#[rustc_regions]`; see `UniversalRegions::annotate`.
|
||||||
pub(crate) fn annotate(&self, tcx: TyCtxt<'tcx>, err: &mut Diagnostic) {
|
pub(crate) fn annotate(&self, tcx: TyCtxt<'tcx>, err: &mut Diagnostic) {
|
||||||
self.universal_regions.annotate(tcx, err)
|
self.universal_regions.annotate(tcx, err)
|
||||||
|
@ -698,7 +703,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
|
||||||
#[instrument(skip(self, _body), level = "debug")]
|
#[instrument(skip(self, _body), level = "debug")]
|
||||||
fn propagate_constraints(&mut self, _body: &Body<'tcx>) {
|
fn propagate_constraints(&mut self, _body: &Body<'tcx>) {
|
||||||
debug!("constraints={:#?}", {
|
debug!("constraints={:#?}", {
|
||||||
let mut constraints: Vec<_> = self.constraints.outlives().iter().collect();
|
let mut constraints: Vec<_> = self.outlives_constraints().collect();
|
||||||
constraints.sort_by_key(|c| (c.sup, c.sub));
|
constraints.sort_by_key(|c| (c.sup, c.sub));
|
||||||
constraints
|
constraints
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue