diff options
Diffstat (limited to 'mcs/ilasm/tests/test-seh-b.il')
-rw-r--r-- | mcs/ilasm/tests/test-seh-b.il | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/mcs/ilasm/tests/test-seh-b.il b/mcs/ilasm/tests/test-seh-b.il new file mode 100644 index 00000000000..f667399e9bc --- /dev/null +++ b/mcs/ilasm/tests/test-seh-b.il @@ -0,0 +1,75 @@ +// +// Test catch and fault blocks +// +// Author(s): +// Jackson Harper (Jackson@LatitudeGeo.com) +// +// (C) 2003 Jackson Harper, All rights reserved +// + +.assembly extern mscorlib { } +.assembly extern System { } +.assembly 'test-seh-b' { } + + +.class public T { + + .field private static int32 exc_caught + .field private static int32 flt_caught + + .method public static specialname void .cctor () + { + ldc.i4.0 + stsfld int32 T::exc_caught + + ldc.i4.0 + stsfld int32 T::flt_caught + + ret + } + + .method public static int32 Main () + { + .entrypoint + + .try { + .try { + ldstr "#jibba!!jabba" + newobj void [System]System.Uri::.ctor (string) + leave outer + } catch [mscorlib]System.Exception { + ldc.i4.1 + stsfld int32 T::exc_caught + leave outer + } + } fault { + ldc.i4.1 + stsfld int32 T::flt_caught + endfault + } + + + outer: + ldsfld int32 T::exc_caught + brfalse fail + + ldsfld int32 T::flt_caught + brfalse fail + + pass: + ldstr "PASS" + call void [mscorlib]System.Console::WriteLine (string) + ldc.i4.0 + ret + + fail: + ldstr "FAIL" + call void [mscorlib]System.Console::WriteLine (string) + ldc.i4.1 + ret + + } + +} + + |