34 lines
632 B
Rust
34 lines
632 B
Rust
// revisions: min_tait full_tait
|
|
#![feature(min_type_alias_impl_trait)]
|
|
#![cfg_attr(full_tait, feature(type_alias_impl_trait))]
|
|
//[full_tait]~^ WARN incomplete
|
|
// build-pass (FIXME(62277): could be check-pass?)
|
|
|
|
trait Bar {}
|
|
struct Dummy<U>(U);
|
|
impl<V> Bar for Dummy<V> {}
|
|
|
|
trait Foo<T> {
|
|
type Assoc: Bar;
|
|
fn foo(t: T) -> Self::Assoc;
|
|
}
|
|
|
|
impl<W> Foo<W> for i32 {
|
|
type Assoc = impl Bar;
|
|
fn foo(w: W) -> Self::Assoc {
|
|
Dummy(w)
|
|
}
|
|
}
|
|
|
|
struct NonGeneric;
|
|
impl Bar for NonGeneric {}
|
|
|
|
impl<W> Foo<W> for u32 {
|
|
type Assoc = impl Bar;
|
|
fn foo(_: W) -> Self::Assoc {
|
|
NonGeneric
|
|
}
|
|
}
|
|
|
|
fn main() {}
|