New test.
[mono.git] / mcs / ilasm / tests / test-seh-c.il
1 //
2 // Test catch and filter blocks
3 //
4 // Author(s):
5 //  Jackson Harper (Jackson@LatitudeGeo.com)
6 //
7 // (C) 2003 Jackson Harper, All rights reserved
8 //
9
10 .assembly extern mscorlib { }
11 .assembly 'test-seh-b' { }
12
13
14 .class public T {
15
16         .field private static int32 exc_not_thrown
17         .field private static int32 flt_caught
18   
19         .method public static specialname void .cctor ()
20         {
21                 ldc.i4.0
22                 stsfld int32 T::exc_not_thrown
23
24                 ldc.i4.0
25                 stsfld int32 T::flt_caught
26
27                 ret
28         }
29
30         .method public static int32 Main ()
31         {
32                 .entrypoint
33
34                 .try {
35                         ldc.i4.0
36                         ldc.i4.0
37                         div
38
39                         ldc.i4.1
40                         stsfld int32 T::exc_not_thrown
41
42                         leave outer
43                 } filter {
44                         pop
45                         ldc.i4.1
46                         endfilter
47                 } {
48                         ldc.i4.1
49                         stsfld int32 T::flt_caught
50                         leave outer
51                 }
52
53         outer:
54                 ldsfld int32 T::exc_not_thrown
55                 brtrue fail
56
57                 ldsfld int32 T::flt_caught
58                 brfalse fail
59
60         pass:
61                 ldstr "PASS"
62                 call void [mscorlib]System.Console::WriteLine (string)
63                 ldc.i4.0
64                 ret
65
66         fail:
67                 ldstr "FAIL"
68                 call void [mscorlib]System.Console::WriteLine (string)
69                 ldc.i4.1
70                 ret
71
72         }
73
74 }
75                 
76