dynamicAssembly.Save (fileName);
}
+ [Test]
+ public void MethodsWithSameNameAndSig () {
+ // https://bugzilla.xamarin.com/show_bug.cgi?id=57222
+ string fileName = CreateTempAssembly ();
+
+ var assemblyName = new AssemblyName { Name = "test" };
+ var dynamicAssembly = AssemblyBuilder.DefineDynamicAssembly (assemblyName, AssemblyBuilderAccess.RunAndSave);
+ var dynamicModule = dynamicAssembly.DefineDynamicModule (assemblyName.Name, fileName);
+ var typeBuilder = dynamicModule.DefineType ("type1", TypeAttributes.Public | TypeAttributes.Class);
+
+ var mainMethod = typeBuilder.DefineMethod ("Main", MethodAttributes.Public | MethodAttributes.Static, typeof (int), new Type[0]);
+ var mainMethodIl = mainMethod.GetILGenerator ();
+
+ var m1 = typeBuilder.DefineMethod ("X", MethodAttributes.Private | MethodAttributes.Static, typeof (void), new Type [0]);
+ var m2 = typeBuilder.DefineMethod ("X", MethodAttributes.Private | MethodAttributes.Static, typeof (void), new Type [0]);
+ m1.GetILGenerator ().Emit (OpCodes.Ret);
+ m2.GetILGenerator ().Emit (OpCodes.Ret);
+
+ mainMethodIl.Emit (OpCodes.Call, m1);
+ mainMethodIl.Emit (OpCodes.Call, m2);
+ mainMethodIl.Emit (OpCodes.Ldc_I4_0);
+ mainMethodIl.Emit (OpCodes.Ret);
+
+ typeBuilder.CreateType ();
+ dynamicAssembly.SetEntryPoint (mainMethod);
+
+ dynamicAssembly.Save (fileName);
+ }
}
}