2009-07-20 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / tests / verifier / make_ret_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.il
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 rules. 
16 // this CIL should fail verification by a conforming CLI verifier.
17
18 .assembly '${TEST_NAME}_generated'
19 {
20   .hash algorithm 0x00008004
21   .ver  0:0:0:0
22 }
23
24 .class ClassA extends [mscorlib]System.Object
25 {
26 }
27
28 .class ClassB extends [mscorlib]System.Object
29 {
30 }
31
32 .class ClassSubA extends ClassA
33 {
34 }
35
36 .class interface abstract InterfaceA
37 {
38 }
39
40 .class interface abstract InterfaceB
41 {
42 }
43
44 .class ImplA extends [mscorlib]System.Object implements InterfaceA
45 {
46 }
47
48
49 .class sealed MyValueType extends [mscorlib]System.ValueType
50 {
51         .field private int32 v
52 }
53
54 .class sealed MyValueType2 extends [mscorlib]System.ValueType
55 {
56         .field private int64 v
57 }
58
59 .class public Template
60         extends [mscorlib]System.Object
61 {
62     .field  public object foo
63 }
64
65 .class public Template\`1<T>
66         extends [mscorlib]System.Object
67 {
68 }
69
70 .class public Template\`2<T, U>
71         extends [mscorlib]System.Object
72 {
73 }
74
75
76 .class interface Bivariant\`2<+T,-U>
77         extends [mscorlib]System.Object
78 {
79 }
80
81 .class public BaseBase\`2<H,G>
82         extends [mscorlib]System.Object
83 {
84 }
85
86 .class public Base\`1<B>
87         extends class BaseBase\`2<int32, !0>
88 {
89 }
90
91 .class public SubClass1\`1<T>
92         extends class Base\`1<!0>
93 {
94 }
95
96 .class public SubClass2\`1<J>
97         extends class Base\`1<!0>
98 {
99 }
100
101 .class interface public Interface\`1<I>
102 {
103 }
104
105
106 .class public  InterfaceImpl\`1<M>
107         implements class Interface\`1<!0>
108 {
109 }
110
111
112 .class interface public ICovariant\`1<+T>
113 {
114 }
115
116 .class interface public IContravariant\`1<-T>
117 {
118 }
119
120 .class public CovariantImpl\`1<K>
121         implements class ICovariant\`1<!0>
122 {
123 }
124
125 .class public ContravariantImpl\`1<H>
126         implements class IContravariant\`1<!0>
127 {
128 }
129
130
131 .method public static TYPE1 Foo(TYPE2 V_0) cil managed
132 {
133         .maxstack 2
134         ldarg.0
135         ret // VALIDITY.
136 }
137
138 .method public static int32 Foo() cil managed
139 {
140         .entrypoint
141         .maxstack 2
142         .locals init (
143                 TYPE2 V)
144         ldloc.0
145         call TYPE1 Foo(TYPE2)
146         pop
147         ldc.i4.0
148         ret // VALIDITY.
149 }
150 //EOF