diff options
| author | Michael Goulet <michael@errs.io> | 2023-09-07 04:51:36 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-09-07 04:52:00 +0000 |
| commit | ee9727e263f32d1bc3aa5b8fdbe42098e84aa923 (patch) | |
| tree | 596bc85ab4043fd0035b39b4c98f36c197dd5558 /compiler/rustc_trait_selection/src | |
| parent | f00c1399987c60b4e884afc42f4aa6226855e9ae (diff) | |
| download | rust-ee9727e263f32d1bc3aa5b8fdbe42098e84aa923.tar.gz rust-ee9727e263f32d1bc3aa5b8fdbe42098e84aa923.zip | |
Don't suggest dereferencing to unsized type
Diffstat (limited to 'compiler/rustc_trait_selection/src')
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs index 611ec6b00ef..32fb10ce4a6 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -838,7 +838,20 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { obligation.param_env, real_trait_pred_and_base_ty, ); - if self.predicate_may_hold(&obligation) { + let sized_obligation = Obligation::new( + self.tcx, + obligation.cause.clone(), + obligation.param_env, + ty::TraitRef::from_lang_item( + self.tcx, + hir::LangItem::Sized, + obligation.cause.span, + [base_ty], + ), + ); + if self.predicate_may_hold(&obligation) + && self.predicate_must_hold_modulo_regions(&sized_obligation) + { let call_node = self.tcx.hir().get(*call_hir_id); let msg = "consider dereferencing here"; let is_receiver = matches!( |
