diff options
| author | Michael Goulet <michael@errs.io> | 2023-06-19 02:46:10 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-06-19 02:52:03 +0000 |
| commit | 29c74d561992c156cec01119ef4e70766efa013c (patch) | |
| tree | ed28d9325b118be8ab42fb2b97759d49be943687 /compiler/rustc_trait_selection/src/traits | |
| parent | 939786223f2d36b1af62e27e9a7a54bae6e30f3f (diff) | |
| download | rust-29c74d561992c156cec01119ef4e70766efa013c.tar.gz rust-29c74d561992c156cec01119ef4e70766efa013c.zip | |
Don't ICE on bound var in reject_fn_ptr_impls
Diffstat (limited to 'compiler/rustc_trait_selection/src/traits')
| -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 |
