Rollup merge of #118290 - compiler-errors:placeholder-implied, r=aliemjay

Don't ICE when encountering placeholders in implied bounds computation

I *could* fix this the right way, though I don't really want to think about the implications of the change. This should have minimal side-effects.

r? `@aliemjay`

Fixes #118286
This commit is contained in:
Michael Goulet 2023-11-25 17:23:35 -05:00 committed by GitHub
commit 2eccebb84d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 2 deletions

View File

@ -207,8 +207,10 @@ fn implied_bounds_from_components<'tcx>(
Component::Region(r) => Some(OutlivesBound::RegionSubRegion(sub_region, r)),
Component::Param(p) => Some(OutlivesBound::RegionSubParam(sub_region, p)),
Component::Alias(p) => Some(OutlivesBound::RegionSubAlias(sub_region, p)),
Component::Placeholder(_) => {
unimplemented!("Shouldn't expect a placeholder type in implied bounds (yet)")
Component::Placeholder(_p) => {
// FIXME(non_lifetime_binders): Placeholders don't currently
// imply anything for outlives, though they could easily.
None
}
Component::EscapingAlias(_) =>
// If the projection has escaping regions, don't

View File

@ -0,0 +1,14 @@
// check-pass
pub fn main() {}
pub trait Iced {
fn get(&self) -> &impl Sized;
}
/// Impl causes ICE
impl Iced for () {
fn get(&self) -> &impl Sized {
&()
}
}