In .:
[mono.git] / mono / tests / verifier / make_stack_merge_test.sh
1 #! /bin/sh
2
3 TEST_NAME=$1
4 TEST_VALIDITY=$2
5 TEST_TYPE1=$3
6 TEST_TYPE2=$4
7
8 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
9 TEST_FILE=${TEST_NAME}_generated.cil
10 echo $TEST_FILE
11 TEST_TYPE1=`echo $TEST_TYPE1 | sed -s 's/&/\\\&/'`
12 TEST_TYPE2=`echo $TEST_TYPE2 | sed -s 's/&/\\\&/'`
13 sed -e "s/VALIDITY/${TEST_VALIDITY}/g" -e "s/TYPE1/${TEST_TYPE1}/g" -e "s/TYPE2/${TEST_TYPE2}/g" > $TEST_FILE <<//EOF
14
15 // VALIDITY CIL which breaks the ECMA-335,III,1.8.1.3 rule. 
16 // this CIL should fail verification by a conforming CLI verifier.
17
18 .class ClassA extends [mscorlib]System.Object
19 {
20 }
21
22 .class ClassB extends [mscorlib]System.Object
23 {
24 }
25
26 .class interface InterfaceA
27 {
28 }
29
30 .class interface InterfaceB
31 {
32 }
33
34 .class ValueType extends [mscorlib]System.ValueType
35 {
36 }
37
38 .class ValueTypeSubType extends ValueType
39 {
40 }
41
42 .class Class extends [mscorlib]System.Object
43 {
44 }
45
46 .method public static int32 Main() cil managed
47 {
48         .entrypoint
49         .maxstack 3
50         .locals init (
51                 TYPE1 V_0,
52                 TYPE2 V_1)
53         ldloc.0
54         ldc.i4.0
55         ldc.i4.0
56         beq.s branch_target
57         pop
58         ldloc.1
59         branch_target: // VALIDITY, stacks cannot be merged.
60         pop
61         ldc.i4.0
62         ret
63 }
64 //EOF