+2008-06-06 Rodrigo Kumpera <rkumpera@novell.com>
+
+ * make_ctor_test.sh: New test generator for
+ constructor related tests.
+
+ * make_tests.sh: Added tests using using
+ the new generator.
+
2008-05-23 Rodrigo Kumpera <rkumpera@novell.com>
* valid_contravariant_delegate_1.il
--- /dev/null
+#! /bin/sh
+
+TEST_NAME=$1
+TEST_VALIDITY=$2
+TEST_CODE=$3
+TEST_TARGET_TYPE=$4
+
+TARGET_TYPE="Test"
+TEST_OTHER_CODE="call instance void TestClass::'.ctor'()"
+
+if [ "$TEST_TARGET_TYPE" == "other" ]; then
+ TARGET_TYPE="TestSubClass"
+ TEST_OTHER_CODE=$TEST_CODE
+ TEST_CODE=""
+fi
+
+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
+echo $TEST_FILE
+sed -e "s/CODE/${TEST_CODE}/g" -e "s/OTHER/${TEST_OTHER_CODE}/g" -e "s/VALIDITY/${TEST_VALIDITY}/g" > $TEST_FILE <<//EOF
+
+.assembly extern mscorlib
+{
+ .ver 2:0:0:0
+ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+.assembly 'delegate_test'
+{
+ .hash algorithm 0x00008004
+ .ver 0:0:0:0
+}
+.module delegate_test.exe
+.class ansi beforefieldinit TestClass extends [mscorlib]System.Object
+{
+ .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
+ {
+ .maxstack 8
+ ldarg.0
+ call instance void object::'.ctor'()
+ ret
+ }
+
+ .method public hidebysig specialname rtspecialname instance default void .ctor (object V_1) cil managed
+ {
+ .maxstack 8
+ ldarg.0
+ call instance void object::'.ctor'()
+ ret
+ }
+}
+
+.module delegate_test.exe
+.class ansi beforefieldinit TestSubClass extends TestClass
+{
+ .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
+ {
+ .maxstack 8
+ ldarg.0
+ OTHER
+
+ leave END
+END:
+ ret
+ }
+}
+
+
+
+
+.class ansi beforefieldinit Test extends [mscorlib]System.Object
+{
+ .field int32 val
+ .field object obj
+
+ .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
+ {
+ .maxstack 8
+ .locals init (Test V_0)
+ ldarg.0
+ CODE
+
+ leave END
+END:
+ ret
+ }
+
+ .method public hidebysig static default void StaticMethod (object A_0) cil managed
+ {
+ .maxstack 8
+ ret
+ }
+
+
+ .method public hidebysig instance default void InstanceMethod () cil managed
+ {
+ .maxstack 8
+ ret
+ }
+
+}
+
+
+.class public auto ansi beforefieldinit Driver
+ extends [mscorlib]System.Object
+{
+ .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
+ {
+ .maxstack 8
+ ldarg.0
+ call instance void object::'.ctor'()
+
+ ret
+ }
+
+ .method public static int32 Main ()
+ {
+ .entrypoint
+ .maxstack 2
+ .locals init ()
+ newobj instance void ${TARGET_TYPE}::.ctor()
+ pop
+ ldc.i4.0
+ ret
+
+ }
+}
+//EOF
./make_type_visibility_test.sh type_vis_gmethod_2 unverifiable "call void SimpleClass::Generic<[test_lib]NotExportedA>()"
+#Constructor tests
+
+./make_ctor_test.sh ctor_good_ops_1 valid "call instance void object::'.ctor'()"
+./make_ctor_test.sh ctor_good_ops_2 valid "nop\n\tcall instance void object::'.ctor'()"
+./make_ctor_test.sh ctor_good_ops_3 valid "dup\n\tldc.i4.0\n\tstfld int32 Test::val\n\tcall instance void object::'.ctor'()"
+./make_ctor_test.sh ctor_good_ops_4 valid "dup\n\tldfld int32 Test::val\n\tpop\n\tcall instance void object::'.ctor'()"
+./make_ctor_test.sh ctor_good_ops_5 valid "dup\n\tpop\n\tcall instance void object::'.ctor'()"
+
+./make_ctor_test.sh ctor_call_super_2x valid "call instance void object::'.ctor'()\n\tldarg.0\n\tcall instance void object::'.ctor'()"
+
+./make_ctor_test.sh ctor_pass_this_as_arg_1 unverifiable "ldarg.0\n\tcall instance void TestClass::'.ctor'(object)" "other"
+./make_ctor_test.sh ctor_pass_this_as_arg_2 unverifiable "dup\n\tcall instance void TestClass::'.ctor'(object)" "other"
+
+
+./make_ctor_test.sh ctor_no_super_call unverifiable "nop"
+./make_ctor_test.sh ctor_call_invalid_super unverifiable "call instance void TestClass::'.ctor'()"
+./make_call_test.sh ctor_call_outside_ctor unverifiable "call instance void ClassA::.ctor()" "newobj instance void ClassA::.ctor()"
+
+./make_ctor_test.sh ctor_use_non_this_ptr unverifiable "ldloc.0\n\tcall instance void object::'.ctor'()"
+./make_ctor_test.sh ctor_store_this_on_field unverifiable "dup\n\tdup\n\tstfld object Test::obj\n\tcall instance void object::'.ctor'()"
+
+
+./make_ctor_test.sh ctor_use_uninit_this_1 unverifiable "dup\n\tcall void Test::StaticMethod(object)\n\tcall instance void object::'.ctor'()"
+./make_ctor_test.sh ctor_use_uninit_this_2 unverifiable "dup\n\tcall instance void Test::InstanceMethod()\n\tcall instance void object::'.ctor'()"
+./make_ctor_test.sh ctor_use_uninit_this_3 unverifiable "dup\n\tcastclass [mscorlib]System.String\n\tcall instance void object::'.ctor'()"
+./make_ctor_test.sh ctor_use_uninit_this_4 unverifiable "dup\n\tunbox.any Test\n\tcall instance void object::'.ctor'()"
+./make_ctor_test.sh ctor_use_uninit_this_5 unverifiable "dup\n\tcall instance void object::'.ctor'()\n\tcall instance void Test::InstanceMethod()"
+
+./make_ctor_test.sh ctor_bad_ops_1 unverifiable "dup\n\tstloc.0\n\tcall instance void object::'.ctor'()"
+./make_ctor_test.sh ctor_bad_ops_2 unverifiable "dup\n\tcall instance void object::'.ctor'()\n\tcall instance void Test::InstanceMethod()"
+
+#TODO try / catch inside constructor
+
+
+