//@ check-pass //@ compile-flags: --crate-type=lib //@ revisions: old next //@[next] compile-flags: -Znext-solver #![feature(sized_hierarchy)] use std::marker::{PointeeSized, MetaSized}; trait Id: PointeeSized { type This: PointeeSized; } impl Id for T { type This = T; } fn requires_metasized() {} fn foo() where T: PointeeSized, ::This: Sized { // `T: Sized` from where bounds (`T: PointeeSized` removes any default bounds and // `::This: Sized` normalizes to `T: Sized`). This should trivially satisfy // `T: MetaSized`. requires_metasized::(); }