[tests] Test loading references from LoadFrom and LoadFile contexts
[mono-project.git] / mono / tests / dim-constrainedcall.il
blob0408c75f26c22b9f7f59e48572927fd98a0f660b
2 //  Microsoft (R) .NET Framework IL Disassembler.  Version 4.6.1055.0
3 //  Copyright (c) Microsoft Corporation.  All rights reserved.
7 // Metadata version: v4.0.30319
8 .assembly extern mscorlib
10   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
11   .ver 4:0:0:0
13 .assembly constrainedcall
15   .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
16   .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
17                                                                                                              63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
19   // --- The following custom attribute is added automatically, do not uncomment -------
20   //  .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 07 01 00 00 00 00 ) 
22   .hash algorithm 0x00008004
23   .ver 0:0:0:0
25 .module constrainedcall.exe
26 // MVID: {6171EA0F-1009-482D-8EF6-C944886D5D66}
27 .imagebase 0x00400000
28 .file alignment 0x00000200
29 .stackreserve 0x00100000
30 .subsystem 0x0003       // WINDOWS_CUI
31 .corflags 0x00000001    //  ILONLY
32 // Image base: 0x01860000
35 // =============== CLASS MEMBERS DECLARATION ===================
37 .class interface private abstract auto ansi IFoo
39   .method public hidebysig newslot virtual 
40           instance int32  Foo(int32 c) cil managed
41   {
42     // Code size       20 (0x14)
43     .maxstack  2
44     .locals init (class IAdd V_0,
45              int32 V_1)
46     IL_0000:  nop
47     IL_0001:  ldarg.0
48     IL_0002:  castclass  IAdd
49     IL_0007:  stloc.0
50     IL_0008:  ldloc.0
51     IL_0009:  ldarg.1
52     IL_000a:  callvirt   instance int32 IAdd::Add(int32)
53     IL_000f:  stloc.1
54     IL_0010:  br.s       IL_0012
56     IL_0012:  ldloc.1
57     IL_0013:  ret
58   } // end of method IFoo::Foo
60 } // end of class IFoo
62 .class interface private abstract auto ansi IAdd
64   .method public hidebysig newslot abstract virtual 
65           instance int32  Add(int32 c) cil managed
66   {
67   } // end of method IAdd::Add
69 } // end of class IAdd
71 .class private sequential ansi sealed beforefieldinit FooValue
72        extends [mscorlib]System.ValueType
73        implements IFoo,
74                   IAdd
76   .field public int32 val
78   .method public hidebysig newslot virtual final 
79           instance int32  Add(int32 c) cil managed
80   {
81     // Code size       26 (0x1a)
82     .maxstack  3
83     .locals init (int32 V_0)
84     IL_0000:  nop
85     IL_0001:  ldarg.0
86     IL_0002:  ldarg.0
87     IL_0003:  ldfld      int32 FooValue::val
88     IL_0008:  ldarg.1
89     IL_0009:  add
90     IL_000a:  stfld      int32 FooValue::val
91     IL_000f:  ldarg.0
92     IL_0010:  ldfld      int32 FooValue::val
93     IL_0015:  stloc.0
94     IL_0016:  br.s       IL_0018
96     IL_0018:  ldloc.0
97     IL_0019:  ret
98   } // end of method FooValue::Add
100 } // end of class FooValue
102 .class interface private abstract auto ansi IHorrible`1<T>
104   .method public hidebysig newslot abstract virtual 
105           instance int32  GetLocalVal() cil managed
106   {
107   } // end of method IHorrible`1::GetLocalVal
109   .method public hidebysig newslot abstract virtual 
110           instance void  SetLocalVal(int32 val) cil managed
111   {
112   } // end of method IHorrible`1::SetLocalVal
114   .method public hidebysig newslot virtual 
115           instance int32  Horrible() cil managed
116   {
117     // Code size       26 (0x1a)
118     .maxstack  2
119     .locals init (int32 V_0,
120              int32 V_1)
121     IL_0000:  nop
122     IL_0001:  ldarg.0
123     IL_0002:  callvirt       instance int32 class IHorrible`1<!T>::GetLocalVal()
124     IL_0007:  stloc.0
125     IL_0008:  ldloc.0
126     IL_0009:  ldc.i4.1
127     IL_000a:  add
128     IL_000b:  stloc.0
129     IL_000c:  ldarg.0
130     IL_000d:  ldloc.0
131     IL_000e:  callvirt       instance void class IHorrible`1<!T>::SetLocalVal(int32)
132     IL_0013:  nop
133     IL_0014:  ldloc.0
134     IL_0015:  stloc.1
135     IL_0016:  br.s       IL_0018
137     IL_0018:  ldloc.1
138     IL_0019:  ret
139   } // end of method IHorrible`1::Horrible
141 } // end of class IHorrible`1
143 .class private sequential ansi sealed beforefieldinit HorribleCase`1<Z>
144        extends [mscorlib]System.ValueType
145        implements class IHorrible`1<class [mscorlib]System.Collections.Generic.IList`1<!Z>>,
146                   class IHorrible`1<class [mscorlib]System.Collections.Generic.IEnumerable`1<!Z>>
148   .field private int32 localVal
149   .method public hidebysig newslot virtual final 
150           instance int32  GetLocalVal() cil managed
151   {
152     // Code size       12 (0xc)
153     .maxstack  1
154     .locals init (int32 V_0)
155     IL_0000:  nop
156     IL_0001:  ldarg.0
157     IL_0002:  ldfld      int32 valuetype HorribleCase`1<!Z>::localVal
158     IL_0007:  stloc.0
159     IL_0008:  br.s       IL_000a
161     IL_000a:  ldloc.0
162     IL_000b:  ret
163   } // end of method HorribleCase`1::GetLocalVal
165   .method public hidebysig newslot virtual final 
166           instance void  SetLocalVal(int32 val) cil managed
167   {
168     // Code size       9 (0x9)
169     .maxstack  8
170     IL_0000:  nop
171     IL_0001:  ldarg.0
172     IL_0002:  ldarg.1
173     IL_0003:  stfld      int32 valuetype HorribleCase`1<!Z>::localVal
174     IL_0008:  ret
175   } // end of method HorribleCase`1::SetLocalVal
177   .method private hidebysig newslot virtual final 
178           instance int32  'IHorrible<System.Collections.Generic.IList<Z>>.Horrible'() cil managed
179   {
180     .override  method instance int32 class IHorrible`1<class [mscorlib]System.Collections.Generic.IList`1<!Z>>::Horrible()
181     // Code size       23 (0x17)
182     .maxstack  3
183     .locals init (int32 V_0,
184              int32 V_1)
185     IL_0000:  nop
186     IL_0001:  ldarg.0
187     IL_0002:  ldarg.0
188     IL_0003:  ldfld      int32 valuetype HorribleCase`1<!Z>::localVal
189     IL_0008:  ldc.i4.1
190     IL_0009:  add
191     IL_000a:  stloc.0
192     IL_000b:  ldloc.0
193     IL_000c:  stfld      int32 valuetype HorribleCase`1<!Z>::localVal
194     IL_0011:  ldloc.0
195     IL_0012:  stloc.1
196     IL_0013:  br.s       IL_0015
198     IL_0015:  ldloc.1
199     IL_0016:  ret
200   } // end of method HorribleCase`1::'IHorrible<System.Collections.Generic.IList<Z>>.Horrible'
201 } // end of class HorribleCase`1
203 .class private auto ansi beforefieldinit HorribleTest
204        extends [mscorlib]System.Object
206   .method public hidebysig static int32  Horror<(class IHorrible`1<!!U>) T,U>(!!T t) cil managed
207   {
208     // Code size       33 (0x21)
209     .maxstack  2
210     .locals init (int32 V_0)
211     IL_0000:  nop
212     IL_0001:  ldarga.s   t
213     IL_0003:  constrained. !!T
214     IL_0009:  callvirt   instance int32 class IHorrible`1<!!U>::Horrible()
215     IL_000e:  ldarga.s   t
216     IL_0010:  constrained. !!T
217     IL_0016:  callvirt   instance int32 class IHorrible`1<!!U>::Horrible()
218     IL_001b:  add
219     IL_001c:  stloc.0
220     IL_001d:  br.s       IL_001f
222     IL_001f:  ldloc.0
223     IL_0020:  ret
224   } // end of method HorribleTest::Horror
226   .method public hidebysig static void  RunTest() cil managed
227   {
228     // Code size       58 (0x3a)
229     .maxstack  2
230     .locals init (valuetype HorribleCase`1<object> V_0)
231     IL_0000:  nop
232     IL_0001:  ldloca.s   V_0
233     IL_0003:  initobj    valuetype HorribleCase`1<object>
234     IL_0009:  ldloc.0
235     IL_000a:  call       int32 HorribleTest::Horror<valuetype HorribleCase`1<object>,class [mscorlib]System.Collections.Generic.IEnumerable`1<object>>(!!0)
236     IL_000f:  ldc.i4.3
237     IL_0010:  ceq
238     IL_0012:  ldstr      "Fail"
239     IL_0017:  call       void Test::Assert(bool,
240                                            string)
241     IL_001c:  nop
242     IL_001d:  ldloca.s   V_0
243     IL_001f:  initobj    valuetype HorribleCase`1<object>
244     IL_0025:  ldloc.0
245     IL_0026:  call       int32 HorribleTest::Horror<valuetype HorribleCase`1<object>,class [mscorlib]System.Collections.Generic.IList`1<object>>(!!0)
246     IL_002b:  ldc.i4.0
247     IL_002c:  ceq
248     IL_002e:  ldstr      "Fail"
249     IL_0033:  call       void Test::Assert(bool,
250                                            string)
251     IL_0038:  nop
252     IL_0039:  ret
253   } // end of method HorribleTest::RunTest
255   .method public hidebysig specialname rtspecialname 
256           instance void  .ctor() cil managed
257   {
258     // Code size       8 (0x8)
259     .maxstack  8
260     IL_0000:  ldarg.0
261     IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
262     IL_0006:  nop
263     IL_0007:  ret
264   } // end of method HorribleTest::.ctor
266 } // end of class HorribleTest
268 .class private auto ansi beforefieldinit SimpleConstraintTest
269        extends [mscorlib]System.Object
271   .method public hidebysig static int32  CallFoo_WithConstraints<(IFoo) T>(!!T& foo,
272                                                                            int32 val) cil managed
273   {
274     // Code size       19 (0x13)
275     .maxstack  2
276     .locals init (int32 V_0)
277     IL_0000:  nop
278     IL_0001:  ldarg.0
279     IL_0002:  ldarg.1
280     IL_0003:  constrained. !!T
281     IL_0009:  callvirt   instance int32 IFoo::Foo(int32)
282     IL_000e:  stloc.0
283     IL_000f:  br.s       IL_0011
285     IL_0011:  ldloc.0
286     IL_0012:  ret
287   } // end of method SimpleConstraintTest::CallFoo_WithConstraints
289   .method public hidebysig static void  RunTest() cil managed
290   {
291     // Code size       75 (0x4b)
292     .maxstack  2
293     .locals init (valuetype FooValue V_0)
294     IL_0000:  nop
295     IL_0001:  ldloca.s   V_0
296     IL_0003:  initobj    FooValue
297     IL_0009:  ldloca.s   V_0
298     IL_000b:  ldc.i4.s   10
299     IL_000d:  stfld      int32 FooValue::val
300     IL_0012:  ldstr      "Calling CallFoo_WithConstraints on FooValue - expe"
301     + "cting IFoo::Foo"
302     IL_0017:  call       void [mscorlib]System.Console::WriteLine(string)
303     IL_001c:  nop
304     IL_001d:  ldloca.s   V_0
305     IL_001f:  ldc.i4.s   10
306     IL_0021:  call       int32 SimpleConstraintTest::CallFoo_WithConstraints<valuetype FooValue>(!!0&,
307                                                                                                  int32)
308     IL_0026:  ldc.i4.s   20
309     IL_0028:  ceq
310     IL_002a:  ldstr      "Calling CallFoo_WithConstraints on FooValue"
311     IL_002f:  call       void Test::Assert(bool,
312                                            string)
313     IL_0034:  nop
314     IL_0035:  ldloc.0
315     IL_0036:  ldfld      int32 FooValue::val
316     IL_003b:  ldc.i4.s   10
317     IL_003d:  ceq
318     IL_003f:  ldstr      "Expecting boxing on CallFoo_WithConstraints"
319     IL_0044:  call       void Test::Assert(bool,
320                                            string)
321     IL_0049:  nop
322     IL_004a:  ret
323   } // end of method SimpleConstraintTest::RunTest
325   .method public hidebysig specialname rtspecialname 
326           instance void  .ctor() cil managed
327   {
328     // Code size       8 (0x8)
329     .maxstack  8
330     IL_0000:  ldarg.0
331     IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
332     IL_0006:  nop
333     IL_0007:  ret
334   } // end of method SimpleConstraintTest::.ctor
336 } // end of class SimpleConstraintTest
338 .class private auto ansi beforefieldinit Program
339        extends [mscorlib]System.Object
341   .method public hidebysig static int32  Main() cil managed
342   {
343     .entrypoint
344     // Code size       23 (0x17)
345     .maxstack  1
346     .locals init (int32 V_0)
347     IL_0000:  nop
348     IL_0001:  call       void HorribleTest::RunTest()
349     IL_0006:  nop
350     IL_0007:  call       void SimpleConstraintTest::RunTest()
351     IL_000c:  nop
352     IL_000d:  call       int32 Test::Ret()
353     IL_0012:  stloc.0
354     IL_0013:  br.s       IL_0015
356     IL_0015:  ldloc.0
357     IL_0016:  ret
358   } // end of method Program::Main
360   .method public hidebysig specialname rtspecialname 
361           instance void  .ctor() cil managed
362   {
363     // Code size       8 (0x8)
364     .maxstack  8
365     IL_0000:  ldarg.0
366     IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
367     IL_0006:  nop
368     IL_0007:  ret
369   } // end of method Program::.ctor
371 } // end of class Program
373 .class private auto ansi beforefieldinit Test
374        extends [mscorlib]System.Object
376   .field private static bool Pass
377   .method public hidebysig static int32  Ret() cil managed
378   {
379     // Code size       19 (0x13)
380     .maxstack  1
381     .locals init (int32 V_0)
382     IL_0000:  nop
383     IL_0001:  ldsfld     bool Test::Pass
384     IL_0006:  brtrue.s   IL_000c
386     IL_0008:  ldc.i4.s   101
387     IL_000a:  br.s       IL_000e
389     IL_000c:  ldc.i4.s   0
390     IL_000e:  stloc.0
391     IL_000f:  br.s       IL_0011
393     IL_0011:  ldloc.0
394     IL_0012:  ret
395   } // end of method Test::Ret
397   .method public hidebysig static void  Assert(bool cond,
398                                                string msg) cil managed
399   {
400     // Code size       47 (0x2f)
401     .maxstack  2
402     .locals init (bool V_0)
403     IL_0000:  nop
404     IL_0001:  ldarg.0
405     IL_0002:  stloc.0
406     IL_0003:  ldloc.0
407     IL_0004:  brfalse.s  IL_0015
409     IL_0006:  nop
410     IL_0007:  ldstr      "PASS"
411     IL_000c:  call       void [mscorlib]System.Console::WriteLine(string)
412     IL_0011:  nop
413     IL_0012:  nop
414     IL_0013:  br.s       IL_002e
416     IL_0015:  nop
417     IL_0016:  ldstr      "FAIL: "
418     IL_001b:  ldarg.1
419     IL_001c:  call       string [mscorlib]System.String::Concat(string,
420                                                                 string)
421     IL_0021:  call       void [mscorlib]System.Console::WriteLine(string)
422     IL_0026:  nop
423     IL_0027:  ldc.i4.0
424     IL_0028:  stsfld     bool Test::Pass
425     IL_002d:  nop
426     IL_002e:  ret
427   } // end of method Test::Assert
429   .method public hidebysig specialname rtspecialname 
430           instance void  .ctor() cil managed
431   {
432     // Code size       8 (0x8)
433     .maxstack  8
434     IL_0000:  ldarg.0
435     IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
436     IL_0006:  nop
437     IL_0007:  ret
438   } // end of method Test::.ctor
440   .method private hidebysig specialname rtspecialname static 
441           void  .cctor() cil managed
442   {
443     // Code size       7 (0x7)
444     .maxstack  8
445     IL_0000:  ldc.i4.1
446     IL_0001:  stsfld     bool Test::Pass
447     IL_0006:  ret
448   } // end of method Test::.cctor
450 } // end of class Test
453 // =============================================================
455 // *********** DISASSEMBLY COMPLETE ***********************
456 // WARNING: Created Win32 resource file constrainedcall.res