mirror of https://github.com/rust-lang/rust
35 lines
466 B
Rust
35 lines
466 B
Rust
// issue: 113596
|
|
|
|
#![feature(type_alias_impl_trait)]
|
|
|
|
trait Test {}
|
|
|
|
struct A;
|
|
|
|
impl Test for A {}
|
|
|
|
struct B<T> {
|
|
inner: T,
|
|
}
|
|
|
|
impl<T: Test> Test for B<T> {}
|
|
|
|
type TestImpl = impl Test;
|
|
|
|
fn test() -> TestImpl {
|
|
A
|
|
}
|
|
|
|
fn make_option() -> Option<TestImpl> {
|
|
Some(test())
|
|
}
|
|
|
|
fn make_option2() -> Option<TestImpl> {
|
|
let inner = make_option().unwrap();
|
|
|
|
Some(B { inner })
|
|
//~^ ERROR concrete type differs from previous defining opaque type use
|
|
}
|
|
|
|
fn main() {}
|