Merge pull request #2912 from krytarowski/netbsd-support-10
[mono.git] / mono / tests / verifier / make_method_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 extends [mscorlib]System.Object
121 {
122         .method public hidebysig  specialname rtspecialname instance default void .ctor () cil managed 
123         {
124                 .maxstack 8
125                 ldarg.0 
126                 call instance void object::.ctor()
127                 ret 
128         }
129
130         .method public void DoStuff<CONSTRAINTS T> () cil managed
131         {
132                 .maxstack 8
133                 .locals init ()
134                 ldtoken !!T
135         call class [mscorlib]System.Type class [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
136         call void class [mscorlib]System.Console::WriteLine(object)
137
138                 EXTRA_CODE
139                 ret
140         }
141 }
142
143 .class Driver extends [mscorlib]System.Object
144 {
145         .method public static void UseIFace (IFace arg0) {
146                 .maxstack 8
147                 ret
148         }
149
150         .method public static void MemberMain() cil managed
151         {
152                 .maxstack 8
153                 .locals init ()
154                 newobj instance void class TemplateTarget::.ctor()
155                 call instance void class TemplateTarget::DoStuff<INSTANTIATION>()
156                 ret
157         }
158
159         .method public static void Main() cil managed
160         {
161                 .entrypoint
162                 .maxstack 8
163                 .locals init ()
164
165                 call void Driver::MemberMain()
166                 leave END
167
168 END:
169                 ret
170         }
171
172 }
173 //EOF