diff options
| author | mark <markm@cs.wisc.edu> | 2022-01-22 18:49:12 -0600 |
|---|---|---|
| committer | mark <markm@cs.wisc.edu> | 2022-03-16 10:35:24 -0500 |
| commit | bb8d4307eb723850e98bcb52d71d860a4aba220a (patch) | |
| tree | f3215627c474542776bdbcb03f634651a89b70f8 /compiler/rustc_infer | |
| parent | 461e8078010433ff7de2db2aaae8a3cfb0847215 (diff) | |
| download | rust-bb8d4307eb723850e98bcb52d71d860a4aba220a.tar.gz rust-bb8d4307eb723850e98bcb52d71d860a4aba220a.zip | |
rustc_error: make ErrorReported impossible to construct
There are a few places were we have to construct it, though, and a few places that are more invasive to change. To do this, we create a constructor with a long obvious name.
Diffstat (limited to 'compiler/rustc_infer')
6 files changed, 24 insertions, 21 deletions
diff --git a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/different_lifetimes.rs b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/different_lifetimes.rs index 0d6dbd8f343..7721e00c141 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/different_lifetimes.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/different_lifetimes.rs @@ -147,8 +147,8 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> { self.suggest_adding_lifetime_params(sub, ty_sup, ty_sub, &mut err); - err.emit(); - Some(ErrorGuaranteed) + let reported = err.emit(); + Some(reported) } fn suggest_adding_lifetime_params( diff --git a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/mismatched_static_lifetime.rs b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/mismatched_static_lifetime.rs index 4710eae6189..467054e318b 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/mismatched_static_lifetime.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/mismatched_static_lifetime.rs @@ -98,7 +98,7 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> { let impl_span = self.tcx().def_span(*impl_def_id); err.span_note(impl_span, "...does not necessarily outlive the static lifetime introduced by the compatible `impl`"); } - err.emit(); - Some(ErrorGuaranteed) + let reported = err.emit(); + Some(reported) } } diff --git a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/mod.rs b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/mod.rs index c7bfa686c04..df81aea6ef9 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/mod.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/mod.rs @@ -54,10 +54,7 @@ impl<'cx, 'tcx> NiceRegionError<'cx, 'tcx> { pub fn try_report(&self) -> Option<ErrorGuaranteed> { self.try_report_from_nll() - .map(|mut diag| { - diag.emit(); - ErrorGuaranteed - }) + .map(|mut diag| diag.emit()) .or_else(|| self.try_report_impl_not_conforming_to_trait()) .or_else(|| self.try_report_anon_anon_conflict()) .or_else(|| self.try_report_static_impl_trait()) diff --git a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/static_impl_trait.rs b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/static_impl_trait.rs index 99dd418015b..4fcdcb63666 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/static_impl_trait.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/static_impl_trait.rs @@ -84,8 +84,8 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> { ), ); if self.find_impl_on_dyn_trait(&mut err, param.param_ty, &ctxt) { - err.emit(); - return Some(ErrorGuaranteed); + let reported = err.emit(); + return Some(reported); } else { err.cancel(); } @@ -276,8 +276,8 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> { Some((param.param_ty_span, param.param_ty.to_string())), ); - err.emit(); - Some(ErrorGuaranteed) + let reported = err.emit(); + Some(reported) } } diff --git a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/trait_impl_difference.rs b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/trait_impl_difference.rs index 3f0f50bb75a..b1a42ee66c9 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/trait_impl_difference.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/nice_region_error/trait_impl_difference.rs @@ -33,13 +33,13 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> { ) = (sub_trace.values.ty(), sup_trace.values.ty(), sub_trace.cause.code()) && sup_expected_found == sub_expected_found { - self.emit_err( + let guar = self.emit_err( var_origin.span(), sub_expected, sub_found, *trait_item_def_id, ); - return Some(ErrorGuaranteed); + return Some(guar); } if let RegionResolutionError::ConcreteFailure(origin, _, _) | RegionResolutionError::GenericBoundFailure(origin, _, _) = error.clone() @@ -49,18 +49,24 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> { trait_item_def_id, } = origin { - self.emit_associated_type_err( + let guar = self.emit_associated_type_err( span, self.infcx.tcx.item_name(impl_item_def_id), impl_item_def_id, trait_item_def_id, ); - return Some(ErrorGuaranteed); + return Some(guar); } None } - fn emit_err(&self, sp: Span, expected: Ty<'tcx>, found: Ty<'tcx>, trait_def_id: DefId) { + fn emit_err( + &self, + sp: Span, + expected: Ty<'tcx>, + found: Ty<'tcx>, + trait_def_id: DefId, + ) -> ErrorGuaranteed { let trait_sp = self.tcx().def_span(trait_def_id); let mut err = self .tcx() @@ -142,7 +148,7 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> { argument, the other inputs and its output", ); } - err.emit(); + err.emit() } fn emit_associated_type_err( @@ -151,7 +157,7 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> { item_name: Symbol, impl_item_def_id: DefId, trait_item_def_id: DefId, - ) { + ) -> ErrorGuaranteed { let impl_sp = self.tcx().def_span(impl_item_def_id); let trait_sp = self.tcx().def_span(trait_item_def_id); let mut err = self @@ -161,7 +167,7 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> { err.span_label(impl_sp, "found"); err.span_label(trait_sp, "expected"); - err.emit(); + err.emit() } } diff --git a/compiler/rustc_infer/src/infer/outlives/obligations.rs b/compiler/rustc_infer/src/infer/outlives/obligations.rs index 0224aba01ef..5d8cc94e05c 100644 --- a/compiler/rustc_infer/src/infer/outlives/obligations.rs +++ b/compiler/rustc_infer/src/infer/outlives/obligations.rs @@ -189,7 +189,7 @@ impl<'cx, 'tcx> InferCtxt<'cx, 'tcx> { self.tcx.sess.delay_span_bug( origin.span(), &format!("no region-bound-pairs for {:?}", body_id), - ) + ); } } } |
