Add a test.
[mono.git] / mono / tests / verifier / make_newobj_test.sh
1 #! /bin/sh
2
3 TEST_NAME=$1
4 TEST_VALIDITY=$2
5 TEST_OP=$3
6 TEST1_TYPE=$4
7 TEST2_TYPE=$5
8
9 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
10 TEST_FILE=${TEST_NAME}_generated.il
11 echo $TEST_FILE
12 sed -e "s/VALIDITY/${TEST_VALIDITY}/g" -e "s/TYPE1/${TEST1_TYPE}/g" -e "s/TYPE2/${TEST2_TYPE}/g" -e "s/OPCODE/${TEST_OP}/g" > $TEST_FILE <<//EOF
13
14 // VALIDITY CIL which breaks the ECMA-335 rules. 
15 // this CIL should fail verification by a conforming CLI verifier.
16
17 .assembly '${TEST_NAME}_generated'
18 {
19   .hash algorithm 0x00008004
20   .ver  0:0:0:0
21 }
22
23 .assembly extern mscorlib
24 {
25   .ver 1:0:5000:0
26   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
27 }
28
29 .class ClassA extends [mscorlib]System.Object
30 {
31         .method public hidebysig  specialname  rtspecialname instance default void .ctor ()  cil managed 
32         {
33                 .maxstack 8
34                 ldarg.0 
35                 call instance void object::.ctor()
36                 ret 
37         }
38
39         .method public hidebysig  specialname  rtspecialname instance default void .ctor (TYPE2 tp)  cil managed 
40         {
41                 .maxstack 8
42                 ldarg.0 
43                 call instance void object::.ctor()
44                 ret 
45         }
46
47         .method public hidebysig  specialname  rtspecialname instance default void .ctor (TYPE2 a1, TYPE2 a2)  cil managed 
48         {
49                 .maxstack 8
50                 ldarg.0 
51                 call instance void object::.ctor()
52                 ret 
53         }
54
55         .method public instance void ctor(TYPE2 tp)
56         {
57                 .maxstack 8
58                 ret
59         }
60
61         .method public static void sctor(TYPE2 tp)
62         {
63                 .maxstack 8
64                 ret
65         }
66
67         .method public hidebysig  specialname  rtspecialname static default void .cctor ()  cil managed 
68         {
69                 .maxstack 8
70                 ret 
71         }
72
73         .method public instance void Method1()
74         {
75                 .maxstack 8
76                 ret
77         }
78
79         .method public instance void Method2(int32 arg)
80         {
81                 .maxstack 8
82                 ret
83         }
84 }
85
86 .class interface abstract InterfaceA
87 {
88 }
89
90 .class abstract AbsClass extends [mscorlib]System.Object
91 {
92         .method public hidebysig  specialname  rtspecialname instance default void .ctor ()  cil managed 
93         {
94                 .maxstack 8
95                 ldarg.0 
96                 call instance void object::.ctor()
97                 ret 
98         }
99 }
100
101 .class sealed ValueType extends [mscorlib]System.ValueType
102 {
103         .field private int32 v
104
105         .method public hidebysig specialname rtspecialname instance default void .ctor ()  cil managed 
106         {
107                 .maxstack 8
108                 ret 
109         }
110 }
111
112 .method public static void Main() cil managed
113 {
114         .entrypoint
115         .maxstack 4
116         .locals init (
117             TYPE1 V_0
118         )
119         ldloc.0
120         OPCODE //VALIDITY
121         pop
122         ret
123 }
124 //EOF