diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-06-19 19:26:28 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-06-19 19:26:28 +0200 |
| commit | 68d3e0e3bd36c655b7bfdee9ca081814b1bb002f (patch) | |
| tree | 8c01d468ea837e35ab4216a46c127d2cfd53bd24 /compiler/rustc_trait_selection/src | |
| parent | 263635b9172c183a7ab0f3a8a7326c3e16398ce9 (diff) | |
| parent | 29c74d561992c156cec01119ef4e70766efa013c (diff) | |
| download | rust-68d3e0e3bd36c655b7bfdee9ca081814b1bb002f.tar.gz rust-68d3e0e3bd36c655b7bfdee9ca081814b1bb002f.zip | |
Rollup merge of #112783 - compiler-errors:nlb-fnptr-reject-ice, r=fee1-dead
Don't ICE on bound var in `reject_fn_ptr_impls`
We may try to use an impl like `impl<T: FnPtr> PartialEq {}` to satisfy a predicate like `for<T> T: PartialEq` -- don't ICE in that case.
Fixes #112735
Diffstat (limited to 'compiler/rustc_trait_selection/src')
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs b/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs index f2dfa6921f4..9f209b4b623 100644 --- a/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs +++ b/compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs @@ -417,17 +417,15 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { // Fast path to avoid evaluating an obligation that trivially holds. // There may be more bounds, but these are checked by the regular path. ty::FnPtr(..) => return false, + // These may potentially implement `FnPtr` ty::Placeholder(..) | ty::Dynamic(_, _, _) | ty::Alias(_, _) | ty::Infer(_) - | ty::Param(..) => {} + | ty::Param(..) + | ty::Bound(_, _) => {} - ty::Bound(_, _) => span_bug!( - obligation.cause.span(), - "cannot have escaping bound var in self type of {obligation:#?}" - ), // These can't possibly implement `FnPtr` as they are concrete types // and not `FnPtr` ty::Bool |
