Merge pull request #2377 from joelmartinez/docs-multiassembly-extension-fix
[mono.git] / mono / tests / verifier / make_tail_call_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_OP=$3
11 TEST_LOAD_OP=$4
12 TEST_TYPE=$5
13 TEST_RET_TYPE=$6
14
15 if [ "x$TEST_RET_TYPE" = "x" ]; then
16         TEST_RET_TYPE="void"
17 else
18         LD_RET_CODE="ldloc.0"
19 fi
20
21 TEST_FILE=`echo ${TEST_VALIDITY}_${TEST_NAME} | $SED -e 's/ /_/g' -e 's/\./_/g' -e 's/&/mp/g' -e 's/\[/_/g' -e 's/\]/_/g'`_generated.il
22 echo $TEST_FILE
23 $SED  -e "s/RET_TYPE/${TEST_RET_TYPE}/g" -e "s/TYPE/${TEST_TYPE}/g" -e "s/OPCODE/${TEST_OP}/g"  -e "s/BEFORE_OP/${TEST_BEFORE_OP}/g" -e "s/LOAD_OP/${TEST_LOAD_OP}/g"> $TEST_FILE <<//EOF
24
25 .assembly extern mscorlib
26 {
27   .ver 2:0:0:0
28   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
29 }
30
31 .assembly 'prefix_test'
32 {
33   .hash algorithm 0x00008004
34   .ver  0:0:0:0
35 }
36
37 .module cmmp.exe
38
39
40 .class ClassA extends [mscorlib]System.Object
41 {
42     .field public int32 valid
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 virtual void VirtTest ()
53         {
54                 ret
55         }
56 }
57
58 .class public Template\`1<T>
59         extends [mscorlib]System.Object
60 {
61 }
62
63 .class sealed public StructTemplate\`1<T>
64         extends [mscorlib]System.ValueType
65 {
66         .field public !0 t
67 }
68
69 .class sealed public StructTemplate2\`1<T>
70         extends [mscorlib]System.ValueType
71 {
72         .field public !0 t
73 }
74
75
76 .class public auto ansi sealed MyStruct
77         extends [mscorlib]System.ValueType
78 {
79         .field public int32 foo
80         .field public static int32 stFoo
81         .field public native int ptr
82
83         .method public static string StrTest ()
84         {
85                 ldstr "oi"
86                 ret
87         }
88
89         .method public static void Test ()
90         {
91                 ret
92         }
93
94         .method public static void Test (int32&)
95         {
96                 ret
97         }
98 }
99
100
101 .class public auto ansi sealed MyEnum
102         extends [mscorlib]System.Enum
103 {
104     .field public specialname  rtspecialname  int32 value__
105     .field public static  literal  valuetype MyEnum B = int32(0x00000000)
106     .field public static  literal  valuetype MyEnum C = int32(0x00000001)
107 }
108
109 .method public static RET_TYPE TestMethod ()
110 {
111         .maxstack 8
112         .locals init (TYPE V_0)
113
114         LOAD_OP
115
116         tail.
117 MIDDLE:
118         OPCODE
119 AFTER:
120         ret
121         leave END
122 END:
123         $LD_RET_CODE
124         ret 
125 }
126
127
128 .method public static int32 Main ()
129 {
130         .entrypoint
131         .maxstack 8
132         .locals init ()
133
134         call RET_TYPE TestMethod()
135
136         leave END
137 END:
138         ldc.i4.0
139         ret 
140 }
141
142 //EOF