for TARGET_J2EE only:
[mono.git] / mono / tests / verifier / make_endfinally_test.sh
1 #! /bin/sh
2
3 TEST_NAME=$1
4 TEST_VALIDITY=$2
5 TEST_BLOCK=$3
6 TEST_POS=$4
7 TEST_EXTRA_OPS=$5
8 # Only 1 TEST_OP variable should be set.
9
10
11 declare OPCODE_${TEST_POS}="endfinally"
12
13
14 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
15 TEST_FILE=${TEST_NAME}_generated.il
16 echo $TEST_FILE
17 sed -e "s/VALIDITY/${TEST_VALIDITY}/g" -e "s/LOCAL/${TEST_LOCAL}/g"  -e "s/BLOCK/${TEST_BLOCK}/g" -e "s/EXTRA_OPS/${TEST_EXTRA_OPS}/g"  > $TEST_FILE <<//EOF
18 // VALIDITY
19
20 .assembly '${TEST_NAME}_generated'
21 {
22   .hash algorithm 0x00008004
23   .ver  0:0:0:0
24 }
25
26 .method public static int32 Main() cil managed
27 {
28         .entrypoint
29         .maxstack 2
30         ${OPCODE_1}
31         .try
32         {
33                 nop
34                 ${OPCODE_2}
35                 leave END
36         }
37         catch [mscorlib]System.NullReferenceException 
38         {
39                 pop
40                 ${OPCODE_3}
41                 leave END
42         }
43
44         .try
45         {
46                 nop
47                 ${OPCODE_4}
48                 leave END
49         }
50
51         BLOCK
52         {
53                 nop
54                 EXTRA_OPS
55                 ${OPCODE_8}
56                 endfinally
57         }
58
59         .try {
60                 .try
61                 {
62                         nop
63                         leave END
64                 }
65                 catch [mscorlib]System.NullReferenceException 
66                 {
67                         pop
68                         ${OPCODE_5}
69                         leave END
70                 }
71         }
72         BLOCK
73         {
74                 nop
75                 ${OPCODE_9}
76                 endfinally
77         }
78
79         .try 
80         {
81                 nop
82                 leave END
83         }
84         filter
85         {
86                 pop
87                 ${OPCODE_6}
88                 ldc.i4.0
89                 endfilter
90         }
91         {
92                 nop
93                 ${OPCODE_7}
94                 leave END
95         }
96
97 END:
98         ldc.i4.0
99         ret
100 }
101 //EOF