Merge pull request #4816 from BrzVlad/fix-remoting-exception
[mono.git] / mcs / tests / test-async-17.cs
index f0dccf548b22e5268f9bf1aa8413d0d3185bc163..9f9720bc2bc17e5715fc3be970ce3af4fb4e141e 100644 (file)
@@ -1,5 +1,3 @@
-// Compiler options: -langversion:future
-
 using System;
 using System.Threading.Tasks;
 using System.Threading;
@@ -10,25 +8,25 @@ class Tester
 {
        async Task<int> TestException_1 ()
        {
-               await Task.Factory.StartNew (() => { throw new ApplicationException (); });
+               await Task.Factory.StartNew (() => { throw new ApplicationException (); }).ConfigureAwait (false);
                return 1;
        }
 
        async Task TestException_2 ()
        {
-               await Task.Factory.StartNew (() => { throw new ApplicationException (); });
+               await Task.Factory.StartNew (() => { throw new ApplicationException (); }).ConfigureAwait (false);
        }
 
        async Task TestException_3 ()
        {
-               Func<Task> a = async () => await Task.Factory.StartNew (() => { throw new ApplicationException (); });
-               await a ();
+               Func<Task> a = async () => await Task.Factory.StartNew (() => { throw new ApplicationException (); }).ConfigureAwait (false);
+               await a ().ConfigureAwait (false);
        }
        
        async Task<int> TestException_4 ()
        {
                try {
-                       await Task.Factory.StartNew (() => 5);
+                       await Task.Factory.StartNew (() => 5).ConfigureAwait (false);
                } finally {
                        throw new ApplicationException ();
                }
@@ -38,7 +36,7 @@ class Tester
        {
                int state = 0;
                try {
-                       await Task.Factory.StartNew (() => { throw new ArgumentException (); });
+                       await Task.Factory.StartNew (() => { throw new ArgumentException (); }).ConfigureAwait (false);
                        state = 1;
                } catch (ArgumentException) {
                        state = 2;
@@ -53,13 +51,25 @@ class Tester
        async Task<int> TestException_6 ()
        {
                try {
-                       await Task.Factory.StartNew (() => { throw new ArgumentException (); });
+                       await Task.Factory.StartNew (() => { throw new ArgumentException (); }).ConfigureAwait (false);
                } catch (ArgumentException) {
                        throw new ApplicationException ();      
                }
                
                return 1;
        }
+
+       async Task<int> TestException_7 ()
+       {
+               try {
+                       await Task.Factory.StartNew (() => { throw new ArgumentException (); }).ConfigureAwait (false);
+               } catch (ArgumentException e) {
+                       if (e.StackTrace.Contains (".MoveNext"))
+                               throw new ApplicationException ();      
+               }
+               
+               return 1;
+       }
        
        static bool RunTest (MethodInfo test)
        {