1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
5 .assembly extern mscorlib { }
7 .assembly twopassvariance { }
11 .class Derived extends Base { }
13 .class SuperDerived extends Derived { }
15 .class MegaSuperDerived extends SuperDerived { }
17 .class interface IFoo<-T>
19 .method public newslot virtual instance class [mscorlib]System.Type Gimme()
21 ldtoken class IFoo<!0>
22 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
27 .class interface IBar<T> implements class IFoo<!T>
29 .method public virtual final instance class [mscorlib]System.Type Gimme()
31 .override method instance class [mscorlib]System.Type class IFoo<!T>::Gimme()
32 ldtoken class IBar<!0>
33 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
38 .class interface IBaz<T> implements class IFoo<!T>
40 .method public virtual final instance class [mscorlib]System.Type Gimme()
42 .override method instance class [mscorlib]System.Type class IFoo<!T>::Gimme()
43 ldtoken class IBar<!0>
44 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
49 .class interface IQux implements class IFoo<class Base>, class IFoo<class Derived>
51 .method public virtual final instance class [mscorlib]System.Type Gimme()
53 .override method instance class [mscorlib]System.Type class IFoo<class Base>::Gimme()
55 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
61 implements class IFoo<class Base>, class IFoo<class Derived>
63 .method public specialname rtspecialname instance void .ctor()
66 call instance void [mscorlib]System.Object::.ctor()
72 implements class IFoo<class Derived>, class IFoo<class Base>
74 .method public specialname rtspecialname instance void .ctor()
77 call instance void [mscorlib]System.Object::.ctor()
83 implements class IBaz<class Base>, class IBar<class Derived>, class IFoo<object>
85 .method public specialname rtspecialname instance void .ctor()
88 call instance void [mscorlib]System.Object::.ctor()
94 implements IQux, class IBar<class Derived>
96 .method public specialname rtspecialname instance void .ctor()
99 call instance void [mscorlib]System.Object::.ctor()
105 implements class IBar<class Derived>, IQux
107 .method public specialname rtspecialname instance void .ctor()
110 call instance void [mscorlib]System.Object::.ctor()
116 implements class IFoo<class Base>, class IBar<class Base>
118 .method public specialname rtspecialname instance void .ctor()
121 call instance void [mscorlib]System.Object::.ctor()
127 implements class IBar<class Base>, class IFoo<class Base>
129 .method public specialname rtspecialname instance void .ctor()
132 call instance void [mscorlib]System.Object::.ctor()
138 implements class IFoo<class Base>, class IFoo<class Derived>
140 .method public specialname rtspecialname instance void .ctor()
143 call instance void [mscorlib]System.Object::.ctor()
149 implements class IFoo<class Derived>, class IFoo<class Base>
151 .method public specialname rtspecialname instance void .ctor()
154 call instance void [mscorlib]System.Object::.ctor()
159 .method static int32 main()
163 newobj instance void Fooer1::.ctor()
164 castclass class IFoo<class SuperDerived>
165 callvirt instance class [mscorlib]System.Type class IFoo<class SuperDerived>::Gimme()
167 callvirt instance string [mscorlib]System.Object::ToString()
168 call void [mscorlib]System.Console::WriteLine(string)
169 ldtoken class IFoo<class Base>
170 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
172 brtrue Fooer1_IFoo_SuperDerivedOK
176 Fooer1_IFoo_SuperDerivedOK:
177 ldstr "Fooer1_IFoo_SuperDerivedOK"
178 call void [mscorlib]System.Console::WriteLine(string)
179 newobj instance void Fooer2::.ctor()
180 castclass class IFoo<class SuperDerived>
181 callvirt instance class [mscorlib]System.Type class IFoo<class SuperDerived>::Gimme()
183 callvirt instance string [mscorlib]System.Object::ToString()
184 call void [mscorlib]System.Console::WriteLine(string)
185 ldtoken class IFoo<class Derived>
186 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
188 brtrue Fooer2_IFoo_SuperDerivedOK
192 Fooer2_IFoo_SuperDerivedOK:
193 ldstr "Fooer2_IFoo_SuperDerivedOK"
194 call void [mscorlib]System.Console::WriteLine(string)
195 newobj instance void Fooer3::.ctor()
196 castclass class IFoo<class Base>
197 callvirt instance class [mscorlib]System.Type class IFoo<class Base>::Gimme()
199 callvirt instance string [mscorlib]System.Object::ToString()
200 call void [mscorlib]System.Console::WriteLine(string)
201 ldtoken class IBar<class Base>
202 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
204 brtrue Fooer3_IFoo_BaseOK
209 ldstr "Fooer3_IFoo_BaseOK"
210 call void [mscorlib]System.Console::WriteLine(string)
212 newobj instance void Fooer3::.ctor()
213 castclass class IFoo<class Derived>
214 callvirt instance class [mscorlib]System.Type class IFoo<class Derived>::Gimme()
216 callvirt instance string [mscorlib]System.Object::ToString()
217 call void [mscorlib]System.Console::WriteLine(string)
218 ldtoken class IBar<class Derived>
219 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
221 brtrue Fooer3_IFoo_DerivedOK
225 Fooer3_IFoo_DerivedOK:
226 ldstr "Fooer3_IFoo_DerivedOK"
227 call void [mscorlib]System.Console::WriteLine(string)
228 newobj instance void Fooer3::.ctor()
229 castclass class IFoo<class SuperDerived>
230 callvirt instance class [mscorlib]System.Type class IFoo<class SuperDerived>::Gimme()
232 callvirt instance string [mscorlib]System.Object::ToString()
233 call void [mscorlib]System.Console::WriteLine(string)
234 ldtoken class IBar<class Base>
235 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
237 brtrue Fooer3_IFoo_SuperDerivedOK
241 Fooer3_IFoo_SuperDerivedOK:
242 ldstr "Fooer3_IFoo_SuperDerivedOK"
243 call void [mscorlib]System.Console::WriteLine(string)
244 newobj instance void Fooer4::.ctor()
245 castclass class IFoo<class Base>
246 callvirt instance class [mscorlib]System.Type class IFoo<class Base>::Gimme()
248 callvirt instance string [mscorlib]System.Object::ToString()
249 call void [mscorlib]System.Console::WriteLine(string)
251 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
253 brtrue Fooer4_IFoo_BaseOK
258 ldstr "Fooer4_IFoo_BaseOK"
259 call void [mscorlib]System.Console::WriteLine(string)
260 newobj instance void Fooer4::.ctor()
261 castclass class IFoo<class Derived>
262 callvirt instance class [mscorlib]System.Type class IFoo<class Derived>::Gimme()
264 callvirt instance string [mscorlib]System.Object::ToString()
265 call void [mscorlib]System.Console::WriteLine(string)
266 ldtoken class IBar<class Derived>
267 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
269 brtrue Fooer4_IFoo_DerivedOK
273 Fooer4_IFoo_DerivedOK:
274 ldstr "Fooer4_IFoo_DerivedOK"
275 call void [mscorlib]System.Console::WriteLine(string)
277 newobj instance void Fooer4::.ctor()
278 castclass class IFoo<class SuperDerived>
279 callvirt instance class [mscorlib]System.Type class IFoo<class SuperDerived>::Gimme()
281 callvirt instance string [mscorlib]System.Object::ToString()
282 call void [mscorlib]System.Console::WriteLine(string)
284 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
286 brtrue Fooer4_IFoo_SuperDerivedOK
290 Fooer4_IFoo_SuperDerivedOK:
291 ldstr "Fooer4_IFoo_SuperDerivedOK"
292 call void [mscorlib]System.Console::WriteLine(string)
293 newobj instance void Fooer5::.ctor()
294 castclass class IFoo<class SuperDerived>
295 callvirt instance class [mscorlib]System.Type class IFoo<class SuperDerived>::Gimme()
297 callvirt instance string [mscorlib]System.Object::ToString()
298 call void [mscorlib]System.Console::WriteLine(string)
299 ldtoken class IBar<class Derived>
300 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
302 brtrue Fooer5_IFoo_SuperDerivedOK
306 Fooer5_IFoo_SuperDerivedOK:
307 ldstr "Fooer5_IFoo_SuperDerivedOK"
308 call void [mscorlib]System.Console::WriteLine(string)
309 newobj instance void Fooer6::.ctor()
310 castclass class IFoo<class Base>
311 callvirt instance class [mscorlib]System.Type class IFoo<class Base>::Gimme()
313 callvirt instance string [mscorlib]System.Object::ToString()
314 call void [mscorlib]System.Console::WriteLine(string)
315 ldtoken class IBar<class Base>
316 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
318 brtrue Fooer6_IFoo_BaseOK
323 ldstr "Fooer6_IFoo_BaseOK"
324 call void [mscorlib]System.Console::WriteLine(string)
325 newobj instance void Fooer6::.ctor()
326 castclass class IFoo<class Derived>
327 callvirt instance class [mscorlib]System.Type class IFoo<class Derived>::Gimme()
329 callvirt instance string [mscorlib]System.Object::ToString()
330 call void [mscorlib]System.Console::WriteLine(string)
331 ldtoken class IBar<class Base>
332 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
334 brtrue Fooer6_IFoo_DerivedOK
338 Fooer6_IFoo_DerivedOK:
339 ldstr "Fooer6_IFoo_DerivedOK"
340 call void [mscorlib]System.Console::WriteLine(string)
341 newobj instance void Fooer7::.ctor()
342 castclass class IFoo<class Base>
343 callvirt instance class [mscorlib]System.Type class IFoo<class Base>::Gimme()
345 callvirt instance string [mscorlib]System.Object::ToString()
346 call void [mscorlib]System.Console::WriteLine(string)
347 ldtoken class IBar<class Base>
348 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
350 brtrue Fooer7_IFoo_BaseOK
355 ldstr "Fooer7_IFoo_BaseOK"
356 call void [mscorlib]System.Console::WriteLine(string)
357 newobj instance void Fooer7::.ctor()
358 castclass class IFoo<class Derived>
359 callvirt instance class [mscorlib]System.Type class IFoo<class Derived>::Gimme()
361 callvirt instance string [mscorlib]System.Object::ToString()
362 call void [mscorlib]System.Console::WriteLine(string)
363 ldtoken class IBar<class Base>
364 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
366 brtrue Fooer7_IFoo_DerivedOK
370 Fooer7_IFoo_DerivedOK:
371 ldstr "Fooer7_IFoo_DerivedOK"
372 call void [mscorlib]System.Console::WriteLine(string)
373 newobj instance void class Fooer8<class Base>::.ctor()
374 castclass class IFoo<class SuperDerived>
375 callvirt instance class [mscorlib]System.Type class IFoo<class SuperDerived>::Gimme()
377 callvirt instance string [mscorlib]System.Object::ToString()
378 call void [mscorlib]System.Console::WriteLine(string)
379 ldtoken class IFoo<class Base>
380 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
382 brtrue Fooer8_IFoo_SuperDerivedOK
386 Fooer8_IFoo_SuperDerivedOK:
387 ldstr "Fooer8_IFoo_SuperDerivedOK"
388 call void [mscorlib]System.Console::WriteLine(string)
389 newobj instance void class Fooer9<class Base>::.ctor()
390 castclass class IFoo<class SuperDerived>
391 callvirt instance class [mscorlib]System.Type class IFoo<class SuperDerived>::Gimme()
393 callvirt instance string [mscorlib]System.Object::ToString()
394 call void [mscorlib]System.Console::WriteLine(string)
395 ldtoken class IFoo<class Derived>
396 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
398 brtrue Fooer9_IFoo_SuperDerivedOK
402 Fooer9_IFoo_SuperDerivedOK:
403 ldstr "Fooer9_IFoo_SuperDerivedOK"
404 call void [mscorlib]System.Console::WriteLine(string)