diff options
Diffstat (limited to 'src/test/ui/impl-unused-tps.rs')
-rw-r--r-- | src/test/ui/impl-unused-tps.rs | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/test/ui/impl-unused-tps.rs b/src/test/ui/impl-unused-tps.rs deleted file mode 100644 index 7cc1ae613..000000000 --- a/src/test/ui/impl-unused-tps.rs +++ /dev/null @@ -1,62 +0,0 @@ -trait Foo<A> { - fn get(&self, A: &A) { } -} - -trait Bar { - type Out; -} - -impl<T> Foo<T> for [isize;0] { - // OK, T is used in `Foo<T>`. -} - -impl<T,U> Foo<T> for [isize;1] { - //~^ ERROR the type parameter `U` is not constrained -} - -impl<T,U> Foo<T> for [isize;2] where T : Bar<Out=U> { - // OK, `U` is now constrained by the output type parameter. -} - -impl<T:Bar<Out=U>,U> Foo<T> for [isize;3] { - // OK, same as above but written differently. -} - -impl<T,U> Foo<T> for U { - // OK, T, U are used everywhere. Note that the coherence check - // hasn't executed yet, so no errors about overlap. -} - -impl<T,U> Bar for T { - //~^ ERROR the type parameter `U` is not constrained - - type Out = U; - - // Using `U` in an associated type within the impl is not good enough! -} - -impl<T,U> Bar for T - where T : Bar<Out=U> -{ - //~^^^ ERROR the type parameter `U` is not constrained - - // This crafty self-referential attempt is still no good. -} - -impl<T,U,V> Foo<T> for T - where (T,U): Bar<Out=V> -{ - //~^^^ ERROR the type parameter `U` is not constrained - //~| ERROR the type parameter `V` is not constrained - - // Here, `V` is bound by an output type parameter, but the inputs - // are not themselves constrained. -} - -impl<T,U,V> Foo<(T,U)> for T - where (T,U): Bar<Out=V> -{ - // As above, but both T and U ARE constrained. -} - -fn main() { } |