2020-06-27 15:36:35 -05:00
|
|
|
// Split out of impl_wf.rs to work around rust aborting compilation early
|
|
|
|
|
2023-01-02 17:18:00 -06:00
|
|
|
// compile-flags: -Z trait-solver=chalk
|
2020-06-27 15:36:35 -05:00
|
|
|
|
|
|
|
trait Foo: Sized { }
|
|
|
|
|
|
|
|
trait Bar {
|
|
|
|
type Item: Foo;
|
|
|
|
}
|
|
|
|
|
|
|
|
impl Foo for i32 { }
|
|
|
|
|
|
|
|
// Implicit `T: Sized` bound.
|
|
|
|
impl<T> Foo for Option<T> { }
|
|
|
|
|
|
|
|
impl Bar for () {
|
|
|
|
type Item = i32;
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<T> Bar for Option<T> {
|
|
|
|
type Item = Option<T>;
|
|
|
|
}
|
|
|
|
|
|
|
|
impl Bar for f32 {
|
|
|
|
type Item = f32;
|
|
|
|
//~^ ERROR the trait bound `f32: Foo` is not satisfied
|
|
|
|
}
|
|
|
|
|
|
|
|
trait Baz<U: ?Sized> where U: Foo { }
|
|
|
|
|
|
|
|
impl Baz<i32> for i32 { }
|
|
|
|
|
|
|
|
fn main() {}
|