Imported Upstream version 6.0.0.172

Former-commit-id: f3cc9b82f3e5bd8f0fd3ebc098f789556b44e9cd
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2019-04-12 14:10:50 +00:00
parent 8016999e4d
commit 64ac736ec5
32155 changed files with 3981439 additions and 75368 deletions

View File

@ -11,6 +11,9 @@
using System;
using System.Threading;
using System.Reflection;
#if !MONOTOUCH && !FULL_AOT_RUNTIME
using System.Reflection.Emit;
#endif
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using System.Collections.Generic;
@ -527,6 +530,40 @@ namespace MonoTests.System.Reflection
Assert.AreEqual (null, type.GetMethod ("M5").GetParameters () [0].RawDefaultValue);
}
public sealed class A { }
public sealed class B { }
public sealed class C { }
public sealed class D { }
#if !MONOTOUCH && !FULL_AOT_RUNTIME
[Test]
// https://github.com/mono/mono/issues/11302
public void CustomModifiersOrder()
{
var assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly (new AssemblyName ("SomeAssembly"), AssemblyBuilderAccess.RunAndSave);
var moduleBuilder = assemblyBuilder.DefineDynamicModule ("SomeAssembly", "SomeAssembly.dll");
var typeBuilder = moduleBuilder.DefineType ("SomeClass", TypeAttributes.Class);
var methodBuilder = typeBuilder.DefineMethod (
"SomeMethod",
MethodAttributes.Public,
CallingConventions.HasThis,
typeof (void),
null,
null,
new[] { typeof (int) },
new[] { new[] { typeof (A), typeof (B), typeof (A), typeof (A) } },
new[] { new[] { typeof (C), typeof (D), typeof (C), typeof (C) } });
methodBuilder.GetILGenerator ().Emit (OpCodes.Ret);
var type = typeBuilder.CreateType ();
var method = type.GetMethod ("SomeMethod");
var parameter = method.GetParameters () [0];
var requiredCustomModifiers = parameter.GetRequiredCustomModifiers ();
Assert.AreEqual (new[] { typeof (A), typeof (A), typeof (B), typeof (A) }, requiredCustomModifiers);
var optionalCustomModifiers = parameter.GetOptionalCustomModifiers ();
Assert.AreEqual (new[] { typeof (C), typeof (C), typeof (D), typeof (C) }, optionalCustomModifiers);
}
#endif
[Test]
public void ReturnParameter_IsDefined_False ()
{