Sun Mar 12 16:18:04 CET 2006 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / tests / verifier / make_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.cil
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/TYPE1/${TEST_TYPE1}/g" -e "s/TYPE2/${TEST_TYPE2}/g" -e "s/OPCODE/${TEST_OP}/g" > $TEST_FILE <<//EOF
15
16 // VALIDITY CIL which breaks the ECMA-335 rules. 
17 // this CIL should fail verification by a conforming CLI verifier.
18
19 .class ClassA extends [mscorlib]System.Object
20 {
21 }
22
23 .class ClassB extends [mscorlib]System.Object
24 {
25 }
26
27 .class interface InterfaceA
28 {
29 }
30
31 .class interface InterfaceB
32 {
33 }
34
35 .class ValueType extends [mscorlib]System.ValueType
36 {
37 }
38
39 .class ValueTypeSubType extends ValueType
40 {
41 }
42
43 .method public static int32 f(TYPE1 arg)
44 {
45         .maxstack 2
46         .locals init (
47             TYPE1 V_0,
48             TYPE2 V_1
49         )
50         ldloc.1
51         OPCODE // VALIDITY, TYPE2& cannot be stored in TYPE1.
52         ldc.i4.0
53         ret
54 }
55
56 .method public static int32 Main() cil managed
57 {
58         .entrypoint
59         .maxstack 2
60         .locals init (
61             TYPE1 V_0
62         )
63         ldloc.0
64         call int32 f(TYPE1)
65         ret
66 }
67 //EOF