Merge pull request #617 from knocte/httpwebrequest_playground
[mono.git] / mono / tests / verifier / make_type_constraint_test.sh
1 #! /bin/sh
2
3 SED="sed"
4 if [ `which gsed 2> /dev/null` ] ; then 
5         SED="gsed"
6 fi
7
8 TEST_NAME=$1
9 TEST_VALIDITY=$2
10 TEST_INSTANTIATION=$3
11 TEST_CONSTRAINTS=$4
12 TEST_EXTRA_CODE=$5
13
14 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
15 TEST_FILE=${TEST_NAME}_generated.il
16 echo $TEST_FILE
17
18 $SED -e "s/VALIDITY/${TEST_VALIDITY}/g" -e "s/INSTANTIATION/${TEST_INSTANTIATION}/g" -e "s/CONSTRAINTS/${TEST_CONSTRAINTS}/g" -e "s/EXTRA_CODE/${TEST_EXTRA_CODE}/g" > $TEST_FILE <<//EOF
19
20 // VALIDITY CIL which breaks the ECMA-335 rules. 
21 // this CIL should fail verification by a conforming CLI verifier.
22
23 .assembly '${TEST_NAME}_generated'
24 {
25   .hash algorithm 0x00008004
26   .ver  0:0:0:0
27 }
28
29 .assembly extern mscorlib
30 {
31   .ver 1:0:5000:0
32   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
33 }
34
35 .class interface public auto ansi abstract IFace
36 {
37         .method public virtual hidebysig newslot abstract instance default void Tst ()  cil managed 
38         {
39         }
40 }
41
42 .class public auto ansi beforefieldinit IFaceImpl extends [mscorlib]System.Object implements IFace
43 {
44         .method public hidebysig specialname rtspecialname instance default void '.ctor' () cil managed 
45         {
46                 .maxstack 8
47                 ldarg.0 
48                 call instance void object::'.ctor'()
49                 ret 
50         }
51
52         .method public final virtual hidebysig newslot instance default void Tst () cil managed 
53         {
54                 .maxstack 8
55                 ret 
56         }
57 }
58
59
60
61 .class ClassNoDefaultCtor extends [mscorlib]System.Object
62 {
63         .method public hidebysig  specialname rtspecialname instance default void .ctor (int32 d) cil managed 
64         {
65                 .maxstack 8
66                 ldarg.0 
67                 call instance void object::.ctor()
68                 ret 
69         }
70 }
71
72 .class abstract AbstractClass extends [mscorlib]System.Object
73 {
74         .method public hidebysig  specialname rtspecialname instance default void .ctor () cil managed 
75         {
76                 .maxstack 8
77                 ldarg.0 
78                 call instance void object::.ctor()
79                 ret 
80         }
81 }
82
83 .class ClassWithDefaultCtorNotVisible extends [mscorlib]System.Object
84 {
85         .method private hidebysig  specialname rtspecialname instance default void .ctor () cil managed 
86         {
87                 .maxstack 8
88                 ldarg.0 
89                 call instance void object::.ctor()
90                 ret 
91         }
92 }
93
94 .class ClassWithDefaultCtor extends [mscorlib]System.Object
95 {
96         .method public hidebysig  specialname rtspecialname instance default void .ctor () cil managed 
97         {
98                 .maxstack 8
99                 ldarg.0 
100                 call instance void object::.ctor()
101                 ret 
102         }
103 }
104
105
106 .class sealed MyValueType extends [mscorlib]System.ValueType
107 {
108         .field public int32 v
109 }
110
111 .class public auto ansi sealed MyEnum
112         extends [mscorlib]System.Enum
113 {
114     .field  public specialname  rtspecialname  int32 value__
115     .field public static  literal  valuetype MyEnum B = int32(0x00000000)
116     .field public static  literal  valuetype MyEnum C = int32(0x00000001)
117 }
118
119
120 .class TemplateTarget<CONSTRAINTS T> extends [mscorlib]System.Object
121 {
122         .field !T t
123
124         .method public hidebysig  specialname rtspecialname instance default void .ctor () cil managed 
125         {
126                 .maxstack 8
127                 ldarg.0 
128                 call instance void object::.ctor()
129                 ret 
130         }
131
132         .method public void DoStuff() cil managed
133         {
134                 .maxstack 8
135                 .locals init ()
136                 ldtoken !T
137         call class [mscorlib]System.Type class [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
138         call void class [mscorlib]System.Console::WriteLine(object)
139
140                 EXTRA_CODE
141                 ret
142         }
143 }
144
145 .class Driver extends [mscorlib]System.Object
146 {
147         .method public static void UseIFace (IFace arg0) {
148                 .maxstack 8
149                 ret
150         }
151
152         .method public static void MemberMain() cil managed
153         {
154                 .maxstack 8
155                 .locals init ()
156                 newobj instance void class TemplateTarget<INSTANTIATION>::.ctor()
157                 call instance void class TemplateTarget<INSTANTIATION>::DoStuff()
158                 ret
159         }
160
161         .method public static void Main() cil managed
162         {
163                 .entrypoint
164                 .maxstack 8
165                 .locals init ()
166
167                 call void Driver::MemberMain()
168                 leave END
169
170 END:
171                 ret
172         }
173
174 }
175 //EOF