| //! This test checks that we don't allow registering hidden types for | |
| //! opaque types from other impls. | |
| #![feature(impl_trait_in_assoc_type)] | |
| trait Foo<T> { | |
| type Bar; | |
| fn foo(&self) -> <Self as Foo<()>>::Bar | |
| where | |
| Self: Foo<()>; | |
| } | |
| impl Foo<()> for () { | |
| type Bar = impl std::fmt::Debug; | |
| fn foo(&self) -> Self::Bar {} | |
| } | |
| impl Foo<i32> for () { | |
| type Bar = u32; | |
| fn foo(&self) -> <Self as Foo<()>>::Bar {} | |
| //~^ ERROR: mismatched types | |
| } | |
| fn main() {} |