diff options
| author | Michael Goulet <michael@errs.io> | 2023-07-23 13:56:03 -0400 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-07-23 14:13:52 -0400 |
| commit | d1380a18447e9509cc9cd5307edcb4e22ca0351b (patch) | |
| tree | 4d14a4a6c25737f6939b801604b653c42564d289 /compiler/rustc_trait_selection/src | |
| parent | 77e24f90f599070af2d8051ef9adad7fe528dd78 (diff) | |
| download | rust-d1380a18447e9509cc9cd5307edcb4e22ca0351b.tar.gz rust-d1380a18447e9509cc9cd5307edcb4e22ca0351b.zip | |
Use erased self type when autoderefing for trait error suggestion
Diffstat (limited to 'compiler/rustc_trait_selection/src')
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs | 10 |
1 files changed, 3 insertions, 7 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 073a2a2b1a0..3494e819b2e 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -776,18 +776,14 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { real_trait_pred = parent_trait_pred; } - let real_ty = real_trait_pred.self_ty(); // We `erase_late_bound_regions` here because `make_subregion` does not handle // `ReLateBound`, and we don't particularly care about the regions. - if !self.can_eq( - obligation.param_env, - self.tcx.erase_late_bound_regions(real_ty), - arg_ty, - ) { + let real_ty = self.tcx.erase_late_bound_regions(real_trait_pred.self_ty()); + if !self.can_eq(obligation.param_env, real_ty, arg_ty) { continue; } - if let ty::Ref(region, base_ty, mutbl) = *real_ty.skip_binder().kind() { + if let ty::Ref(region, base_ty, mutbl) = *real_ty.kind() { let autoderef = (self.autoderef_steps)(base_ty); if let Some(steps) = autoderef.into_iter().enumerate().find_map(|(steps, (ty, obligations))| { |
