10 TEST_NESTED_EXTENDS=$8
14 if [ "$TEST_BASE_EXTENDS" == "yes" ]; then
15 TEST_BASE_EXTENDS="extends Root"
16 TEST_BASE_CONSTRUCTOR="call instance void Root::.ctor()"
18 TEST_BASE_EXTENDS="extends [mscorlib]System.Object"
19 TEST_BASE_CONSTRUCTOR="call instance void object::.ctor()"
22 if [ "$TEST_NESTED_EXTENDS" == "yes" ]; then
23 TEST_NESTED_EXTENDS="extends Root\/Nested"
24 TEST_NESTED_CONSTRUCTOR="call instance void Root\/Nested::.ctor()"
26 TEST_NESTED_EXTENDS="extends [mscorlib]System.Object"
27 TEST_NESTED_CONSTRUCTOR="call instance void object::.ctor()"
30 if [ "$TEST_LOAD_BASE" == "yes" ]; then
31 TEST_LOAD_REF="ldarg.0"
33 TEST_LOAD_REF="call class Root\/Nested Root::Create ()"
36 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
37 TEST_FILE=${TEST_NAME}_generated.il
40 sed -e "s/CLASS_ACCESS/${TEST_CLASS_ACCESS}/g" -e "s/NESTED_ACCESS/${TEST_NESTED_ACCESS}/g" -e "s/MEMBER_ACCESS/${TEST_MEMBER_ACCESS}/g" -e "s/ROOT_EXTENDS/${TEST_BASE_EXTENDS}/g" -e "s/ROOT_CONSTRUCTOR/${TEST_BASE_CONSTRUCTOR}/g" -e "s/NESTED_EXTENDS/${TEST_NESTED_EXTENDS}/g" -e "s/NESTED_CONSTRUCTOR/${TEST_NESTED_CONSTRUCTOR}/g" -e "s/LOAD_REF/${TEST_LOAD_REF}/g" -e "s/OPCODE/${TEST_OP}/g" -e "s/VALIDITY/${TEST_VALIDITY}/g" > $TEST_FILE <<//EOF
42 .assembly '${TEST_NAME}_generated'
44 .hash algorithm 0x00008004
48 // VALIDITY CIL which breaks the ECMA-335 rules.
49 // this CIL should fail verification by a conforming CLI verifier.
51 .assembly extern mscorlib
54 .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
57 .class CLASS_ACCESS Root extends [mscorlib]System.Object
59 .method public static class Root/Nested Create ()
62 newobj instance void class Root/Nested::.ctor()
66 .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
70 call instance void object::.ctor()
74 .class nested NESTED_ACCESS Nested extends [mscorlib]System.Object
76 .field MEMBER_ACCESS int32 fld
77 .field MEMBER_ACCESS static int32 sfld
79 .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
83 call instance void object::.ctor()
87 .method MEMBER_ACCESS virtual hidebysig newslot instance int32 Target ()
97 .class public Extension ROOT_EXTENDS
99 .method public static void Execute ()
102 newobj instance void class Extension/MyNested::.ctor()
103 call instance void class Extension/MyNested::Method()
107 .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
115 .class nested MEMBER_ACCESS MyNested NESTED_EXTENDS
117 .method MEMBER_ACCESS virtual hidebysig instance int32 Target ()
124 .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
132 .method public void Method ()
143 .method public static int32 Main() cil managed
147 call void class Extension::Execute ()