diff options
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_hir_typeck/src/cast.rs | 30 | ||||
| -rw-r--r-- | compiler/rustc_infer/src/infer/relate/combine.rs | 8 | ||||
| -rw-r--r-- | compiler/rustc_infer/src/infer/relate/generalize.rs | 11 |
3 files changed, 14 insertions, 35 deletions
diff --git a/compiler/rustc_hir_typeck/src/cast.rs b/compiler/rustc_hir_typeck/src/cast.rs index 0d21c013d67..63185444479 100644 --- a/compiler/rustc_hir_typeck/src/cast.rs +++ b/compiler/rustc_hir_typeck/src/cast.rs @@ -539,25 +539,19 @@ impl<'a, 'tcx> CastCheck<'tcx> { match self.expr_ty.kind() { ty::Ref(_, _, mt) => { let mtstr = mt.prefix_str(); - if self.cast_ty.is_trait() { - match fcx.tcx.sess.source_map().span_to_snippet(self.cast_span) { - Ok(s) => { - err.span_suggestion( - self.cast_span, - "try casting to a reference instead", - format!("&{mtstr}{s}"), - Applicability::MachineApplicable, - ); - } - Err(_) => { - let msg = format!("did you mean `&{mtstr}{tstr}`?"); - err.span_help(self.cast_span, msg); - } + match fcx.tcx.sess.source_map().span_to_snippet(self.cast_span) { + Ok(s) => { + err.span_suggestion( + self.cast_span, + "try casting to a reference instead", + format!("&{mtstr}{s}"), + Applicability::MachineApplicable, + ); + } + Err(_) => { + let msg = format!("did you mean `&{mtstr}{tstr}`?"); + err.span_help(self.cast_span, msg); } - } else { - let msg = - format!("consider using an implicit coercion to `&{mtstr}{tstr}` instead"); - err.span_help(self.span, msg); } } ty::Adt(def, ..) if def.is_box() => { diff --git a/compiler/rustc_infer/src/infer/relate/combine.rs b/compiler/rustc_infer/src/infer/relate/combine.rs index 6d8384e7a47..8b31a1118cb 100644 --- a/compiler/rustc_infer/src/infer/relate/combine.rs +++ b/compiler/rustc_infer/src/infer/relate/combine.rs @@ -335,7 +335,7 @@ impl<'tcx> InferCtxt<'tcx> { // constants and generic expressions are not yet handled correctly. let Generalization { value_may_be_infer: value, needs_wf: _ } = generalize::generalize( self, - &mut CombineDelegate { infcx: self, span, param_env }, + &mut CombineDelegate { infcx: self, span }, ct, target_vid, ty::Variance::Invariant, @@ -454,11 +454,7 @@ impl<'infcx, 'tcx> CombineFields<'infcx, 'tcx> { // adding constraints like `'x: '?2` and `?1 <: ?3`.) let Generalization { value_may_be_infer: b_ty, needs_wf } = generalize::generalize( self.infcx, - &mut CombineDelegate { - infcx: self.infcx, - param_env: self.param_env, - span: self.trace.span(), - }, + &mut CombineDelegate { infcx: self.infcx, span: self.trace.span() }, a_ty, b_vid, ambient_variance, diff --git a/compiler/rustc_infer/src/infer/relate/generalize.rs b/compiler/rustc_infer/src/infer/relate/generalize.rs index 665af7381dc..4d8c691ea3d 100644 --- a/compiler/rustc_infer/src/infer/relate/generalize.rs +++ b/compiler/rustc_infer/src/infer/relate/generalize.rs @@ -55,8 +55,6 @@ pub fn generalize<'tcx, D: GeneralizerDelegate<'tcx>, T: Into<Term<'tcx>> + Rela /// Abstracts the handling of region vars between HIR and MIR/NLL typechecking /// in the generalizer code. pub trait GeneralizerDelegate<'tcx> { - fn param_env(&self) -> ty::ParamEnv<'tcx>; - fn forbid_inference_vars() -> bool; fn span(&self) -> Span; @@ -66,15 +64,10 @@ pub trait GeneralizerDelegate<'tcx> { pub struct CombineDelegate<'cx, 'tcx> { pub infcx: &'cx InferCtxt<'tcx>, - pub param_env: ty::ParamEnv<'tcx>, pub span: Span, } impl<'tcx> GeneralizerDelegate<'tcx> for CombineDelegate<'_, 'tcx> { - fn param_env(&self) -> ty::ParamEnv<'tcx> { - self.param_env - } - fn forbid_inference_vars() -> bool { false } @@ -95,10 +88,6 @@ impl<'tcx, T> GeneralizerDelegate<'tcx> for T where T: TypeRelatingDelegate<'tcx>, { - fn param_env(&self) -> ty::ParamEnv<'tcx> { - <Self as TypeRelatingDelegate<'tcx>>::param_env(self) - } - fn forbid_inference_vars() -> bool { <Self as TypeRelatingDelegate<'tcx>>::forbid_inference_vars() } |
