Rollup merge of #86763 - JohnTitor:test-63355, r=oli-obk
Add a regression test for issue-63355 Closes #63355 r? ``@nikomatsakis``
This commit is contained in:
commit
76300d52f7
50
src/test/ui/type-alias-impl-trait/issue-63355.rs
Normal file
50
src/test/ui/type-alias-impl-trait/issue-63355.rs
Normal file
@ -0,0 +1,50 @@
|
||||
#![feature(min_type_alias_impl_trait)]
|
||||
#![feature(type_alias_impl_trait)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
pub trait Foo {}
|
||||
|
||||
pub trait Bar {
|
||||
type Foo: Foo;
|
||||
|
||||
fn foo() -> Self::Foo;
|
||||
}
|
||||
|
||||
pub trait Baz {
|
||||
type Foo: Foo;
|
||||
type Bar: Bar<Foo = Self::Foo>;
|
||||
|
||||
fn foo() -> Self::Foo;
|
||||
fn bar() -> Self::Bar;
|
||||
}
|
||||
|
||||
impl Foo for () {}
|
||||
|
||||
impl Bar for () {
|
||||
type Foo = FooImpl;
|
||||
|
||||
fn foo() -> Self::Foo {
|
||||
()
|
||||
}
|
||||
}
|
||||
|
||||
// FIXME(#86731): The below is illegal use of `min_type_alias_impl_trait`
|
||||
// but the compiler doesn't report it, we should fix it.
|
||||
pub type FooImpl = impl Foo;
|
||||
pub type BarImpl = impl Bar<Foo = FooImpl>;
|
||||
//~^ ERROR: type mismatch resolving `<() as Bar>::Foo == ()`
|
||||
|
||||
impl Baz for () {
|
||||
type Foo = FooImpl;
|
||||
type Bar = BarImpl;
|
||||
|
||||
fn foo() -> Self::Foo {
|
||||
()
|
||||
}
|
||||
|
||||
fn bar() -> Self::Bar {
|
||||
()
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
14
src/test/ui/type-alias-impl-trait/issue-63355.stderr
Normal file
14
src/test/ui/type-alias-impl-trait/issue-63355.stderr
Normal file
@ -0,0 +1,14 @@
|
||||
error[E0271]: type mismatch resolving `<() as Bar>::Foo == ()`
|
||||
--> $DIR/issue-63355.rs:34:20
|
||||
|
|
||||
LL | pub type FooImpl = impl Foo;
|
||||
| -------- the found opaque type
|
||||
LL | pub type BarImpl = impl Bar<Foo = FooImpl>;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ expected `()`, found opaque type
|
||||
|
|
||||
= note: expected unit type `()`
|
||||
found opaque type `impl Foo`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0271`.
|
Loading…
x
Reference in New Issue
Block a user