Merge pull request #900 from Blewzman/FixAggregateExceptionGetBaseException
[mono.git] / mcs / class / Mono.Debugger.Soft / Test / dtest-app.cs
index d525b684bf159174732db8ee23edcee288e7b6bd..e72069f0cab17d186e6e5fa9f8fe655e2a7d26ae 100644 (file)
@@ -359,6 +359,9 @@ public class Tests : TestsBase, ITest2
                ss7 ();
                ss_nested ();
                ss_regress_654694 ();
+               ss_step_through ();
+               ss_recursive (1);
+               ss_fp_clobber ();
        }
 
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
@@ -452,6 +455,52 @@ public class Tests : TestsBase, ITest2
        public static void ss_nested_3 () {
        }
 
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void ss_step_through () {
+               step_through_1 ();
+               StepThroughClass.step_through_2 ();
+               step_through_3 ();
+       }
+
+       [DebuggerStepThrough]
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void step_through_1 () {
+       }
+
+       [DebuggerStepThrough]
+       class StepThroughClass {
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public static void step_through_2 () {
+               }
+       }
+
+       [DebuggerStepThrough]
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void step_through_3 () {
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void ss_recursive (int n) {
+               if (n == 10)
+                       return;
+               ss_recursive (n + 1);
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void ss_fp_clobber () {
+               double v = ss_fp_clobber_1 (5.0);
+               ss_fp_clobber_2 (v);
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static double ss_fp_clobber_1 (double d) {
+               return d + 2.0;
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void ss_fp_clobber_2 (double d) {
+       }
+
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        public static bool is_even (int i) {
                return i % 2 == 0;
@@ -564,8 +613,9 @@ public class Tests : TestsBase, ITest2
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        public static void locals () {
                string s = null;
+               var astruct = new AStruct () { i = 42 };
                locals1 (null);
-               locals2<string> (null, 5, "ABC", ref s);
+               locals2<string> (null, 5, "ABC", ref s, ref astruct);
                locals3 ();
                locals6 ();
                locals7<int> (22);
@@ -591,7 +641,7 @@ public class Tests : TestsBase, ITest2
 #if NET_4_5
        [StateMachine (typeof (int))]
 #endif
-       public static void locals2<T> (string[] args, int arg, T t, ref string rs) {
+       public static void locals2<T> (string[] args, int arg, T t, ref string rs, ref AStruct astruct) {
                long i = 42;
                string s = "AB";
 
@@ -600,6 +650,7 @@ public class Tests : TestsBase, ITest2
                                i ++;
                        if (t != null)
                                i ++;
+                       astruct = new AStruct ();
                }
                rs = "A";
        }
@@ -869,6 +920,15 @@ public class Tests : TestsBase, ITest2
                        throw new OverflowException ();
                } catch (Exception) {
                }
+               // no subclasses
+               try {
+                       throw new OverflowException ();
+               } catch (Exception) {
+               }
+               try {
+                       throw new Exception ();
+               } catch (Exception) {
+               }
 
                object o = null;
                try {