for TARGET_J2EE only:
[mono.git] / mono / tests / verifier / make_throw_test.sh
1 #! /bin/sh
2
3 TEST_NAME=$1
4 TEST_VALIDITY=$2
5 TEST_LOCAL=$3
6 TEST_OP=$4
7
8
9 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
10 TEST_FILE=${TEST_NAME}_generated.il
11 echo $TEST_FILE
12 sed -e "s/VALIDITY/${TEST_VALIDITY}/g" -e "s/LOCAL/${TEST_LOCAL}/g"  -e "s/OP/${TEST_OP}/g" > $TEST_FILE <<//EOF
13
14 // VALIDITY CIL which breaks the ECMA-335 rules. 
15 // this CIL should fail verification by a conforming CLI verifier.
16
17 .assembly '${TEST_NAME}_generated'
18 {
19   .hash algorithm 0x00008004
20   .ver  0:0:0:0
21 }
22
23 .class ClassA extends [mscorlib]System.Object
24 {
25     .method public hidebysig  specialname  rtspecialname 
26            instance default void .ctor ()  cil managed 
27     {
28         .maxstack 8
29         ldarg.0 
30         call instance void object::.ctor()
31         ret 
32     }
33 }
34
35 .class ClassSubA extends ClassA
36 {
37     .method public hidebysig  specialname  rtspecialname 
38            instance default void .ctor ()  cil managed 
39     {
40         .maxstack 8
41         ldarg.0 
42         call instance void ClassA::.ctor()
43         ret 
44     }
45 }
46
47 .class public auto ansi sealed MyStruct
48         extends [mscorlib]System.ValueType
49 {
50         .field public int32 foo
51 }
52
53 .method public static void foo() cil managed
54 {
55         .maxstack 8
56         .locals init (LOCAL l_0 )
57         ldloc.0
58         OP
59         throw // VALIDITY.
60         ret
61 }
62
63 .method public static int32 Main() cil managed
64 {
65         .maxstack 8
66         .entrypoint
67         .try {
68                 call void foo ()
69                 leave END
70         } catch [mscorlib]System.NullReferenceException {
71                 pop 
72                 leave END
73
74         }
75 END:    ldc.i4.0
76         ret
77 }
78 //EOF