2007-10-09 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / tests / verifier / make_obj_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
9 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
10 TEST_FILE=${TEST_NAME}_generated.il
11 echo $TEST_FILE
12 TEST_TYPE1=`echo $TEST_TYPE1 | sed -s 's/&/\\\&/'`
13 TEST_TYPE2=`echo $TEST_TYPE2 | sed -s 's/&/\\\&/'`
14 sed -e "s/VALIDITY/${TEST_VALIDITY}/g"  -e "s/OPCODE/${TEST_OP}/g" -e "s/TYPE1/${TEST_TYPE1}/g" -e "s/TYPE2/${TEST_TYPE2}/g" > $TEST_FILE <<//EOF
15
16 .assembly '${TEST_NAME}_generated'
17 {
18   .hash algorithm 0x00008004
19   .ver  0:0:0:0
20 }
21
22 // VALIDITY CIL which breaks the ECMA-335 rules. 
23 // this CIL should fail verification by a conforming CLI verifier.
24
25 .assembly extern mscorlib
26 {
27   .ver 1:0:5000:0
28   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
29 }
30
31 .class ClassA extends [mscorlib]System.Object
32 {
33 }
34
35 .class ClassB extends [mscorlib]System.Object
36 {
37 }
38
39 .class interface abstract InterfaceA
40 {
41 }
42
43 .class interface abstract InterfaceB
44 {
45 }
46
47 .class sealed ValueType extends [mscorlib]System.ValueType
48 {
49         .field private int32 v
50 }
51
52 .class Class extends [mscorlib]System.Object
53 {
54     .field public TYPE1 fld
55     .field public static TYPE1 sfld
56
57         .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
58         {
59                 .maxstack 8
60                 ldarg.0 
61                 call instance void object::.ctor()
62                 ret
63         }
64
65     .method public void Method(TYPE1) cil managed
66     {
67         ret
68     }
69 }
70
71 .method public static int32 Main() cil managed
72 {
73         .entrypoint
74         .maxstack 2
75         .locals init (
76                 class Class V_0,
77                 TYPE2 V_1
78         )
79         newobj instance void class Class::.ctor()
80         ldloc.1
81         OPCODE // VALIDITY, TYPE2 cannot be stored in TYPE1.
82         ldc.i4.0
83         ret
84 }
85 //EOF