rust/tests/ui/traits/issue-68295.rs

48 lines
820 B
Rust

//@ check-fail
//
// regression test for #68295
struct Matrix<R, C, S>(R, C, S);
impl<R, C, S> Matrix<R, C, S> {
fn into_owned(self) -> Matrix<R, C, Owned<R, C, ()>>
where
(): Allocator<R, C>,
{
unimplemented!()
}
}
impl<D, S> Matrix<D, D, S> {
fn hermitian_part(&self) -> Matrix<D, D, Owned<D, D, ()>>
where
(): Allocator<D, D>,
{
unimplemented!()
}
}
trait Allocator<R, C> {
type Buffer;
}
trait Trait<R, C, A> {
type Power;
}
impl<R, C, A: Allocator<R, C>> Trait<R, C, A> for () {
type Power = A::Buffer;
}
type Owned<R, C, G> = <G as Trait<R, C, ()>>::Power;
fn crash<R, C>(input: Matrix<R, C, ()>) -> Matrix<R, C, u32>
where
(): Allocator<R, C>,
{
input.into_owned()
//~^ ERROR mismatched types [E0308]
}
fn main() {}