4 if [ `which gsed 2> /dev/null` ] ; then
15 TEST_NESTED_EXTENDS=$8
19 if [ "$TEST_BASE_EXTENDS" = "yes" ]; then
20 TEST_BASE_EXTENDS="extends Root"
21 TEST_BASE_CONSTRUCTOR="call instance void Root::.ctor()"
23 TEST_BASE_EXTENDS="extends [mscorlib]System.Object"
24 TEST_BASE_CONSTRUCTOR="call instance void object::.ctor()"
27 if [ "$TEST_NESTED_EXTENDS" = "yes" ]; then
28 TEST_NESTED_EXTENDS="extends Root\/Nested"
29 TEST_NESTED_CONSTRUCTOR="call instance void Root\/Nested::.ctor()"
31 TEST_NESTED_EXTENDS="extends [mscorlib]System.Object"
32 TEST_NESTED_CONSTRUCTOR="call instance void object::.ctor()"
35 if [ "$TEST_LOAD_BASE" = "yes" ]; then
36 TEST_LOAD_REF="ldarg.0"
38 TEST_LOAD_REF="call class Root\/Nested Root::Create ()"
41 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
42 TEST_FILE=${TEST_NAME}_generated.il
45 $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
47 .assembly '${TEST_NAME}_generated'
49 .hash algorithm 0x00008004
53 // VALIDITY CIL which breaks the ECMA-335 rules.
54 // this CIL should fail verification by a conforming CLI verifier.
56 .assembly extern mscorlib
59 .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
62 .class CLASS_ACCESS Root extends [mscorlib]System.Object
64 .method public static class Root/Nested Create ()
67 newobj instance void class Root/Nested::.ctor()
71 .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
75 call instance void object::.ctor()
79 .class nested NESTED_ACCESS Nested extends [mscorlib]System.Object
81 .field MEMBER_ACCESS int32 fld
82 .field MEMBER_ACCESS static int32 sfld
84 .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
88 call instance void object::.ctor()
92 .method MEMBER_ACCESS virtual hidebysig newslot instance int32 Target ()
102 .class public Extension ROOT_EXTENDS
104 .method public static void Execute ()
107 newobj instance void class Extension/MyNested::.ctor()
108 call instance void class Extension/MyNested::Method()
112 .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
120 .class nested MEMBER_ACCESS MyNested NESTED_EXTENDS
122 .method MEMBER_ACCESS virtual hidebysig instance int32 Target ()
129 .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
137 .method public void Method ()
148 .method public static int32 Main() cil managed
152 call void class Extension::Execute ()