X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Ftests%2Fgtest-117.cs;h=e1e54267b8e7f454420a630b289282625daf0a98;hb=2b15ada1a1ad25ece63393c2ba40e5d9877b35a7;hp=71dc3b8cd3d9bdb0afa8de23b3580e065af5de89;hpb=948dbf8d4581ac17f5420cc4f7dc375e3c502576;p=mono.git diff --git a/mcs/tests/gtest-117.cs b/mcs/tests/gtest-117.cs index 71dc3b8cd3d..e1e54267b8e 100644 --- a/mcs/tests/gtest-117.cs +++ b/mcs/tests/gtest-117.cs @@ -1,5 +1,9 @@ +// Compiler options: -warnaserror + using System; +enum E { Item }; + public interface IFoo { } @@ -9,12 +13,95 @@ public class Foo { return x is IFoo; } + + public static bool Test () + { + T t = default (T); + return t is int; + } + + public static bool TestB () + { + T t = default (T); + return t is int?; + } +} + +class Y where T : struct +{ + public bool Foo () + { + object o = null; + return o is System.Nullable ; + } } class X { - static void Main () + public static bool TestA (object o) + { + return o is int?; + } + + public static bool TestB (T o) { - Foo.Test (3); + return o is int[]; + } + + public static int TestC () + { + int? i = null; + if (i is int) { + return (int) i; + } + + return 3; + } + + static bool Check1 (E? e) + { + return e is Enum; + } + + static bool Check2 (E e) where T : struct + { + return e is T; + } + + public static int Main () + { + if (Foo.Test (3)) + return 1; + + if (!Foo.Test()) + return 2; + + // False expected int? != null + if (Foo.TestB()) + return 3; + + int? i = 0; + if (!TestA(i)) + return 4; + + int[] a = new int[0]; + if (!TestB(a)) + return 5; + + if (TestC () != 3) + return 6; + + if (Check1 (null)) + return 7; + + if (!Check1 (E.Item)) + return 8; + + if (Check2 (E.Item)) + return 9; + + Console.WriteLine ("OK"); + return 0; } } +