X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fexceptions.cs;h=98c6046e61a5cdea5dab273ee1b289d63c26a7b5;hb=9e167696e7709b66bc42e7a822046665f7d29660;hp=e06be608cf5366c5d5b5a710a7c4c45e042c9098;hpb=a362cb7ec45835cdb4673fc8eac13333c8d8545e;p=mono.git diff --git a/mono/mini/exceptions.cs b/mono/mini/exceptions.cs index e06be608cf5..98c6046e61a 100644 --- a/mono/mini/exceptions.cs +++ b/mono/mini/exceptions.cs @@ -24,14 +24,14 @@ using System.Runtime.CompilerServices; * the IL code looks. */ -#if MOBILE +#if __MOBILE__ class ExceptionTests #else class Tests #endif { -#if !MOBILE +#if !__MOBILE__ public static int Main (string[] args) { return TestDriver.RunTests (typeof (Tests), args); } @@ -2318,6 +2318,7 @@ class Tests Console.WriteLine (); } + [Category ("!BITCODE")] public static int test_0_rethrow_stacktrace () { // Check that rethrowing an exception preserves the original stack trace try { @@ -2589,7 +2590,7 @@ class Tests public static int test_0_lmf_filter () { try { // The invoke calls a runtime-invoke wrapper which has a filter clause -#if MOBILE +#if __MOBILE__ typeof (ExceptionTests).GetMethod ("lmf_filter").Invoke (null, new object [] { }); #else typeof (Tests).GetMethod ("lmf_filter").Invoke (null, new object [] { }); @@ -2795,10 +2796,59 @@ class Tests } return 1; } + + static bool finally_called = false; + + static void regress_30472 (int a, int b) { + checked { + try { + int sum = a + b; + } finally { + finally_called = true; + } + } + } + + public static int test_0_regress_30472 () { + finally_called = false; + try { + regress_30472 (Int32.MaxValue - 1, 2); + } catch (Exception ex) { + } + return finally_called ? 0 : 1; + } + + static int array_len_1 = 1; + + public static int test_0_bounds_check_negative_constant () { + try { + byte[] arr = new byte [array_len_1]; + byte b = arr [-1]; + return 1; + } catch { + } + try { + byte[] arr = new byte [array_len_1]; + arr [-1] = 1; + return 2; + } catch { + } + return 0; + } + + public static int test_0_string_bounds_check_negative_constant () { + try { + string s = "A"; + char c = s [-1]; + return 1; + } catch { + } + return 0; + } } -#if !MOBILE +#if !__MOBILE__ class ExceptionTests : Tests { } -#endif \ No newline at end of file +#endif