--// CS1617: Invalid option `ISO' for /langversion. It must be either `ISO-1', `ISO-2' or `Default'
++// CS1617: Invalid -langversion option `ISO'. It must be `ISO-1', `ISO-2', `3' or `Default'
// Line: 0
// Compiler options: -langversion:ISO
--// CS1644: Feature `generic variance' cannot be used because it is not part of the C# 2.0 language specification\r
++// CS1644: Feature `generic type variance' cannot be used because it is not part of the C# 2.0 language specification\r
// Line: 5\r
// Compiler options: -langversion:iso-2
--// CS1644: Feature `generic variance' cannot be used because it is not part of the C# 2.0 language specification\r
++// CS1644: Feature `generic type variance' cannot be used because it is not part of the C# 2.0 language specification\r
// Line: 5\r
// Compiler options: -langversion:iso-2
--- /dev/null
--- /dev/null
++// CS1644: Feature `generic type variance' cannot be used because it is not part of the C# 3.0 language specification
++// Line: 5
++// Compiler options: -langversion:3
++
++public interface IFoo<in T>
++{
++}
--- /dev/null
--- /dev/null
++// CS1960: Variant type parameters can only be used with interfaces and delegates\r
++// Line: 5\r
++// Compiler options: -langversion:future
++
++class A<in T>
++{
++}
--- /dev/null
--- /dev/null
++// CS1960: Variant type parameters can only be used with interfaces and delegates\r
++// Line: 5\r
++// Compiler options: -langversion:future
++
++class A<out T>
++{
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++delegate A<A<T>> B<in T> ();
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++delegate void B<in T> (A<T> a);
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++delegate void B<in T> (A<A<T>> a);
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be covariantly valid on `B<T>.A'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<out T>
++{
++}
++
++interface B<in T>
++{
++ A<T> A { get; }
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>.C(A<T>)'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<in T>
++{
++ void C(A<T> a);
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be covariantly valid on `B<T>.C(A<T>)'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<out T>
++{
++}
++
++interface B<in T>
++{
++ void C(A<T> a);
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<in T> : A<T>
++{
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be covariantly valid on `B<T>'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<out T>
++{
++}
++
++interface B<in T> : A<T>
++{
++}
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>.A'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<out T>
++{
++ A<T> A { get; }
++}
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>.A'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<out T>
++{
++ A<A<T>> A { get; }
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be covariantly valid on `D<T>'\r
++// Line: 5\r
++// Compiler options: -langversion:future
++
++delegate T D<in T> ();
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>.C()'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<out T>
++{
++ A<T> C();
++}
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>.C()'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<out T>
++{
++ A<A<T>> C();
++}
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>.C(A<T>)'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<out T>
++{
++ void C(A<T> a);
++}
--- /dev/null
--- /dev/null
++// CS1923: The covariant type parameter `T' must be invariantly valid on `B<T>.C(A<A<T>>)'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<out T>
++{
++ void C(A<A<T>> a);
++}
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++delegate A<T> B<out T> ();
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++delegate A<A<T>> B<out T> ();
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++delegate void B<out T> (A<T> a);
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++delegate void B<out T> (A<A<T>> a);
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be contravariantly valid on `B<T>.A'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<in T>
++{
++}
++
++interface B<out T>
++{
++ A<T> A { get; }
++}
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>.C(A<T>)'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<out T>
++{
++ void C(A<T> a);
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>.A'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<in T>
++{
++ A<T> A { get; }
++}
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be contravariantly valid on `B<T>.C(A<T>)'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<in T>
++{
++}
++
++interface B<out T>
++{
++ void C(A<T> a);
++}
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `B<T>'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<out T> : A<T>
++{
++}
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be contravariantly valid on `B<T>'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<in T>
++{
++}
++
++interface B<out T> : A<T>
++{
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `A<T>.B(out T)'\r
++// Line: 5\r
++// Compiler options: -langversion:future
++
++interface A<in T>
++{
++ void B(out T t);
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `A<T>.B(ref T)'\r
++// Line: 5\r
++// Compiler options: -langversion:future
++
++interface A<in T>
++{
++ void B(ref T t);
++}
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be contravariantly valid on `A<T>.B(T)'\r
++// Line: 7\r
++// Compiler options: -langversion:future
++
++interface A<out T>
++{
++ void B(T t);
++}
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `A<T>.B(out T)'\r
++// Line: 7\r
++// Compiler options: -langversion:future
++
++interface A<out T>
++{
++ void B(out T t);
++}
--- /dev/null
--- /dev/null
++// CS1961: The covariant type parameter `T' must be invariantly valid on `A<T>.B(ref T)'\r
++// Line: 5\r
++// Compiler options: -langversion:future
++
++interface A<out T>
++{
++ void B(ref T t);
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>.A'
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<in T>
++{
++ A<A<T>> A { get; }
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>.C()'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<in T>
++{
++ A<T> C();
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>.C()'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<in T>
++{
++ A<A<T>> C();
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>.C(A<T>)'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<in T>
++{
++ void C(A<T> a);
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>.C(A<A<T>>)'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++interface B<in T>
++{
++ void C(A<A<T>> a);
++}
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be invariantly valid on `B<T>'\r
++// Line: 9\r
++// Compiler options: -langversion:future
++
++interface A<T>
++{
++}
++
++delegate A<T> B<in T> ();
--- /dev/null
--- /dev/null
++// CS1961: The contravariant type parameter `T' must be covariantly valid on `A<T>.B()'\r
++// Line: 7\r
++// Compiler options: -langversion:future
++
++interface A<in T>
++{
++ T B();
++}
+++ /dev/null
--// CS8033: Contravariant type parameters can only be used in input positions\r
--// Line: 5\r
--// Compiler options: -langversion:future
--
--delegate T D<in T> ();
+++ /dev/null
--// CS8033: Contravariant type parameters can only be used in input positions\r
--// Line: 7\r
--// Compiler options: -langversion:future
--
--interface A<in T>
--{
-- T B();
--}
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 9\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--delegate void B<in T> (A<A<T>> a);
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<out T>
--{
--}
--
--interface B<in T>
--{
-- A<T> A { get; }
--}
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<in T>
--{
-- void C(A<T> a);
--}
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<out T>
--{
--}
--
--interface B<in T>
--{
-- void C(A<T> a);
--}
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 9\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<in T> : A<T>
--{
--}
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 9\r
--// Compiler options: -langversion:future
--
--interface A<out T>
--{
--}
--
--interface B<in T> : A<T>
--{
--}
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<in T>
--{
-- A<A<T>> A { get; }
--}
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<in T>
--{
-- A<T> C();
--}
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<in T>
--{
-- A<A<T>> C();
--}
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<in T>
--{
-- void C(A<T> a);
--}
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<in T>
--{
-- void C(A<A<T>> a);
--}
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 9\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--delegate A<T> B<in T> ();
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 9\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--delegate A<A<T>> B<in T> ();
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 9\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--delegate void B<in T> (A<T> a);
+++ /dev/null
--// CS8034: Contravariant type parameters can only be used as type arguments in contravariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<in T>
--{
-- A<T> A { get; }
--}
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 9\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--delegate void B<out T> (A<A<T>> a);
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<in T>
--{
--}
--
--interface B<out T>
--{
-- A<T> A { get; }
--}
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<out T>
--{
-- void C(A<T> a);
--}
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<in T>
--{
--}
--
--interface B<out T>
--{
-- void C(A<T> a);
--}
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 9\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<out T> : A<T>
--{
--}
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 9\r
--// Compiler options: -langversion:future
--
--interface A<in T>
--{
--}
--
--interface B<out T> : A<T>
--{
--}
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<out T>
--{
-- A<A<T>> A { get; }
--}
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<out T>
--{
-- A<T> C();
--}
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<out T>
--{
-- A<A<T>> C();
--}
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<out T>
--{
-- void C(A<T> a);
--}
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<out T>
--{
-- void C(A<A<T>> a);
--}
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 9\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--delegate A<T> B<out T> ();
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 9\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--delegate A<A<T>> B<out T> ();
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 9\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--delegate void B<out T> (A<T> a);
+++ /dev/null
--// CS8035: Covariant type parameters can only be used as type arguments in covariant positions\r
--// Line: 11\r
--// Compiler options: -langversion:future
--
--interface A<T>
--{
--}
--
--interface B<out T>
--{
-- A<T> A { get; }
--}
+++ /dev/null
--// CS8036: Generic variance can only be used with interfaces and delegates\r
--// Line: 5\r
--// Compiler options: -langversion:future
--
--class A<in T>
--{
--}
+++ /dev/null
--// CS8036: Generic variance can only be used with interfaces and delegates\r
--// Line: 5\r
--// Compiler options: -langversion:future
--
--class A<out T>
--{
--}
+++ /dev/null
--// CS8037: Contravariant type parameters cannot be used in output positions\r
--// Line: 7\r
--// Compiler options: -langversion:future
--
--interface A<in T>
--{
-- void B(ref T t);
--}
+++ /dev/null
--// CS8037: Contravariant type parameters cannot be used in output positions\r
--// Line: 7\r
--// Compiler options: -langversion:future
--
--interface A<in T>
--{
-- void B(out T t);
--}
+++ /dev/null
--// CS8038: Covariant type parameters cannot be used as method parameters\r
--// Line: 7\r
--// Compiler options: -langversion:future
--
--interface A<out T>
--{
-- void B(out T t);
--}
+++ /dev/null
--// CS8038: Covariant type parameters cannot be used as method parameters\r
--// Line: 7\r
--// Compiler options: -langversion:future
--
--interface A<out T>
--{
-- void B(ref T t);
--}
+++ /dev/null
--// CS8038: Covariant type parameters cannot be used as method parameters\r
--// Line: 7\r
--// Compiler options: -langversion:future
--
--interface A<out T>
--{
-- void B(T t);
--}