Skip to content

Commit 4a68373

Browse files
committedOct 7, 2022
Introduce TypeErrCtxt
TypeErrCtxt optionally has a TypeckResults so that InferCtxt doesn't need to.
1 parent 5854680 commit 4a68373

File tree

42 files changed

+634
-568
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+634
-568
lines changed
 

‎compiler/rustc_borrowck/src/diagnostics/bound_region_errors.rs

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ impl<'tcx> UniverseInfo<'tcx> {
5656
) {
5757
match self.0 {
5858
UniverseInfoInner::RelateTys { expected, found } => {
59-
let err = mbcx.infcx.report_mismatched_types(
59+
let err = mbcx.infcx.err_ctxt().report_mismatched_types(
6060
&cause,
6161
expected,
6262
found,
@@ -449,42 +449,38 @@ fn try_extract_error_from_region_constraints<'tcx>(
449449
})?;
450450

451451
debug!(?sub_region, "cause = {:#?}", cause);
452-
let nice_error = match (error_region, *sub_region) {
453-
(Some(error_region), ty::ReVar(vid)) => NiceRegionError::new(
454-
infcx,
455-
RegionResolutionError::SubSupConflict(
456-
vid,
457-
region_var_origin(vid),
458-
cause.clone(),
459-
error_region,
460-
cause.clone(),
461-
placeholder_region,
462-
vec![],
463-
),
464-
),
465-
(Some(error_region), _) => NiceRegionError::new(
466-
infcx,
467-
RegionResolutionError::ConcreteFailure(cause.clone(), error_region, placeholder_region),
452+
let error = match (error_region, *sub_region) {
453+
(Some(error_region), ty::ReVar(vid)) => RegionResolutionError::SubSupConflict(
454+
vid,
455+
region_var_origin(vid),
456+
cause.clone(),
457+
error_region,
458+
cause.clone(),
459+
placeholder_region,
460+
vec![],
468461
),
462+
(Some(error_region), _) => {
463+
RegionResolutionError::ConcreteFailure(cause.clone(), error_region, placeholder_region)
464+
}
469465
// Note universe here is wrong...
470-
(None, ty::ReVar(vid)) => NiceRegionError::new(
471-
infcx,
472-
RegionResolutionError::UpperBoundUniverseConflict(
473-
vid,
474-
region_var_origin(vid),
475-
universe_of_region(vid),
476-
cause.clone(),
477-
placeholder_region,
478-
),
479-
),
480-
(None, _) => NiceRegionError::new(
481-
infcx,
482-
RegionResolutionError::ConcreteFailure(cause.clone(), sub_region, placeholder_region),
466+
(None, ty::ReVar(vid)) => RegionResolutionError::UpperBoundUniverseConflict(
467+
vid,
468+
region_var_origin(vid),
469+
universe_of_region(vid),
470+
cause.clone(),
471+
placeholder_region,
483472
),
473+
(None, _) => {
474+
RegionResolutionError::ConcreteFailure(cause.clone(), sub_region, placeholder_region)
475+
}
484476
};
485-
nice_error.try_report_from_nll().or_else(|| {
477+
NiceRegionError::new(&infcx.err_ctxt(), error).try_report_from_nll().or_else(|| {
486478
if let SubregionOrigin::Subtype(trace) = cause {
487-
Some(infcx.report_and_explain_type_error(*trace, TypeError::RegionsPlaceholderMismatch))
479+
Some(
480+
infcx
481+
.err_ctxt()
482+
.report_and_explain_type_error(*trace, TypeError::RegionsPlaceholderMismatch),
483+
)
488484
} else {
489485
None
490486
}

‎compiler/rustc_borrowck/src/diagnostics/region_errors.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
186186
if let Some(lower_bound_region) = lower_bound_region {
187187
let generic_ty = type_test.generic_kind.to_ty(self.infcx.tcx);
188188
let origin = RelateParamBound(type_test_span, generic_ty, None);
189-
self.buffer_error(self.infcx.construct_generic_bound_failure(
189+
self.buffer_error(self.infcx.err_ctxt().construct_generic_bound_failure(
190190
self.body.source.def_id().expect_local(),
191191
type_test_span,
192192
Some(origin),
@@ -365,7 +365,8 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
365365

366366
// Check if we can use one of the "nice region errors".
367367
if let (Some(f), Some(o)) = (self.to_error_region(fr), self.to_error_region(outlived_fr)) {
368-
let nice = NiceRegionError::new_from_span(self.infcx, cause.span, o, f);
368+
let infer_err = self.infcx.err_ctxt();
369+
let nice = NiceRegionError::new_from_span(&infer_err, cause.span, o, f);
369370
if let Some(diag) = nice.try_report_from_nll() {
370371
self.buffer_error(diag);
371372
return;

0 commit comments

Comments
 (0)