Do not remap framework assembly if it's version is higher than the runtime version
[mono.git] / mcs / tests / gtest-variance-11.cs
index 35a26094a781ac63961f5c358f2d58e17712265e..110044f0a5d8d87f4a3bfddf3da316ffcd4d10e1 100644 (file)
@@ -1,5 +1,3 @@
-// Compiler options: -langversion:future
-
 using System;
 
 interface IContravariant<in T>
@@ -24,8 +22,27 @@ class D
                return typeof (T) == typeof (object);
        }
        
+       public static bool CovContCont<T> (ICovariant<T> e1, IContravariant<T> e2, IContravariant<T> e3)
+       {
+               Console.WriteLine (typeof (T));
+               return typeof (T) == typeof (string);
+       }
+
+       public static bool ContCovContCov<T> (IContravariant<T> e1, ICovariant<T> e2, IContravariant<T> e3, ICovariant<T> e4)
+       {
+               Console.WriteLine (typeof (T));
+               return typeof (T) == typeof (string);
+       }
+       
+       public static bool CovCovCont<T> (ICovariant<T> e1, ICovariant<T> e2, IContravariant<T> e3)
+       {
+               Console.WriteLine (typeof (T));
+               return typeof (T) == typeof (string);
+       }
+       
        public static int Main ()
        {
+               
                ICovariant<object> a = null;
                ICovariant<string> b = null;
                if (!Covariant (a, b))
@@ -36,6 +53,20 @@ class D
                if (!Contra (a_1, b_1))
                        return 2;
                
+               ICovariant<string> a_2 = null;
+               IContravariant<object> b_2 = null;
+               IContravariant<string> c_2 = null;
+               if (!CovContCont (a_2, b_2, c_2))
+                       return 3;
+               
+               IContravariant<object> a_3 = null;
+               ICovariant<string> b_3 = null;
+               IContravariant<string> c_3 = null;
+               ICovariant<string> d_3 = null;
+               if (!ContCovContCov (a_3, b_3, c_3, d_3))
+                       return 4;
+               
+               Console.WriteLine ("ok");
                return 0;
        }
 }