mirror of https://github.com/rust-lang/rust
26 lines
569 B
Rust
26 lines
569 B
Rust
//@ compile-flags: -Znext-solver=coherence
|
|
//@ check-pass
|
|
|
|
// A regression test for trait-system-refactor-initiative#70.
|
|
|
|
trait Trait {
|
|
type Assoc;
|
|
}
|
|
|
|
struct W<T: ?Sized>(*mut T);
|
|
impl<T: ?Sized> Trait for W<W<T>>
|
|
where
|
|
W<T>: Trait,
|
|
{
|
|
type Assoc = ();
|
|
}
|
|
|
|
trait NoOverlap {}
|
|
impl<T: Trait<Assoc = u32>> NoOverlap for T {}
|
|
// `Projection(<W<_> as Trait>::Assoc, u32)` should result in error even
|
|
// though applying the impl results in overflow. This is necessary to match
|
|
// the behavior of the old solver.
|
|
impl<T: ?Sized> NoOverlap for W<T> {}
|
|
|
|
fn main() {}
|