Don't ICE when encountering placeholders in implied bounds computation

This commit is contained in:
Michael Goulet 2023-11-25 17:40:52 +00:00
parent fe3038f263
commit 1279f70bf4
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 {
&()
}
}