2007-10-02 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / tests / verifier / make_field_store_test.sh
1 #! /bin/sh
2
3 TEST_NAME=$1
4 TEST_VALIDITY=$2
5 TEST_OP=$3
6 TEST_TYPE1=$4
7 TEST_TYPE2=$5
8 TEST_EMIT_CSTOR=$6
9 if [ "${TEST_EMIT_CSTOR}" == "yes" ]; then
10         TEST_CSTOR="newobj instance void ${TEST_TYPE2}::.ctor()";
11 else
12         TEST_CSTOR="ldloc.0";
13 fi
14
15 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
16 TEST_FILE=${TEST_NAME}_generated.il
17 echo $TEST_FILE
18 #TEST_TYPE1=`echo $TEST_TYPE1 | sed -s 's/&/\\\&/'`
19 #TEST_TYPE2=`echo $TEST_TYPE2 | sed -s 's/&/\\\&/'`
20 sed -e "s/VALIDITY/${TEST_VALIDITY}/g"  -e "s/CSTOR/${TEST_CSTOR}/g"  -e "s/OPCODE/${TEST_OP}/g" -e "s/TYPE1/${TEST_TYPE1}/g" -e "s/TYPE2/${TEST_TYPE2}/g" > $TEST_FILE <<//EOF
21
22 .assembly '${TEST_NAME}_generated'
23 {
24   .hash algorithm 0x00008004
25   .ver  0:0:0:0
26 }
27
28 // VALIDITY CIL which breaks the ECMA-335 rules. 
29 // this CIL should fail verification by a conforming CLI verifier.
30
31 .assembly extern mscorlib
32 {
33   .ver 1:0:5000:0
34   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
35 }
36
37 .class interface abstract InterfaceA
38 {
39 }
40
41 .class interface abstract InterfaceB
42 {
43 }
44
45 .class sealed MyValueType extends [mscorlib]System.ValueType
46 {
47         .field public int32 fld
48 }
49
50 .class ClassB extends [mscorlib]System.Object
51 {
52     .field public TYPE1 fld
53     .field public static TYPE1 sfld
54
55         .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
56         {
57                 .maxstack 8
58                 ldarg.0 
59                 call instance void object::.ctor()
60                 ret
61         }
62 }
63
64 .class ClassA extends [mscorlib]System.Object
65 {
66     .field public TYPE1 fld
67     .field public static TYPE1 sfld
68     .field public initonly TYPE1 const_field
69     .field public static initonly TYPE1 st_const_field
70
71         .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
72         {
73                 .maxstack 8
74                 ldarg.0 
75                 call instance void object::.ctor()
76                 ret
77         }
78 }
79
80 .class public SubClass extends ClassA
81 {
82     .field public TYPE1 subfld
83     .field public static TYPE1 subsfld
84
85         .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
86         {
87                 .maxstack 8
88                 ldarg.0 
89                 call instance void ClassA::.ctor()
90                 ret
91         }
92 }
93
94 .class public explicit Overlapped extends [mscorlib]System.Object
95 {
96     .field[0] public TYPE1 field1
97     //.field[0] public TYPE1 field2
98     .field[8] public TYPE1 field3
99     //.field[8] public TYPE1 field4
100     .field[16] public TYPE1 field5
101     .field[20] public TYPE1 field10
102     .field[24] public TYPE2 field_ok
103
104         .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
105         {
106                 .maxstack 8
107                 ldarg.0 
108                 call instance void object::.ctor()
109                 ret
110         }
111 }
112
113 .class public explicit SubOverlapped extends Overlapped
114 {
115     .field[16] public TYPE1 field6
116
117         .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
118         {
119                 .maxstack 8
120                 ldarg.0 
121                 call instance void Overlapped::.ctor()
122                 ret
123         }
124 }
125
126 .method public static int32 Main() cil managed
127 {
128         .entrypoint
129         .maxstack 2
130         .locals init (
131                 TYPE2 V_1
132         )
133         CSTOR
134         OPCODE // VALIDITY.
135         pop
136         ldc.i4.0
137         ret
138 }
139 //EOF