Skip to content

Commit c9283f8

Browse files
committed
Pass constraints to RegionInferenceContext::new.
Instead of destructuring it in advance and passing all the components individually. It's less code that way.
1 parent 801b150 commit c9283f8

File tree

2 files changed

+25
-37
lines changed

2 files changed

+25
-37
lines changed

Diff for: compiler/rustc_borrowck/src/nll.rs

+2-26
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use crate::diagnostics::RegionErrors;
3030
use crate::facts::{AllFacts, AllFactsExt, RustcFacts};
3131
use crate::location::LocationTable;
3232
use crate::region_infer::RegionInferenceContext;
33-
use crate::type_check::{self, MirTypeckRegionConstraints, MirTypeckResults};
33+
use crate::type_check::{self, MirTypeckResults};
3434
use crate::universal_regions::UniversalRegions;
3535
use crate::{BorrowckInferCtxt, polonius, renumber};
3636

@@ -117,15 +117,6 @@ pub(crate) fn compute_regions<'a, 'tcx>(
117117
// region inference data that was contained in `infcx`, and the
118118
// base constraints generated by the type-check.
119119
let var_origins = infcx.get_region_var_origins();
120-
let MirTypeckRegionConstraints {
121-
placeholder_indices,
122-
placeholder_index_to_region: _,
123-
liveness_constraints,
124-
mut outlives_constraints,
125-
mut member_constraints,
126-
universe_causes,
127-
type_tests,
128-
} = constraints;
129120

130121
// If requested, emit legacy polonius facts.
131122
polonius::emit_facts(
@@ -138,26 +129,11 @@ pub(crate) fn compute_regions<'a, 'tcx>(
138129
&universal_region_relations,
139130
);
140131

141-
if let Some(guar) = universal_region_relations.universal_regions.tainted_by_errors() {
142-
// Suppress unhelpful extra errors in `infer_opaque_types` by clearing out all
143-
// outlives bounds that we may end up checking.
144-
outlives_constraints = Default::default();
145-
member_constraints = Default::default();
146-
147-
// Also taint the entire scope.
148-
infcx.set_tainted_by_errors(guar);
149-
}
150-
151132
let mut regioncx = RegionInferenceContext::new(
152133
infcx,
153134
var_origins,
154-
placeholder_indices,
135+
constraints,
155136
universal_region_relations,
156-
outlives_constraints,
157-
member_constraints,
158-
universe_causes,
159-
type_tests,
160-
liveness_constraints,
161137
elements,
162138
);
163139

Diff for: compiler/rustc_borrowck/src/region_infer/mod.rs

+23-11
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,9 @@ use crate::diagnostics::{RegionErrorKind, RegionErrors, UniverseInfo};
3131
use crate::member_constraints::{MemberConstraintSet, NllMemberConstraintIndex};
3232
use crate::nll::PoloniusOutput;
3333
use crate::region_infer::reverse_sccs::ReverseSccGraph;
34-
use crate::region_infer::values::{
35-
LivenessValues, PlaceholderIndices, RegionElement, RegionValues, ToElementIndex,
36-
};
37-
use crate::type_check::Locations;
34+
use crate::region_infer::values::{LivenessValues, RegionElement, RegionValues, ToElementIndex};
3835
use crate::type_check::free_region_relations::UniversalRegionRelations;
36+
use crate::type_check::{Locations, MirTypeckRegionConstraints};
3937
use crate::universal_regions::UniversalRegions;
4038

4139
mod dump_mir;
@@ -395,22 +393,36 @@ impl<'tcx> RegionInferenceContext<'tcx> {
395393
pub(crate) fn new(
396394
infcx: &BorrowckInferCtxt<'tcx>,
397395
var_infos: VarInfos,
398-
placeholder_indices: PlaceholderIndices,
396+
constraints: MirTypeckRegionConstraints<'tcx>,
399397
universal_region_relations: Frozen<UniversalRegionRelations<'tcx>>,
400-
mut outlives_constraints: OutlivesConstraintSet<'tcx>,
401-
member_constraints_in: MemberConstraintSet<'tcx, RegionVid>,
402-
universe_causes: FxIndexMap<ty::UniverseIndex, UniverseInfo<'tcx>>,
403-
type_tests: Vec<TypeTest<'tcx>>,
404-
liveness_constraints: LivenessValues,
405398
elements: Rc<DenseLocationMap>,
406399
) -> Self {
407400
let universal_regions = &universal_region_relations.universal_regions;
401+
let MirTypeckRegionConstraints {
402+
placeholder_indices,
403+
placeholder_index_to_region: _,
404+
liveness_constraints,
405+
mut outlives_constraints,
406+
mut member_constraints,
407+
universe_causes,
408+
type_tests,
409+
} = constraints;
408410

409411
debug!("universal_regions: {:#?}", universal_region_relations.universal_regions);
410412
debug!("outlives constraints: {:#?}", outlives_constraints);
411413
debug!("placeholder_indices: {:#?}", placeholder_indices);
412414
debug!("type tests: {:#?}", type_tests);
413415

416+
if let Some(guar) = universal_region_relations.universal_regions.tainted_by_errors() {
417+
// Suppress unhelpful extra errors in `infer_opaque_types` by clearing out all
418+
// outlives bounds that we may end up checking.
419+
outlives_constraints = Default::default();
420+
member_constraints = Default::default();
421+
422+
// Also taint the entire scope.
423+
infcx.set_tainted_by_errors(guar);
424+
}
425+
414426
// Create a RegionDefinition for each inference variable.
415427
let definitions: IndexVec<_, _> = var_infos
416428
.iter()
@@ -435,7 +447,7 @@ impl<'tcx> RegionInferenceContext<'tcx> {
435447
}
436448

437449
let member_constraints =
438-
Rc::new(member_constraints_in.into_mapped(|r| constraint_sccs.scc(r)));
450+
Rc::new(member_constraints.into_mapped(|r| constraint_sccs.scc(r)));
439451

440452
let mut result = Self {
441453
var_infos,

0 commit comments

Comments
 (0)