Initial set of Ward sgen annotations (#5705)
[mono.git] / mcs / tests / gtest-078.cs
index 4ef3c9b44ff9119d195522d4cdf6415557fdfe5c..46ec88e450573f3780cf354d2341a1ab335452ea 100644 (file)
@@ -1,17 +1,66 @@
 using System;
-using System.Collections;
 
-public class Test
+struct S : IDisposable
 {
-        public static void Main ()
-        {
-                foreach (object o in new Test ())
-                        Console.WriteLine (o);
-        }
-
-        public IEnumerator GetEnumerator ()
-        {
-                foreach (int i in new ArrayList ())
-                        yield return i;
-        }
+       public static int hit;
+
+       void IDisposable.Dispose ()
+       {
+               hit++;
+       }
+
+       public void Dispose ()
+       {
+               throw new ApplicationException ();
+       }
+}
+
+class C : IDisposable
+{
+
+       void IDisposable.Dispose ()
+       {
+       }
+
+       public void Dispose ()
+       {
+               throw new ApplicationException ();
+       }
+}
+
+class Test
+{
+       public static int Main ()
+       {
+               S? nullable = null;
+               using (var a = nullable) {
+               }
+
+               if (S.hit != 0)
+                       return 1;
+
+               using (var s = new S ()) {
+               }
+
+               if (S.hit != 1)
+                       return 2;
+
+               C c = null;
+               GenMethod (c);
+               
+               using (S? a = nullable, b = nullable) {
+               }
+               
+               if (S.hit != 1)
+                       return 3;
+
+               Console.WriteLine ("ok");
+               return 0;
+       }
+
+       static void GenMethod<T> (T t) where T : IDisposable
+       {
+               using (T t2 = t) {
+               }
+       }
 }