Merge pull request #4169 from evincarofautumn/fix-xmm-scanning-mac-x86
[mono.git] / mono / tests / verifier / invalid_generic_method_and_type.il
1
2 // valid CIL which breaks the ECMA-335 rules. 
3 // this CIL should fail verification by a conforming CLI verifier.
4
5 .assembly 'valid_method_constraint_vt_object_ct_12_generated'
6 {
7   .hash algorithm 0x00008004
8   .ver  0:0:0:0
9 }
10
11 .assembly extern mscorlib
12 {
13   .ver 1:0:5000:0
14   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
15 }
16
17 .class Target<class K> extends [mscorlib]System.Object
18 {
19         .method public hidebysig  specialname rtspecialname instance default void .ctor () cil managed 
20         {
21                 .maxstack 8
22                 ldarg.0 
23                 call instance void object::.ctor()
24                 ret 
25         }
26
27         .method public static void DoStuff<valuetype T> () cil managed
28         {
29                 .maxstack 8
30                 .locals init ()
31                 ldtoken !K
32          call class [mscorlib]System.Type class [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
33         call void class [mscorlib]System.Console::WriteLine(object)
34
35                 ldtoken !!T
36         call class [mscorlib]System.Type class [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
37         call void class [mscorlib]System.Console::WriteLine(object)
38                 ret
39         }
40 }
41
42 .class Driver extends [mscorlib]System.Object
43 {
44         .method public static void MemberMain() cil managed
45         {
46                 .maxstack 8
47                 .locals init ()
48                 call void class Target<int32>::DoStuff<int32>()
49                 ret
50         }
51
52         .method public static void Main() cil managed
53         {
54                 .entrypoint
55                 .maxstack 8
56                 .locals init ()
57
58                 call void Driver::MemberMain()
59                 leave END
60
61 END:
62                 ret
63         }
64
65 }