From d8d444d0561918736e3577be60711cd9d7088ff1 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Wed, 2 Feb 2022 10:35:20 -0800 Subject: [PATCH 01/36] Add abstract AssemblyBuilder --- .../System/Reflection/Emit/AssemblyBuilder.cs | 44 +++++++++++++--- .../System/Reflection/Emit/DynamicMethod.cs | 2 +- .../System/Reflection/Emit/ModuleBuilder.cs | 6 +-- .../src/System/Reflection/Emit/TypeBuilder.cs | 2 +- .../Loader/AssemblyLoadContext.CoreCLR.cs | 2 +- .../System/Reflection/Emit/AssemblyBuilder.cs | 51 +------------------ src/coreclr/vm/ecalllist.h | 1 + .../System/Reflection/Emit/AssemblyBuilder.cs | 20 +++++++- .../ref/System.Reflection.Emit.cs | 12 ++--- .../src/MatchingRefApiCompatBaseline.txt | 6 ++- ...iCompatBaseline.NetCoreAppLatestStable.txt | 24 ++++++++- 11 files changed, 97 insertions(+), 73 deletions(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index 565ae3d7696f8..59532f3286ce9 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -17,7 +17,35 @@ namespace System.Reflection.Emit { - public sealed partial class AssemblyBuilder : Assembly + public partial class AssemblyBuilder + { + [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] + [DynamicSecurityMethod] // Required to make Assembly.GetCallingAssembly reliable. + public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) + { + return RuntimeAssemblyBuilder.InternalDefineDynamicAssembly(name, + access, + Assembly.GetCallingAssembly(), + AssemblyLoadContext.CurrentContextualReflectionContext, + null); + } + + [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] + [DynamicSecurityMethod] // Required to make Assembly.GetCallingAssembly reliable. + public static AssemblyBuilder DefineDynamicAssembly( + AssemblyName name, + AssemblyBuilderAccess access, + IEnumerable? assemblyAttributes) + { + return RuntimeAssemblyBuilder.InternalDefineDynamicAssembly(name, + access, + Assembly.GetCallingAssembly(), + AssemblyLoadContext.CurrentContextualReflectionContext, + assemblyAttributes); + } + } + + internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder { #region Internal Data Members @@ -147,7 +175,7 @@ private static unsafe RuntimeAssembly CreateDynamicAssembly(AssemblyLoadContext private static readonly object s_assemblyBuilderLock = new object(); - internal static AssemblyBuilder InternalDefineDynamicAssembly( + internal static RuntimeAssemblyBuilder InternalDefineDynamicAssembly( AssemblyName name, AssemblyBuilderAccess access, Assembly? callingAssembly, @@ -157,7 +185,7 @@ internal static AssemblyBuilder InternalDefineDynamicAssembly( lock (s_assemblyBuilderLock) { // We can only create dynamic assemblies in the current domain - return new AssemblyBuilder(name, + return new RuntimeAssemblyBuilder(name, access, callingAssembly, assemblyLoadContext, @@ -173,7 +201,7 @@ internal static AssemblyBuilder InternalDefineDynamicAssembly( /// modules within an Assembly with the same name. This dynamic module is /// a transient module. /// - public ModuleBuilder DefineDynamicModule(string name) + public override ModuleBuilder DefineDynamicModule(string name) { lock (SyncRoot) { @@ -234,7 +262,7 @@ public override IList GetCustomAttributesData() => public override AssemblyName GetName(bool copiedName) => InternalAssembly.GetName(copiedName); - public override string? FullName => InternalAssembly.FullName; + public override string FullName => InternalAssembly.FullName!; [RequiresUnreferencedCode("Types might be removed")] public override Type? GetType(string name, bool throwOnError, bool ignoreCase) => @@ -273,7 +301,7 @@ public override Assembly GetSatelliteAssembly(CultureInfo culture, Version? vers /// The name of module for the look up. /// Dynamic module with the specified name. - public ModuleBuilder? GetDynamicModule(string name) + public override ModuleBuilder? GetDynamicModule(string name) { lock (SyncRoot) { @@ -299,7 +327,7 @@ public override Assembly GetSatelliteAssembly(CultureInfo culture, Version? vers /// /// Use this function if client decides to form the custom attribute blob themselves. /// - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); @@ -317,7 +345,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) /// /// Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder. /// - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs index 24641e490a1ad..583192144e0b9 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs @@ -241,7 +241,7 @@ private static RuntimeModule GetDynamicMethodsModule() AssemblyName assemblyName = new AssemblyName("Anonymously Hosted DynamicMethods Assembly"); - AssemblyBuilder assembly = AssemblyBuilder.InternalDefineDynamicAssembly( + RuntimeAssemblyBuilder assembly = RuntimeAssemblyBuilder.InternalDefineDynamicAssembly( assemblyName, AssemblyBuilderAccess.Run, typeof(object).Assembly, diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index eee44ef3e7e80..7fd0b46a63783 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -54,8 +54,8 @@ internal static string UnmangleTypeName(string typeName) internal readonly RuntimeModule _internalModule; // This is the "external" AssemblyBuilder // only the "external" ModuleBuilder has this set - private readonly AssemblyBuilder _assemblyBuilder; - internal AssemblyBuilder ContainingAssemblyBuilder => _assemblyBuilder; + private readonly RuntimeAssemblyBuilder _assemblyBuilder; + internal RuntimeAssemblyBuilder ContainingAssemblyBuilder => _assemblyBuilder; internal const string ManifestModuleName = "RefEmit_InMemoryManifestModule"; @@ -63,7 +63,7 @@ internal static string UnmangleTypeName(string typeName) #region Constructor - internal ModuleBuilder(AssemblyBuilder assemblyBuilder, RuntimeModule internalModule) + internal ModuleBuilder(RuntimeAssemblyBuilder assemblyBuilder, RuntimeModule internalModule) { _internalModule = internalModule; _assemblyBuilder = assemblyBuilder; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index d2e84804adbe6..0e3c76fb2dc45 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -483,7 +483,7 @@ internal TypeBuilder( int i; m_module = module; m_DeclaringType = enclosingType; - AssemblyBuilder containingAssem = m_module.ContainingAssemblyBuilder; + RuntimeAssemblyBuilder containingAssem = m_module.ContainingAssemblyBuilder; // cannot have two types within the same assembly of the same name containingAssem.CheckTypeNameConflict(fullname, enclosingType); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs index a5dedc6044b38..a54143a8cff0c 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs @@ -184,7 +184,7 @@ public void StartProfileOptimization(string? profile) return asm == null ? null : asm is RuntimeAssembly rtAssembly ? rtAssembly : - asm is System.Reflection.Emit.AssemblyBuilder ab ? ab.InternalAssembly : + asm is System.Reflection.Emit.RuntimeAssemblyBuilder ab ? ab.InternalAssembly : null; } diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index 7c836b8d55eb2..0325a60f818e2 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -7,29 +7,8 @@ namespace System.Reflection.Emit { - public sealed partial class AssemblyBuilder : Assembly + public partial class AssemblyBuilder : Assembly { - internal AssemblyBuilder() - { - // Prevent generating a default constructor - } - - public override string FullName - { - get - { - return default; - } - } - - public override Module ManifestModule - { - get - { - return default; - } - } - [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) { @@ -43,33 +22,5 @@ public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyB ReflectionEmitThrower.ThrowPlatformNotSupportedException(); return default; } - - public ModuleBuilder DefineDynamicModule(string name) - { - return default; - } - - public override bool Equals(object? obj) - { - return default; - } - - public ModuleBuilder GetDynamicModule(string name) - { - return default; - } - - public override int GetHashCode() - { - return default; - } - - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - { - } - - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) - { - } } } diff --git a/src/coreclr/vm/ecalllist.h b/src/coreclr/vm/ecalllist.h index 593284165f165..7ed2b2d40fc9e 100644 --- a/src/coreclr/vm/ecalllist.h +++ b/src/coreclr/vm/ecalllist.h @@ -804,6 +804,7 @@ FCClassElement("OverlappedData", "System.Threading", gOverlappedFuncs) FCClassElement("RegisteredWaitHandle", "System.Threading", gRegisteredWaitHandleFuncs) FCClassElement("RuntimeAssembly", "System.Reflection", gRuntimeAssemblyFuncs) +FCClassElement("RuntimeAssemblyBuilder", "System.Reflection.Emit", gAssemblyBuilderFuncs) FCClassElement("RuntimeFieldHandle", "System", gCOMFieldHandleNewFuncs) FCClassElement("RuntimeHelpers", "System.Runtime.CompilerServices", gRuntimeHelpers) FCClassElement("RuntimeMethodHandle", "System", gRuntimeMethodHandle) diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index 2bfa12615cda1..f69d1024004fb 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -1,13 +1,31 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; +using System.Runtime.Loader; +using System.Threading; namespace System.Reflection.Emit { - public sealed partial class AssemblyBuilder : Assembly + public abstract partial class AssemblyBuilder : Assembly { + protected AssemblyBuilder() + { + } + + // The following methods are abstract in reference assembly. We keep them as virtual to maintain backward compatibility. + // They should be overriden in concrete AssemblyBuilder implementations. They should be only used for non-virtual calls + // on the original non-abstract AssemblyBuilder. The implementation of these methods simply forwards to the overriden virtual method + // with actual implementation. + + public virtual ModuleBuilder DefineDynamicModule(string name) => DefineDynamicModule(name); + public virtual ModuleBuilder? GetDynamicModule(string name) => GetDynamicModule(name); + + public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) => SetCustomAttribute(con, binaryAttribute); + public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) => SetCustomAttribute(customBuilder); + [System.ObsoleteAttribute("Assembly.CodeBase and Assembly.EscapedCodeBase are only included for .NET Framework compatibility. Use Assembly.Location instead.", DiagnosticId = "SYSLIB0012", UrlFormat = "https://aka.ms/dotnet-warnings/{0}")] [RequiresAssemblyFiles(ThrowingMessageInRAF)] public override string? CodeBase => throw new NotSupportedException(SR.NotSupported_DynamicAssembly); diff --git a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs index fe1f97b0d6e87..120a0e044be74 100644 --- a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs +++ b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs @@ -6,9 +6,9 @@ namespace System.Reflection.Emit { - public sealed partial class AssemblyBuilder : System.Reflection.Assembly + public abstract partial class AssemblyBuilder : System.Reflection.Assembly { - internal AssemblyBuilder() { } + protected AssemblyBuilder() { } [System.ObsoleteAttribute("Assembly.CodeBase and Assembly.EscapedCodeBase are only included for .NET Framework compatibility. Use Assembly.Location instead.", DiagnosticId = "SYSLIB0012", UrlFormat = "https://aka.ms/dotnet-warnings/{0}")] [System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute("This member throws an exception for assemblies embedded in a single-file app")] public override string? CodeBase { get { throw null; } } @@ -24,12 +24,12 @@ internal AssemblyBuilder() { } public static System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] public static System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Collections.Generic.IEnumerable? assemblyAttributes) { throw null; } - public System.Reflection.Emit.ModuleBuilder DefineDynamicModule(string name) { throw null; } + public abstract System.Reflection.Emit.ModuleBuilder DefineDynamicModule(string name); public override bool Equals(object? obj) { throw null; } public override object[] GetCustomAttributes(bool inherit) { throw null; } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } public override System.Collections.Generic.IList GetCustomAttributesData() { throw null; } - public System.Reflection.Emit.ModuleBuilder? GetDynamicModule(string name) { throw null; } + public abstract System.Reflection.Emit.ModuleBuilder? GetDynamicModule(string name); [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Types might be removed")] public override System.Type[] GetExportedTypes() { throw null; } [System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute("This member throws an exception for assemblies embedded in a single-file app")] @@ -52,8 +52,8 @@ internal AssemblyBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Types might be removed")] public override System.Type? GetType(string name, bool throwOnError, bool ignoreCase) { throw null; } public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } + public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); } [System.FlagsAttribute] public enum AssemblyBuilderAccess diff --git a/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt b/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt index 5bee5254aabcc..af5000ef45ce5 100644 --- a/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt +++ b/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt @@ -1,3 +1,7 @@ Compat issues with assembly System.Reflection.Emit: +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. MembersMustExist : Member 'protected System.ModuleHandle System.Reflection.Emit.ModuleBuilder.GetModuleHandleImpl()' does not exist in the reference but it does exist in the implementation. -Total Issues: 1 +Total Issues: 5 diff --git a/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt b/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt index dbe5f53d99e3d..f8e6d6b6dc1e1 100644 --- a/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt +++ b/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt @@ -1,5 +1,10 @@ Compat issues with assembly mscorlib: CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.RequiresPreviewFeaturesAttribute' exists on 'System.String System.Runtime.CompilerServices.RuntimeFeature.VirtualStaticsInInterfaces' in the contract but not the implementation. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.AssemblyBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.Aes' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' in the contract but not the implementation. @@ -47,7 +52,15 @@ CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAtt CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Numerics.Vector.ToString(System.String, System.IFormatProvider)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Numerics.Vector.TryCopyTo(System.Span)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Numerics.Vector.TryCopyTo(System.Span)' in the contract but not the implementation. +<<<<<<< HEAD CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.RequiresPreviewFeaturesAttribute' exists on 'System.String System.Runtime.CompilerServices.RuntimeFeature.VirtualStaticsInInterfaces' in the contract but not the implementation. +======= +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.AssemblyBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +>>>>>>> 86381da18a7... Add abstract AssemblyBuilder CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.Aes' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' in the contract but not the implementation. @@ -117,10 +130,19 @@ CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAtt CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Numerics.Vector.ToString(System.String, System.IFormatProvider)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Numerics.Vector.TryCopyTo(System.Span)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Numerics.Vector.TryCopyTo(System.Span)' in the contract but not the implementation. +<<<<<<< HEAD Compat issues with assembly System.Runtime: CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.RequiresPreviewFeaturesAttribute' exists on 'System.String System.Runtime.CompilerServices.RuntimeFeature.VirtualStaticsInInterfaces' in the contract but not the implementation. CannotChangeAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' on 'System.IO.FileStream.Lock(System.Int64, System.Int64)' changed from '[UnsupportedOSPlatformAttribute("ios")]' in the contract to '[UnsupportedOSPlatformAttribute("freebsd")]' in the implementation. CannotChangeAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' on 'System.IO.FileStream.Unlock(System.Int64, System.Int64)' changed from '[UnsupportedOSPlatformAttribute("ios")]' in the contract to '[UnsupportedOSPlatformAttribute("freebsd")]' in the implementation. +======= +Compat issues with assembly System.Reflection.Emit: +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.AssemblyBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +>>>>>>> 86381da18a7... Add abstract AssemblyBuilder Compat issues with assembly System.Runtime.Intrinsics: MembersMustExist : Member 'public System.Runtime.Intrinsics.Vector128 System.Runtime.Intrinsics.Vector128.As(System.Runtime.Intrinsics.Vector128)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'public System.Runtime.Intrinsics.Vector256 System.Runtime.Intrinsics.Vector256.As(System.Runtime.Intrinsics.Vector256)' does not exist in the implementation but it does exist in the contract. @@ -160,4 +182,4 @@ CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatfo CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.TripleDES' in the contract but not the implementation. Compat issues with assembly System.Security.Cryptography.X509Certificates: CannotChangeAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' on 'System.Security.Cryptography.X509Certificates.PublicKey.GetDSAPublicKey()' changed from '[UnsupportedOSPlatformAttribute("ios")]' in the contract to '[UnsupportedOSPlatformAttribute("browser")]' in the implementation. -Total Issues: 149 +Total Issues: 150 From 97ed454bf8fac3c9c88704d4cb38d6e16fa2cb35 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Sat, 5 Feb 2022 22:10:32 -0800 Subject: [PATCH 02/36] Create managed RuntimeAssemblyBuilder --- .../System/Reflection/Emit/AssemblyBuilder.cs | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index 59532f3286ce9..0fcce5c456845 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -19,10 +19,17 @@ namespace System.Reflection.Emit { public partial class AssemblyBuilder { + internal static bool s_useManagedReflectionEmit = true; + [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] [DynamicSecurityMethod] // Required to make Assembly.GetCallingAssembly reliable. public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) { + if (s_useManagedReflectionEmit) + { + return (s_defineDynamicAssembly ?? InitDefineDynamicAssembly())(name, access, null, Assembly.GetCallingAssembly()); + } + return RuntimeAssemblyBuilder.InternalDefineDynamicAssembly(name, access, Assembly.GetCallingAssembly(), @@ -37,12 +44,40 @@ public static AssemblyBuilder DefineDynamicAssembly( AssemblyBuilderAccess access, IEnumerable? assemblyAttributes) { + if (s_useManagedReflectionEmit) + { + return (s_defineDynamicAssembly ?? InitDefineDynamicAssembly())(name, access, assemblyAttributes, Assembly.GetCallingAssembly()); + } + return RuntimeAssemblyBuilder.InternalDefineDynamicAssembly(name, access, Assembly.GetCallingAssembly(), AssemblyLoadContext.CurrentContextualReflectionContext, assemblyAttributes); } + + private static Func?, Assembly?, AssemblyBuilder>? s_defineDynamicAssembly; + private static Func?, Assembly?, AssemblyBuilder> InitDefineDynamicAssembly() + { + Type assemblyBuilderType = Type.GetType( + "System.Reflection.Emit.RuntimeAssemblyBuilder, System.Reflection.Emit", + throwOnError: true)!; + + MethodInfo? defineDynamicAssemblyMethod = assemblyBuilderType.GetMethod( + "DefineDynamicAssembly", + BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static, + null, + new Type[] { typeof(AssemblyName), typeof(AssemblyBuilderAccess), typeof(IEnumerable), typeof(Assembly) }, + null); + + if (defineDynamicAssemblyMethod == null) + { + throw new MissingMethodException(assemblyBuilderType.FullName, "DefineDynamicAssembly"); + } + + return s_defineDynamicAssembly = defineDynamicAssemblyMethod. + CreateDelegate?, Assembly?, AssemblyBuilder>>(); + } } internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder From 791b4cbe2cb4db121f090bd49c2d9c781060b817 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Sat, 5 Feb 2022 22:54:25 -0800 Subject: [PATCH 03/36] Add RuntimeAssemblyBuilder to the build --- .../src/MatchingRefApiCompatBaseline.txt | 3 +- .../src/System.Reflection.Emit.csproj | 7 +++++ .../Reflection/Emit/RuntimeAssemblyBuilder.cs | 29 +++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs diff --git a/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt b/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt index af5000ef45ce5..7bd8bc860e93f 100644 --- a/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt +++ b/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt @@ -4,4 +4,5 @@ CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder S CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the reference but is not abstract in the implementation. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. MembersMustExist : Member 'protected System.ModuleHandle System.Reflection.Emit.ModuleBuilder.GetModuleHandleImpl()' does not exist in the reference but it does exist in the implementation. -Total Issues: 5 +TypesMustExist : Type 'System.Reflection.Emit.RuntimeAssemblyBuilder' does not exist in the reference but it does exist in the implementation. +Total Issues: 6 diff --git a/src/libraries/System.Reflection.Emit/src/System.Reflection.Emit.csproj b/src/libraries/System.Reflection.Emit/src/System.Reflection.Emit.csproj index 8e784c9864ff8..6a33f33ca318b 100644 --- a/src/libraries/System.Reflection.Emit/src/System.Reflection.Emit.csproj +++ b/src/libraries/System.Reflection.Emit/src/System.Reflection.Emit.csproj @@ -2,8 +2,15 @@ true $(NetCoreAppCurrent) + + true + + + + + diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs new file mode 100644 index 0000000000000..551d91122b5fc --- /dev/null +++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs @@ -0,0 +1,29 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Reflection.Metadata; +using System.Reflection.PortableExecutable; + +namespace System.Reflection.Emit +{ + public sealed class RuntimeAssemblyBuilder : AssemblyBuilder + { + private RuntimeAssemblyBuilder() + { + // https://docs.microsoft.com/en-us/dotnet/api/system.reflection.metadata.ecma335.metadatabuilder + + var peHeaderBuilder = new PEHeaderBuilder( + imageCharacteristics: Characteristics.ExecutableImage + ); + +peHeaderBuilder.ToString(); + + } + + public override ModuleBuilder DefineDynamicModule(string name) => DefineDynamicModule(name); + public override ModuleBuilder? GetDynamicModule(string name) => GetDynamicModule(name); + + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) => SetCustomAttribute(con, binaryAttribute); + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) => SetCustomAttribute(customBuilder); + } +} From eaa8c736f11eaf7440530d3a2600b7019d91a22f Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Tue, 8 Feb 2022 08:16:21 -0800 Subject: [PATCH 04/36] Boilerplate for RuntimeAssemblyBuilder --- .../System/Reflection/Emit/AssemblyBuilder.cs | 57 ++++--- .../System/Reflection/Emit/DynamicMethod.cs | 10 +- .../src/Resources/Strings.resx | 63 ++++++++ .../Reflection/Emit/RuntimeAssemblyBuilder.cs | 151 ++++++++++++++++-- 4 files changed, 239 insertions(+), 42 deletions(-) create mode 100644 src/libraries/System.Reflection.Emit/src/Resources/Strings.resx diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index 0fcce5c456845..dfcb35a2f270a 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -24,18 +24,7 @@ public partial class AssemblyBuilder [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] [DynamicSecurityMethod] // Required to make Assembly.GetCallingAssembly reliable. public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) - { - if (s_useManagedReflectionEmit) - { - return (s_defineDynamicAssembly ?? InitDefineDynamicAssembly())(name, access, null, Assembly.GetCallingAssembly()); - } - - return RuntimeAssemblyBuilder.InternalDefineDynamicAssembly(name, - access, - Assembly.GetCallingAssembly(), - AssemblyLoadContext.CurrentContextualReflectionContext, - null); - } + => DefineDynamicAssembly(name, access, null, Assembly.GetCallingAssembly()); [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] [DynamicSecurityMethod] // Required to make Assembly.GetCallingAssembly reliable. @@ -43,17 +32,40 @@ public static AssemblyBuilder DefineDynamicAssembly( AssemblyName name, AssemblyBuilderAccess access, IEnumerable? assemblyAttributes) + => DefineDynamicAssembly(name, access, null, Assembly.GetCallingAssembly()); + + private static AssemblyBuilder DefineDynamicAssembly( + AssemblyName name!!, + AssemblyBuilderAccess access, + IEnumerable? assemblyAttributes, + Assembly? callingAssembly) { if (s_useManagedReflectionEmit) { - return (s_defineDynamicAssembly ?? InitDefineDynamicAssembly())(name, access, assemblyAttributes, Assembly.GetCallingAssembly()); + return (s_defineDynamicAssembly ?? InitDefineDynamicAssembly())(name, access, assemblyAttributes, callingAssembly); } - return RuntimeAssemblyBuilder.InternalDefineDynamicAssembly(name, - access, - Assembly.GetCallingAssembly(), - AssemblyLoadContext.CurrentContextualReflectionContext, - assemblyAttributes); + if (access != AssemblyBuilderAccess.Run && access != AssemblyBuilderAccess.RunAndCollect) + { + throw new ArgumentException(SR.Format(SR.Arg_EnumIllegalVal, (int)access), nameof(access)); + } + + if (callingAssembly == null) + { + // Called either from interop or async delegate invocation. Rejecting because we don't + // know how to set the correct context of the new dynamic assembly. + throw new InvalidOperationException(); + } + + AssemblyLoadContext? assemblyLoadContext = + AssemblyLoadContext.CurrentContextualReflectionContext ?? AssemblyLoadContext.GetLoadContext(callingAssembly); + + if (assemblyLoadContext == null) + { + throw new InvalidOperationException(); + } + + return new RuntimeAssemblyBuilder(name, access, assemblyAttributes, assemblyLoadContext); } private static Func?, Assembly?, AssemblyBuilder>? s_defineDynamicAssembly; @@ -100,9 +112,8 @@ internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder #region Constructor - internal AssemblyBuilder(AssemblyName name, + internal RuntimeAssemblyBuilder(AssemblyName name, AssemblyBuilderAccess access, - Assembly? callingAssembly, AssemblyLoadContext? assemblyLoadContext, IEnumerable? assemblyAttributes) { @@ -274,10 +285,6 @@ internal void CheckTypeNameConflict(string strTypeName, TypeBuilder? enclosingTy _manifestModuleBuilder.CheckTypeNameConflict(strTypeName, enclosingType); } - public override bool Equals(object? obj) => base.Equals(obj); - - public override int GetHashCode() => base.GetHashCode(); - #region ICustomAttributeProvider Members public override object[] GetCustomAttributes(bool inherit) => InternalAssembly.GetCustomAttributes(inherit); @@ -297,7 +304,7 @@ public override IList GetCustomAttributesData() => public override AssemblyName GetName(bool copiedName) => InternalAssembly.GetName(copiedName); - public override string FullName => InternalAssembly.FullName!; + public override string? FullName => InternalAssembly.FullName; [RequiresUnreferencedCode("Types might be removed")] public override Type? GetType(string name, bool throwOnError, bool ignoreCase) => diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs index 583192144e0b9..d6d9b118b1aa3 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs @@ -239,14 +239,8 @@ private static RuntimeModule GetDynamicMethodsModule() if (s_anonymouslyHostedDynamicMethodsModule != null) return s_anonymouslyHostedDynamicMethodsModule; - AssemblyName assemblyName = new AssemblyName("Anonymously Hosted DynamicMethods Assembly"); - - RuntimeAssemblyBuilder assembly = RuntimeAssemblyBuilder.InternalDefineDynamicAssembly( - assemblyName, - AssemblyBuilderAccess.Run, - typeof(object).Assembly, - null, - null); + var assembly = new RuntimeAssemblyBuilder(new AssemblyName("Anonymously Hosted DynamicMethods Assembly"), + AssemblyBuilderAccess.Run, null, AssemblyLoadContext.Default); // this always gets the internal module. s_anonymouslyHostedDynamicMethodsModule = (RuntimeModule)assembly.ManifestModule!; diff --git a/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx b/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx new file mode 100644 index 0000000000000..eb0c736dc14f7 --- /dev/null +++ b/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Illegal enum value: {0}. + + diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs index 551d91122b5fc..eb17244db5bd8 100644 --- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs +++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs @@ -1,29 +1,162 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Globalization; using System.Reflection.Metadata; using System.Reflection.PortableExecutable; +using System.Runtime.Loader; namespace System.Reflection.Emit { public sealed class RuntimeAssemblyBuilder : AssemblyBuilder { - private RuntimeAssemblyBuilder() + private RuntimeAssemblyBuilder( + AssemblyName name, + AssemblyBuilderAccess access, + IEnumerable? assemblyAttributes, + AssemblyLoadContext? asssemblyLoadContext) { +#if false // https://docs.microsoft.com/en-us/dotnet/api/system.reflection.metadata.ecma335.metadatabuilder - var peHeaderBuilder = new PEHeaderBuilder( - imageCharacteristics: Characteristics.ExecutableImage - ); + var peHeaderBuilder = new PEHeaderBuilder( + imageCharacteristics: Characteristics.ExecutableImage + ); -peHeaderBuilder.ToString(); + peHeaderBuilder.ToString(); +#endif + } + + public static AssemblyBuilder DefineDynamicAssembly( + AssemblyName name, + AssemblyBuilderAccess access, + IEnumerable? assemblyAttributes, + Assembly? callingAssembly) + { + if (name == null) + { + throw new ArgumentNullException(nameof(name)); + } + if (access != AssemblyBuilderAccess.Run && access != AssemblyBuilderAccess.RunAndCollect) + { + throw new ArgumentException(SR.Format(SR.Arg_EnumIllegalVal, (int)access), nameof(access)); + } + + if (callingAssembly == null) + { + // Called either from interop or async delegate invocation. Rejecting because we don't + // know how to set the correct context of the new dynamic assembly. + throw new InvalidOperationException(); + } + + AssemblyLoadContext? assemblyLoadContext = + AssemblyLoadContext.CurrentContextualReflectionContext ?? AssemblyLoadContext.GetLoadContext(callingAssembly); + if (assemblyLoadContext == null) + { + throw new InvalidOperationException(); + } + + return new RuntimeAssemblyBuilder(name, access, assemblyAttributes, assemblyLoadContext); } - public override ModuleBuilder DefineDynamicModule(string name) => DefineDynamicModule(name); - public override ModuleBuilder? GetDynamicModule(string name) => GetDynamicModule(name); + internal Assembly InternalAssembly + { + get + { + throw new NotImplementedException(); // TODO + } + } + + #region Assembly overrides + public override object[] GetCustomAttributes(bool inherit) + => InternalAssembly.GetCustomAttributes(inherit); + + public override object[] GetCustomAttributes(Type attributeType, bool inherit) + => InternalAssembly.GetCustomAttributes(attributeType, inherit); + + public override bool IsDefined(Type attributeType, bool inherit) + => InternalAssembly.IsDefined(attributeType, inherit); + + public override IList GetCustomAttributesData() + => InternalAssembly.GetCustomAttributesData(); + + public override AssemblyName GetName(bool copiedName) + => InternalAssembly.GetName(copiedName); + + public override string? FullName + => InternalAssembly.FullName; + + [RequiresUnreferencedCode("Types might be removed")] + public override Type? GetType(string name, bool throwOnError, bool ignoreCase) + => InternalAssembly.GetType(name, throwOnError, ignoreCase); + + public override bool ReflectionOnly + => InternalAssembly.ReflectionOnly; + + public override Module? GetModule(string name) + => InternalAssembly.GetModule(name); + + [RequiresUnreferencedCode("Assembly references might be removed")] + public override AssemblyName[] GetReferencedAssemblies() + => InternalAssembly.GetReferencedAssemblies(); + + public override long HostContext + => InternalAssembly.HostContext; - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) => SetCustomAttribute(con, binaryAttribute); - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) => SetCustomAttribute(customBuilder); + public override Module[] GetModules(bool getResourceModules) + => InternalAssembly.GetModules(getResourceModules); + + public override Module[] GetLoadedModules(bool getResourceModules) + => InternalAssembly.GetLoadedModules(getResourceModules); + + public override Assembly GetSatelliteAssembly(CultureInfo culture) + => InternalAssembly.GetSatelliteAssembly(culture, null); + + public override Assembly GetSatelliteAssembly(CultureInfo culture, Version? version) + => InternalAssembly.GetSatelliteAssembly(culture, version); + + public override bool IsCollectible + => InternalAssembly.IsCollectible; + #endregion + + public override Module ManifestModule + => throw new NotImplementedException(); // TODO _manifestModuleBuilder.InternalModule; + + public override ModuleBuilder DefineDynamicModule(string name) + { + throw new NotImplementedException(); // TODO + } + + public override ModuleBuilder? GetDynamicModule(string name) + { + throw new NotImplementedException(); // TODO + } + + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + { + if (con == null) + { + throw new ArgumentNullException(nameof(con)); + } + if (binaryAttribute == null) + { + throw new ArgumentNullException(nameof(binaryAttribute)); + } + + throw new NotImplementedException(); // TODO + } + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + { + if (customBuilder == null) + { + throw new ArgumentNullException(nameof(customBuilder)); + } + + throw new NotImplementedException(); // TODO + } } } From 80c310d8ffc11cde49ee99fd6f408d8a75c7ac4f Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Tue, 8 Feb 2022 16:50:30 -0800 Subject: [PATCH 05/36] Emit Assembly record --- .../src/Resources/Strings.resx | 3 + .../src/System.Reflection.Emit.csproj | 3 +- .../Reflection/Emit/RuntimeAssemblyBuilder.cs | 78 +++++++++++++++---- 3 files changed, 68 insertions(+), 16 deletions(-) diff --git a/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx b/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx index eb0c736dc14f7..a316db756cea2 100644 --- a/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx +++ b/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx @@ -60,4 +60,7 @@ Illegal enum value: {0}. + + AssemblyName.Name cannot be null or an empty string. + diff --git a/src/libraries/System.Reflection.Emit/src/System.Reflection.Emit.csproj b/src/libraries/System.Reflection.Emit/src/System.Reflection.Emit.csproj index 6a33f33ca318b..2592d2087fe55 100644 --- a/src/libraries/System.Reflection.Emit/src/System.Reflection.Emit.csproj +++ b/src/libraries/System.Reflection.Emit/src/System.Reflection.Emit.csproj @@ -2,7 +2,7 @@ true $(NetCoreAppCurrent) - + true @@ -11,6 +11,7 @@ + diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs index eb17244db5bd8..72084878acec1 100644 --- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs +++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs @@ -5,7 +5,9 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Globalization; +using System.IO; using System.Reflection.Metadata; +using System.Reflection.Metadata.Ecma335; using System.Reflection.PortableExecutable; using System.Runtime.Loader; @@ -13,21 +15,72 @@ namespace System.Reflection.Emit { public sealed class RuntimeAssemblyBuilder : AssemblyBuilder { + private Assembly _internalAssembly; + + // https://docs.microsoft.com/en-us/dotnet/api/system.reflection.metadata.ecma335.metadatabuilder + + [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", + Justification = "Reflection.Emit can only reference existing code.")] private RuntimeAssemblyBuilder( AssemblyName name, AssemblyBuilderAccess access, IEnumerable? assemblyAttributes, - AssemblyLoadContext? asssemblyLoadContext) + AssemblyLoadContext asssemblyLoadContext) { -#if false - // https://docs.microsoft.com/en-us/dotnet/api/system.reflection.metadata.ecma335.metadatabuilder + var metadata = new MetadataBuilder(); + + string? simpleName = name.Name; + if (string.IsNullOrEmpty(simpleName)) + { + throw new ArgumentException(SR.ArgumentNull_AssemblyNameName); + } + + Version? version = name.Version; + string? cultureName = name.CultureName; + byte[]? publicKey = name.GetPublicKey(); + + AssemblyFlags flags = (AssemblyFlags)name.Flags; + +#pragma warning disable SYSLIB0037 // AssemblyName.HashAlgorithm is obsolete + AssemblyHashAlgorithm hashAlgorithm = (AssemblyHashAlgorithm)name.HashAlgorithm; +#pragma warning restore + + metadata.AddAssembly( + metadata.GetOrAddString(simpleName), + version: (version != null) ? version : new Version(0, 0, 0, 0), + culture: (cultureName != null) ? metadata.GetOrAddString(cultureName) : default, + publicKey: (publicKey != null) ? metadata.GetOrAddBlob(publicKey) : default, + flags: flags, + hashAlgorithm: hashAlgorithm); + + metadata.AddModule( + 0, + metadata.GetOrAddString("RefEmit_InMemoryManifestModule"), + metadata.GetOrAddGuid(Guid.NewGuid()), + default(GuidHandle), + default(GuidHandle)); - var peHeaderBuilder = new PEHeaderBuilder( - imageCharacteristics: Characteristics.ExecutableImage - ); + if (assemblyAttributes != null) + { + foreach (CustomAttributeBuilder assemblyAttribute in assemblyAttributes) + { + SetCustomAttribute(assemblyAttribute); + } + } + + var pe = new ManagedPEBuilder( + new PEHeaderBuilder(imageCharacteristics: Characteristics.ExecutableImage), + new MetadataRootBuilder(metadata), + new BlobBuilder()); + + var peBlob = new BlobBuilder(); + pe.Serialize(peBlob); + + var ms = new MemoryStream(); + peBlob.WriteContentTo(ms); - peHeaderBuilder.ToString(); -#endif + ms.Position = 0; + _internalAssembly = asssemblyLoadContext.LoadFromStream(ms); } public static AssemblyBuilder DefineDynamicAssembly( @@ -63,13 +116,7 @@ public static AssemblyBuilder DefineDynamicAssembly( return new RuntimeAssemblyBuilder(name, access, assemblyAttributes, assemblyLoadContext); } - internal Assembly InternalAssembly - { - get - { - throw new NotImplementedException(); // TODO - } - } + internal Assembly InternalAssembly => _internalAssembly; #region Assembly overrides public override object[] GetCustomAttributes(bool inherit) @@ -149,6 +196,7 @@ public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttrib throw new NotImplementedException(); // TODO } + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { if (customBuilder == null) From c82c7d047154b50831ce57cd36a5f7c8e4384589 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Tue, 8 Feb 2022 17:46:18 -0800 Subject: [PATCH 06/36] Fixups after rebase --- .../Reflection/Emit/RuntimeAssemblyBuilder.cs | 24 +++---------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs index 72084878acec1..6c06e4aee1701 100644 --- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs +++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs @@ -84,15 +84,11 @@ private RuntimeAssemblyBuilder( } public static AssemblyBuilder DefineDynamicAssembly( - AssemblyName name, + AssemblyName name!!, AssemblyBuilderAccess access, IEnumerable? assemblyAttributes, Assembly? callingAssembly) { - if (name == null) - { - throw new ArgumentNullException(nameof(name)); - } if (access != AssemblyBuilderAccess.Run && access != AssemblyBuilderAccess.RunAndCollect) { throw new ArgumentException(SR.Format(SR.Arg_EnumIllegalVal, (int)access), nameof(access)); @@ -183,27 +179,13 @@ public override ModuleBuilder DefineDynamicModule(string name) throw new NotImplementedException(); // TODO } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute!!) { - if (con == null) - { - throw new ArgumentNullException(nameof(con)); - } - if (binaryAttribute == null) - { - throw new ArgumentNullException(nameof(binaryAttribute)); - } - throw new NotImplementedException(); // TODO } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) { - if (customBuilder == null) - { - throw new ArgumentNullException(nameof(customBuilder)); - } - throw new NotImplementedException(); // TODO } } From 85b37d6f1814901e952b910007b810ad9c6de5f0 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Tue, 8 Feb 2022 17:53:40 -0800 Subject: [PATCH 07/36] Add temporary ReflectionEmitLoadContext --- .../Reflection/Emit/RuntimeAssemblyBuilder.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs index 6c06e4aee1701..5729d0d31dcec 100644 --- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs +++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs @@ -19,13 +19,22 @@ public sealed class RuntimeAssemblyBuilder : AssemblyBuilder // https://docs.microsoft.com/en-us/dotnet/api/system.reflection.metadata.ecma335.metadatabuilder + // TODO: Create a new method for loading the assembly as dynamic and attached to the original load context + private class ReflectionEmitLoadContext : AssemblyLoadContext + { + public ReflectionEmitLoadContext(bool isCollectible) + : base(isCollectible) + { + } + } + [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "Reflection.Emit can only reference existing code.")] private RuntimeAssemblyBuilder( AssemblyName name, AssemblyBuilderAccess access, IEnumerable? assemblyAttributes, - AssemblyLoadContext asssemblyLoadContext) + AssemblyLoadContext assemblyLoadContext) { var metadata = new MetadataBuilder(); @@ -80,7 +89,11 @@ private RuntimeAssemblyBuilder( peBlob.WriteContentTo(ms); ms.Position = 0; - _internalAssembly = asssemblyLoadContext.LoadFromStream(ms); + + // TODO: Create a new method for loading the assembly as dynamic and attached to the original load context + assemblyLoadContext = new ReflectionEmitLoadContext(isCollectible: access == AssemblyBuilderAccess.RunAndCollect); + + _internalAssembly = assemblyLoadContext.LoadFromStream(ms); } public static AssemblyBuilder DefineDynamicAssembly( From cde27c2a2d5a8f2c65a1d715fe2993e505253b56 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Tue, 8 Feb 2022 22:47:13 -0800 Subject: [PATCH 08/36] Factor out RuntimeModuleBuilder --- .../System/Reflection/Emit/AssemblyBuilder.cs | 36 +--- .../Reflection/Emit/ConstructorBuilder.cs | 4 +- .../Reflection/Emit/CustomAttributeBuilder.cs | 2 +- .../src/System/Reflection/Emit/EnumBuilder.cs | 2 +- .../System/Reflection/Emit/EventBuilder.cs | 6 +- .../System/Reflection/Emit/FieldBuilder.cs | 20 +-- .../src/System/Reflection/Emit/ILGenerator.cs | 18 +- .../System/Reflection/Emit/MethodBuilder.cs | 16 +- .../System/Reflection/Emit/ModuleBuilder.cs | 160 ++++++++---------- .../Reflection/Emit/ParameterBuilder.cs | 6 +- .../System/Reflection/Emit/PropertyBuilder.cs | 6 +- .../System/Reflection/Emit/SymbolMethod.cs | 2 +- .../src/System/Reflection/Emit/TypeBuilder.cs | 31 ++-- .../src/System.Private.CoreLib.csproj | 1 - .../System/Reflection/Emit/ModuleBuilder.cs | 58 ++++++- .../Runtime/CompilerServices/QCallHandles.cs | 2 +- .../Reflection/Emit/RuntimeModuleBuilder.cs} | 0 17 files changed, 181 insertions(+), 189 deletions(-) rename src/{coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs => libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeModuleBuilder.cs} (100%) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index dfcb35a2f270a..5b16e6c5fa171 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -98,7 +98,7 @@ internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder internal readonly AssemblyBuilderAccess _access; private readonly RuntimeAssembly _internalAssembly; - private readonly ModuleBuilder _manifestModuleBuilder; + private readonly RuntimeModuleBuilder _manifestModuleBuilder; // Set to true if the manifest module was returned by code:DefineDynamicModule to the user private bool _isManifestModuleUsedAsDefinedModule; @@ -154,31 +154,6 @@ internal RuntimeAssemblyBuilder(AssemblyName name, #region DefineDynamicAssembly - [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] - [DynamicSecurityMethod] // Required to make Assembly.GetCallingAssembly reliable. - public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) - { - return InternalDefineDynamicAssembly(name, - access, - Assembly.GetCallingAssembly(), - AssemblyLoadContext.CurrentContextualReflectionContext, - null); - } - - [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] - [DynamicSecurityMethod] // Required to make Assembly.GetCallingAssembly reliable. - public static AssemblyBuilder DefineDynamicAssembly( - AssemblyName name, - AssemblyBuilderAccess access, - IEnumerable? assemblyAttributes) - { - return InternalDefineDynamicAssembly(name, - access, - Assembly.GetCallingAssembly(), - AssemblyLoadContext.CurrentContextualReflectionContext, - assemblyAttributes); - } - [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "AppDomain_CreateDynamicAssembly")] private static unsafe partial void CreateDynamicAssembly(ObjectHandleOnStack assemblyLoadContext, NativeAssemblyNameParts* pAssemblyName, @@ -344,15 +319,6 @@ public override Assembly GetSatelliteAssembly(CultureInfo culture, Version? vers /// The name of module for the look up. /// Dynamic module with the specified name. public override ModuleBuilder? GetDynamicModule(string name) - { - lock (SyncRoot) - { - return GetDynamicModuleNoLock(name); - } - } - - /// The name of module for the look up. - private ModuleBuilder? GetDynamicModuleNoLock(string name) { ArgumentException.ThrowIfNullOrEmpty(name); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs index cdef535524ac7..cd6e6b394036f 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs @@ -14,7 +14,7 @@ public sealed class ConstructorBuilder : ConstructorInfo #region Constructor internal ConstructorBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention, - Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers, ModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TypeBuilder type) + Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers, RuntimeModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TypeBuilder type) { m_methodBuilder = new MethodBuilder(name, attributes, callingConvention, null, null, null, parameterTypes, requiredCustomModifiers, optionalCustomModifiers, mod, type); @@ -27,7 +27,7 @@ internal ConstructorBuilder(string name, MethodAttributes attributes, CallingCon } internal ConstructorBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention, - Type[]? parameterTypes, ModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TypeBuilder type) : + Type[]? parameterTypes, RuntimeModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TypeBuilder type) : this(name, attributes, callingConvention, parameterTypes, null, null, mod, type) { } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs index d8a31cf407396..3ba20a31bcac6 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs @@ -515,7 +515,7 @@ private static void EmitValue(BinaryWriter writer, Type type, object? value) } // return the byte interpretation of the custom attribute - internal void CreateCustomAttribute(ModuleBuilder mod, int tkOwner) + internal void CreateCustomAttribute(RuntimeModuleBuilder mod, int tkOwner) { TypeBuilder.DefineCustomAttribute(mod, tkOwner, mod.GetConstructorToken(m_con), m_blob); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs index 13686657722e4..cbae60503120a 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs @@ -345,7 +345,7 @@ internal EnumBuilder( string name, // name of type Type underlyingType, // underlying type for an Enum TypeAttributes visibility, // any bits on TypeAttributes.VisibilityMask) - ModuleBuilder module) // module containing this type + RuntimeModuleBuilder module) // module containing this type { // Client should not set any bits other than the visibility bits. if ((visibility & ~TypeAttributes.VisibilityMask) != 0) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs index c28109acf2d12..c7051c65c2d86 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs @@ -25,7 +25,7 @@ public sealed class EventBuilder // Constructs a EventBuilder. // internal EventBuilder( - ModuleBuilder mod, // the module containing this EventBuilder + RuntimeModuleBuilder mod, // the module containing this EventBuilder string name, // Event name EventAttributes attr, // event attribute such as Public, Private, and Protected defined above // int eventType, // event type @@ -51,7 +51,7 @@ private void SetMethodSemantics(MethodBuilder mdBuilder, MethodSemanticsAttribut ArgumentNullException.ThrowIfNull(mdBuilder); m_type.ThrowIfCreated(); - ModuleBuilder module = m_module; + RuntimeModuleBuilder module = m_module; TypeBuilder.DefineMethodSemantics( new QCallModule(ref module), m_evToken, @@ -107,7 +107,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) // These are package private so that TypeBuilder can access them. private string m_name; // The name of the event private int m_evToken; // The token of this event - private ModuleBuilder m_module; + private RuntimeModuleBuilder m_module; private EventAttributes m_attributes; private TypeBuilder m_type; } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs index a5c2723524a67..b18157011d613 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs @@ -40,7 +40,7 @@ internal FieldBuilder(TypeBuilder typeBuilder, string fieldName, Type type, byte[] signature = sigHelp.InternalGetSignature(out int sigLength); - ModuleBuilder module = m_typeBuilder.GetModuleBuilder(); + RuntimeModuleBuilder module = m_typeBuilder.GetModuleBuilder(); m_fieldTok = TypeBuilder.DefineField(new QCallModule(ref module), typeBuilder.TypeToken, fieldName, signature, sigLength, m_Attributes); } @@ -50,8 +50,8 @@ internal FieldBuilder(TypeBuilder typeBuilder, string fieldName, Type type, #region Internal Members internal void SetData(byte[]? data, int size) { - ModuleBuilder module = m_typeBuilder.GetModuleBuilder(); - ModuleBuilder.SetFieldRVAContent(new QCallModule(ref module), m_fieldTok, data, size); + RuntimeModuleBuilder module = m_typeBuilder.GetModuleBuilder(); + RuntimeModuleBuilder.SetFieldRVAContent(new QCallModule(ref module), m_fieldTok, data, size); } #endregion @@ -136,7 +136,7 @@ public void SetOffset(int iOffset) { m_typeBuilder.ThrowIfCreated(); - ModuleBuilder module = m_typeBuilder.GetModuleBuilder(); + RuntimeModuleBuilder module = m_typeBuilder.GetModuleBuilder(); TypeBuilder.SetFieldLayoutOffset(new QCallModule(ref module), m_fieldTok, iOffset); } @@ -159,12 +159,12 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); - ModuleBuilder module = (m_typeBuilder.Module as ModuleBuilder)!; - m_typeBuilder.ThrowIfCreated(); - TypeBuilder.DefineCustomAttribute(module, - m_fieldTok, module.GetConstructorToken(con), binaryAttribute); + RuntimeModuleBuilder moduleBuilder = (RuntimeModuleBuilder)m_typeBuilder.Module; + + TypeBuilder.DefineCustomAttribute(moduleBuilder, + m_fieldTok, moduleBuilder.GetConstructorToken(con), binaryAttribute); } public void SetCustomAttribute(CustomAttributeBuilder customBuilder) @@ -173,9 +173,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) m_typeBuilder.ThrowIfCreated(); - ModuleBuilder? module = m_typeBuilder.Module as ModuleBuilder; - - customBuilder.CreateCustomAttribute(module!, m_fieldTok); + customBuilder.CreateCustomAttribute((RuntimeModuleBuilder)m_typeBuilder.Module, m_fieldTok); } #endregion diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs index 26c1ae27f88ad..0970543156fab 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs @@ -157,7 +157,7 @@ internal void UpdateStackSize(OpCode opcode, int stackchange) private int GetMethodToken(MethodBase method, Type[]? optionalParameterTypes, bool useMethodDef) { - return ((ModuleBuilder)m_methodBuilder.Module).GetMethodTokenInternal(method, optionalParameterTypes, useMethodDef); + return ((RuntimeModuleBuilder)m_methodBuilder.Module).GetMethodTokenInternal(method, optionalParameterTypes, useMethodDef); } internal SignatureHelper GetMemberRefSignature( @@ -177,7 +177,7 @@ internal virtual SignatureHelper GetMemberRefSignature(CallingConventions call, private SignatureHelper GetMemberRefSignature(CallingConventions call, Type? returnType, Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers, Type[]? optionalParameterTypes, int cGenericParameters) { - return ((ModuleBuilder)m_methodBuilder.Module).GetMemberRefSignature(call, returnType, parameterTypes, requiredCustomModifiers, optionalCustomModifiers, optionalParameterTypes, cGenericParameters); + return ((RuntimeModuleBuilder)m_methodBuilder.Module).GetMemberRefSignature(call, returnType, parameterTypes, requiredCustomModifiers, optionalCustomModifiers, optionalParameterTypes, cGenericParameters); } internal byte[]? BakeByteArray() @@ -698,19 +698,9 @@ public virtual void Emit(OpCode opcode, Type cls) // by cls. The location of cls is recorded so that the token can be // patched if necessary when persisting the module to a PE. - int tempVal; ModuleBuilder modBuilder = (ModuleBuilder)m_methodBuilder.Module; - if (opcode == OpCodes.Ldtoken && cls != null && cls.IsGenericTypeDefinition) - { - // This gets the token for the generic type definition if cls is one. - tempVal = modBuilder.GetTypeToken(cls); - } - else - { - // This gets the token for the generic type instantiated on the formal parameters - // if cls is a generic type definition. - tempVal = modBuilder.GetTypeTokenInternal(cls!); - } + bool getGenericDefinition = (opcode == OpCodes.Ldtoken && cls != null && cls.IsGenericTypeDefinition); + int tempVal = modBuilder.GetTypeToken(cls!, getGenericDefinition); EnsureCapacity(7); InternalEmit(opcode); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs index 47be41675c14e..5fcc4267ecf7e 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs @@ -17,7 +17,7 @@ public sealed class MethodBuilder : MethodInfo // Identity internal string m_strName; // The name of the method private int m_token; // The token of this method - private readonly ModuleBuilder m_module; + private readonly RuntimeModuleBuilder m_module; [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] internal TypeBuilder m_containingType; @@ -59,7 +59,7 @@ public sealed class MethodBuilder : MethodInfo internal MethodBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers, - ModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TypeBuilder type) + RuntimeModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TypeBuilder type) { ArgumentException.ThrowIfNullOrEmpty(name); @@ -146,7 +146,7 @@ internal void CreateMethodBodyHelper(ILGenerator il) int[] type; int numCatch; int start, end; - ModuleBuilder dynMod = (ModuleBuilder)m_module; + RuntimeModuleBuilder dynMod = (RuntimeModuleBuilder)m_module; m_containingType.ThrowIfCreated(); @@ -353,7 +353,7 @@ internal TypeBuilder GetTypeBuilder() return m_containingType; } - internal ModuleBuilder GetModuleBuilder() + internal RuntimeModuleBuilder GetModuleBuilder() { return m_module; } @@ -600,7 +600,7 @@ private int GetTokenNoLock() Debug.Assert(m_token == 0, "m_token should not have been initialized"); byte[] sigBytes = GetMethodSignature().InternalGetSignature(out int sigLength); - ModuleBuilder module = m_module; + RuntimeModuleBuilder module = m_module; int token = TypeBuilder.DefineMethod(new QCallModule(ref module), m_containingType.MetadataToken, m_strName, sigBytes, sigLength, Attributes); m_token = token; @@ -677,7 +677,7 @@ public void SetImplementationFlags(MethodImplAttributes attributes) m_canBeRuntimeImpl = true; - ModuleBuilder module = m_module; + RuntimeModuleBuilder module = m_module; TypeBuilder.SetMethodImpl(new QCallModule(ref module), MetadataToken, attributes); } @@ -730,7 +730,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) ThrowIfGeneric(); TypeBuilder.DefineCustomAttribute(m_module, MetadataToken, - ((ModuleBuilder)m_module).GetConstructorToken(con), + ((RuntimeModuleBuilder)m_module).GetConstructorToken(con), binaryAttribute); if (IsKnownCA(con)) @@ -743,7 +743,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) ThrowIfGeneric(); - customBuilder.CreateCustomAttribute((ModuleBuilder)m_module, MetadataToken); + customBuilder.CreateCustomAttribute((RuntimeModuleBuilder)m_module, MetadataToken); if (IsKnownCA(customBuilder.m_con)) ParseCA(customBuilder.m_con); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index 7fd0b46a63783..328b25602bfec 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -10,7 +10,7 @@ namespace System.Reflection.Emit { - public partial class ModuleBuilder : Module + internal partial class RuntimeModuleBuilder : ModuleBuilder { internal static string UnmangleTypeName(string typeName) { @@ -63,7 +63,7 @@ internal static string UnmangleTypeName(string typeName) #region Constructor - internal ModuleBuilder(RuntimeAssemblyBuilder assemblyBuilder, RuntimeModule internalModule) + internal RuntimeModuleBuilder(RuntimeAssemblyBuilder assemblyBuilder, RuntimeModule internalModule) { _internalModule = internalModule; _assemblyBuilder = assemblyBuilder; @@ -107,7 +107,7 @@ internal void CheckTypeNameConflict(string strTypeName, Type? enclosingType) private int GetMemberRef(Module? refedModule, int tr, int defToken) { - ModuleBuilder thisModule = this; + RuntimeModuleBuilder thisModule = this; RuntimeModule refedRuntimeModule = GetRuntimeModuleFromModule(refedModule); return GetMemberRef(new QCallModule(ref thisModule), new QCallModule(ref refedRuntimeModule), tr, defToken); @@ -118,7 +118,7 @@ private int GetMemberRef(Module? refedModule, int tr, int defToken) private int GetMemberRefFromSignature(int tr, string methodName, byte[] signature, int length) { - ModuleBuilder thisModule = this; + RuntimeModuleBuilder thisModule = this; return GetMemberRefFromSignature(new QCallModule(ref thisModule), tr, methodName, signature, length); } @@ -129,7 +129,7 @@ private int GetMemberRefOfMethodInfo(int tr, RuntimeMethodInfo method) { Debug.Assert(method != null); - ModuleBuilder thisModule = this; + RuntimeModuleBuilder thisModule = this; int result = GetMemberRefOfMethodInfo(new QCallModule(ref thisModule), tr, ((IRuntimeMethodInfo)method).Value); GC.KeepAlive(method); return result; @@ -139,7 +139,7 @@ private int GetMemberRefOfMethodInfo(int tr, RuntimeConstructorInfo method) { Debug.Assert(method != null); - ModuleBuilder thisModule = this; + RuntimeModuleBuilder thisModule = this; int result = GetMemberRefOfMethodInfo(new QCallModule(ref thisModule), tr, ((IRuntimeMethodInfo)method).Value); GC.KeepAlive(method); return result; @@ -152,7 +152,7 @@ private int GetMemberRefOfFieldInfo(int tkType, RuntimeTypeHandle declaringType, { Debug.Assert(runtimeField != null); - ModuleBuilder thisModule = this; + RuntimeModuleBuilder thisModule = this; return GetMemberRefOfFieldInfo(new QCallModule(ref thisModule), tkType, new QCallTypeHandle(ref declaringType), runtimeField.MetadataToken); } @@ -161,7 +161,7 @@ private int GetMemberRefOfFieldInfo(int tkType, RuntimeTypeHandle declaringType, private int GetTokenFromTypeSpec(byte[] signature, int length) { - ModuleBuilder thisModule = this; + RuntimeModuleBuilder thisModule = this; return GetTokenFromTypeSpec(new QCallModule(ref thisModule), signature, length); } @@ -217,22 +217,20 @@ private int GetTypeRefNested(Type type, Module? refedModule) Debug.Assert(!type.IsByRef, "Must not be ByRef. Get token from TypeSpec."); Debug.Assert(!type.IsGenericType || type.IsGenericTypeDefinition, "Must not have generic arguments."); - ModuleBuilder thisModule = this; + RuntimeModuleBuilder thisModule = this; RuntimeModule refedRuntimeModule = GetRuntimeModuleFromModule(refedModule); return GetTypeRef(new QCallModule(ref thisModule), typeName, new QCallModule(ref refedRuntimeModule), tkResolution); } - internal int InternalGetConstructorToken(ConstructorInfo con, bool usingRef) + public override int GetConstructorToken(ConstructorInfo con) { - ArgumentNullException.ThrowIfNull(con); - - // Helper to get constructor token. If usingRef is true, we will never use the def token + // Helper to get constructor token. int tr; int mr; if (con is ConstructorBuilder conBuilder) { - if (!usingRef && conBuilder.Module.Equals(this)) + if (conBuilder.Module.Equals(this)) return conBuilder.MetadataToken; // constructor is defined in a different module @@ -241,8 +239,6 @@ internal int InternalGetConstructorToken(ConstructorInfo con, bool usingRef) } else if (con is ConstructorOnTypeBuilderInstantiation conOnTypeBuilderInst) { - if (usingRef) throw new InvalidOperationException(); - tr = GetTypeTokenInternal(con.DeclaringType!); mr = GetMemberRef(con.DeclaringType!.Module, tr, conOnTypeBuilderInst.MetadataToken); } @@ -301,7 +297,7 @@ internal int InternalGetConstructorToken(ConstructorInfo con, bool usingRef) private static RuntimeModule GetRuntimeModuleFromModule(Module? m) { - ModuleBuilder? mb = m as ModuleBuilder; + RuntimeModuleBuilder? mb = m as RuntimeModuleBuilder; if (mb != null) { return mb.InternalModule; @@ -749,7 +745,7 @@ public override MethodInfo[] GetMethods(BindingFlags bindingFlags) #region Define Type - public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packingSize, int typesize) + public override TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packingSize, int typesize) { lock (SyncRoot) { @@ -757,7 +753,7 @@ public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAcce } } - public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) + public override TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) { lock (SyncRoot) { @@ -771,7 +767,7 @@ public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAcce // This API can only be used to construct a top-level (not nested) enum type. // Nested enum types can be defined manually using ModuleBuilder.DefineType. - public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type underlyingType) + public override EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type underlyingType) { lock (SyncRoot) { @@ -790,9 +786,9 @@ public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type under #region Define Global Method [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, - CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes, CallingConvention nativeCallConv, - CharSet nativeCharSet) + public override MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, + CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes, + CallingConvention nativeCallConv, CharSet nativeCharSet) { lock (SyncRoot) { @@ -806,7 +802,7 @@ public MethodBuilder DefinePInvokeMethod(string name, string dllName, string ent } } - public MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, + public override MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? requiredReturnTypeCustomModifiers, Type[]? optionalReturnTypeCustomModifiers, Type[]? parameterTypes, Type[][]? requiredParameterTypeCustomModifiers, Type[][]? optionalParameterTypeCustomModifiers) { @@ -837,74 +833,55 @@ private MethodBuilder DefineGlobalMethodNoLock(string name, MethodAttributes att parameterTypes, requiredParameterTypeCustomModifiers, optionalParameterTypeCustomModifiers); } - public void CreateGlobalFunctions() + public override void CreateGlobalFunctions() { lock (SyncRoot) { - CreateGlobalFunctionsNoLock(); - } - } - - private void CreateGlobalFunctionsNoLock() - { - if (_hasGlobalBeenCreated) - { - // cannot create globals twice - throw new InvalidOperationException(SR.InvalidOperation_NotADebugModule); + if (_hasGlobalBeenCreated) + { + // cannot create globals twice + throw new InvalidOperationException(SR.InvalidOperation_NotADebugModule); + } + _globalTypeBuilder.CreateType(); + _hasGlobalBeenCreated = true; } - _globalTypeBuilder.CreateType(); - _hasGlobalBeenCreated = true; } #endregion #region Define Data - public FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) + public override FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) { - // This method will define an initialized Data in .sdata. - // We will create a fake TypeDef to represent the data with size. This TypeDef - // will be the signature for the Field. - lock (SyncRoot) { - return DefineInitializedDataNoLock(name, data, attributes); - } - } + // This method will define an initialized Data in .sdata. + // We will create a fake TypeDef to represent the data with size. This TypeDef + // will be the signature for the Field. + if (_hasGlobalBeenCreated) + { + throw new InvalidOperationException(SR.InvalidOperation_GlobalsHaveBeenCreated); + } - private FieldBuilder DefineInitializedDataNoLock(string name, byte[] data, FieldAttributes attributes) - { - // This method will define an initialized Data in .sdata. - // We will create a fake TypeDef to represent the data with size. This TypeDef - // will be the signature for the Field. - if (_hasGlobalBeenCreated) - { - throw new InvalidOperationException(SR.InvalidOperation_GlobalsHaveBeenCreated); + return _globalTypeBuilder.DefineInitializedData(name, data, attributes); } - - return _globalTypeBuilder.DefineInitializedData(name, data, attributes); } - public FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) + public override FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) { lock (SyncRoot) { - return DefineUninitializedDataNoLock(name, size, attributes); - } - } + // This method will define an uninitialized Data in .sdata. + // We will create a fake TypeDef to represent the data with size. This TypeDef + // will be the signature for the Field. - private FieldBuilder DefineUninitializedDataNoLock(string name, int size, FieldAttributes attributes) - { - // This method will define an uninitialized Data in .sdata. - // We will create a fake TypeDef to represent the data with size. This TypeDef - // will be the signature for the Field. + if (_hasGlobalBeenCreated) + { + throw new InvalidOperationException(SR.InvalidOperation_GlobalsHaveBeenCreated); + } - if (_hasGlobalBeenCreated) - { - throw new InvalidOperationException(SR.InvalidOperation_GlobalsHaveBeenCreated); + return _globalTypeBuilder.DefineUninitializedData(name, size, attributes); } - - return _globalTypeBuilder.DefineUninitializedData(name, size, attributes); } #endregion @@ -915,12 +892,7 @@ private FieldBuilder DefineUninitializedDataNoLock(string name, int size, FieldA // 1. GetTypeToken // 2. ldtoken (see ILGenerator) // For all other occasions we should return the generic type instantiated on its formal parameters. - internal int GetTypeTokenInternal(Type type) - { - return GetTypeTokenInternal(type, getGenericDefinition: false); - } - - private int GetTypeTokenInternal(Type type, bool getGenericDefinition) + public int GetTypeTokenInternal(Type type, bool getGenericDefinition = false) { lock (SyncRoot) { @@ -928,7 +900,7 @@ private int GetTypeTokenInternal(Type type, bool getGenericDefinition) } } - internal int GetTypeToken(Type type) + public override int GetTypeToken(Type type, bool getGenericDefinition = true) { return GetTypeTokenInternal(type, getGenericDefinition: true); } @@ -1141,7 +1113,7 @@ internal int GetMethodTokenInternal(MethodBase method, Type[]? optionalParameter // Create MethodSepc M with parent G?.M byte[] sigBytes = SignatureHelper.GetMethodSpecSigHelper( this, methodInfo.GetGenericArguments()).InternalGetSignature(out int sigLength); - ModuleBuilder thisModule = this; + RuntimeModuleBuilder thisModule = this; tk = TypeBuilder.DefineMethodSpec(new QCallModule(ref thisModule), tk, sigBytes, sigLength); } else @@ -1193,12 +1165,12 @@ private int GetArrayMethodTokenNoLock(Type arrayClass, string methodName, Callin byte[] sigBytes = sigHelp.InternalGetSignature(out int length); int typeSpec = GetTypeTokenInternal(arrayClass); - ModuleBuilder thisModule = this; + RuntimeModuleBuilder thisModule = this; return GetArrayMethodToken(new QCallModule(ref thisModule), typeSpec, methodName, sigBytes, length); } - public MethodInfo GetArrayMethod(Type arrayClass, string methodName, CallingConventions callingConvention, + public override MethodInfo GetArrayMethod(Type arrayClass, string methodName, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes) { // GetArrayMethod is useful when you have an array of a type whose definition has not been completed and @@ -1211,13 +1183,7 @@ public MethodInfo GetArrayMethod(Type arrayClass, string methodName, CallingConv return new SymbolMethod(this, token, arrayClass, methodName, callingConvention, returnType, parameterTypes); } - internal int GetConstructorToken(ConstructorInfo con) - { - // Return a token for the ConstructorInfo relative to the Module. - return InternalGetConstructorToken(con, false); - } - - internal int GetFieldToken(FieldInfo field) + public override int GetFieldToken(FieldInfo field) { lock (SyncRoot) { @@ -1300,17 +1266,25 @@ private int GetFieldTokenNoLock(FieldInfo field) return mr; } +<<<<<<< HEAD internal int GetStringConstant(string str) +======= + public override int GetStringConstant(string str!!) +>>>>>>> 3bca7cb8116... Factor out RuntimeModuleBuilder { ArgumentNullException.ThrowIfNull(str); // Returns a token representing a String constant. If the string // value has already been defined, the existing token will be returned. - ModuleBuilder thisModule = this; + RuntimeModuleBuilder thisModule = this; return GetStringConstant(new QCallModule(ref thisModule), str, str.Length); } +<<<<<<< HEAD internal int GetSignatureToken(SignatureHelper sigHelper) +======= + public override int GetSignatureToken(SignatureHelper sigHelper!!) +>>>>>>> 3bca7cb8116... Factor out RuntimeModuleBuilder { ArgumentNullException.ThrowIfNull(sigHelper); @@ -1318,7 +1292,7 @@ internal int GetSignatureToken(SignatureHelper sigHelper) // token for the signature described by SignatureHelper. // Get the signature in byte form. byte[] sigBytes = sigHelper.InternalGetSignature(out int sigLength); - ModuleBuilder thisModule = this; + RuntimeModuleBuilder thisModule = this; return TypeBuilder.GetTokenFromSig(new QCallModule(ref thisModule), sigBytes, sigLength); } @@ -1329,7 +1303,7 @@ internal int GetSignatureToken(byte[] sigBytes, int sigLength) byte[] localSigBytes = new byte[sigBytes.Length]; Buffer.BlockCopy(sigBytes, 0, localSigBytes, 0, sigBytes.Length); - ModuleBuilder thisModule = this; + RuntimeModuleBuilder thisModule = this; return TypeBuilder.GetTokenFromSig(new QCallModule(ref thisModule), localSigBytes, sigLength); } @@ -1337,7 +1311,11 @@ internal int GetSignatureToken(byte[] sigBytes, int sigLength) #region Other +<<<<<<< HEAD public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) +======= + public override void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute!!) +>>>>>>> 3bca7cb8116... Factor out RuntimeModuleBuilder { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); @@ -1349,7 +1327,11 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) binaryAttribute); } +<<<<<<< HEAD public void SetCustomAttribute(CustomAttributeBuilder customBuilder) +======= + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) +>>>>>>> 3bca7cb8116... Factor out RuntimeModuleBuilder { ArgumentNullException.ThrowIfNull(customBuilder); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs index 3eef9c642eb86..f3c97106fcc68 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs @@ -26,7 +26,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) TypeBuilder.DefineCustomAttribute( _methodBuilder.GetModuleBuilder(), _token, - ((ModuleBuilder)_methodBuilder.GetModule()).GetConstructorToken(con), + ((RuntimeModuleBuilder)_methodBuilder.GetModule()).GetConstructorToken(con), binaryAttribute); } @@ -35,7 +35,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); - customBuilder.CreateCustomAttribute((ModuleBuilder)(_methodBuilder.GetModule()), _token); + customBuilder.CreateCustomAttribute((RuntimeModuleBuilder)(_methodBuilder.GetModule()), _token); } internal ParameterBuilder( @@ -48,7 +48,7 @@ internal ParameterBuilder( _name = paramName; _methodBuilder = methodBuilder; _attributes = attributes; - ModuleBuilder module = _methodBuilder.GetModuleBuilder(); + RuntimeModuleBuilder module = _methodBuilder.GetModuleBuilder(); _token = TypeBuilder.SetParamInfo( new QCallModule(ref module), _methodBuilder.MetadataToken, diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs index 323b6dd4c9371..94a0cdd9795d9 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs @@ -26,7 +26,7 @@ public sealed class PropertyBuilder : PropertyInfo // Constructs a PropertyBuilder. // internal PropertyBuilder( - ModuleBuilder mod, // the module containing this PropertyBuilder + RuntimeModuleBuilder mod, // the module containing this PropertyBuilder string name, // property name PropertyAttributes attr, // property attribute such as DefaultProperty, Bindable, DisplayBind, etc Type returnType, // return type of the property. @@ -71,7 +71,7 @@ private void SetMethodSemantics(MethodBuilder mdBuilder, MethodSemanticsAttribut ArgumentNullException.ThrowIfNull(mdBuilder); m_containingType.ThrowIfCreated(); - ModuleBuilder module = m_moduleBuilder; + RuntimeModuleBuilder module = m_moduleBuilder; TypeBuilder.DefineMethodSemantics( new QCallModule(ref module), m_tkProperty, @@ -209,7 +209,7 @@ public override bool IsDefined(Type attributeType, bool inherit) // These are package private so that TypeBuilder can access them. private string m_name; // The name of the property private int m_tkProperty; // The token of this property - private ModuleBuilder m_moduleBuilder; + private RuntimeModuleBuilder m_moduleBuilder; private PropertyAttributes m_attributes; // property's attribute flags private Type m_returnType; // property's return type private MethodInfo? m_getMethod; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SymbolMethod.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SymbolMethod.cs index b0be6da1ff0a4..859b6b6efc5c7 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SymbolMethod.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SymbolMethod.cs @@ -59,7 +59,7 @@ internal override Type[] GetParameterTypes() return m_parameterTypes; } - internal int GetToken(ModuleBuilder mod) + internal int GetToken(RuntimeModuleBuilder mod) { return mod.GetArrayMethodToken(m_containingType, m_name, m_callingConvention, m_returnType, m_parameterTypes); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index 0e3c76fb2dc45..662c6fc4c1bbe 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -41,7 +41,7 @@ public CustAttr(CustomAttributeBuilder customBuilder) m_customBuilder = customBuilder; } - public void Bake(ModuleBuilder module, int token) + public void Bake(RuntimeModuleBuilder module, int token) { if (m_customBuilder == null) { @@ -172,7 +172,7 @@ private static partial void SetMethodIL(QCallModule module, int tk, [MarshalAs(U private static partial void DefineCustomAttribute(QCallModule module, int tkAssociate, int tkConstructor, byte[]? attr, int attrLength); - internal static void DefineCustomAttribute(ModuleBuilder module, int tkAssociate, int tkConstructor, + internal static void DefineCustomAttribute(RuntimeModuleBuilder module, int tkAssociate, int tkConstructor, byte[]? attr) { byte[]? localAttr = null; @@ -270,7 +270,7 @@ internal static bool IsTypeEqual(Type? t1, Type? t2) return false; } - internal static unsafe void SetConstantValue(ModuleBuilder module, int tk, Type destType, object? value) + internal static unsafe void SetConstantValue(RuntimeModuleBuilder module, int tk, Type destType, object? value) { // This is a helper function that is used by ParameterBuilder, PropertyBuilder, // and FieldBuilder to validate a default value and save it in the meta-data. @@ -395,7 +395,7 @@ internal static unsafe void SetConstantValue(ModuleBuilder module, int tk, Type #region Private Data Members private List? m_ca; private int m_tdType; - private readonly ModuleBuilder m_module; + private readonly RuntimeModuleBuilder m_module; private readonly string? m_strName; private readonly string? m_strNameSpace; private string? m_strFullQualName; @@ -430,7 +430,7 @@ internal static unsafe void SetConstantValue(ModuleBuilder module, int tk, Type #region Constructor // ctor for the global (module) type - internal TypeBuilder(ModuleBuilder module) + internal TypeBuilder(RuntimeModuleBuilder module) { m_tdType = ((int)MetadataTokenType.TypeDef); m_isHiddenGlobalType = true; @@ -469,7 +469,7 @@ private TypeBuilder(string szName, int genParamPos, TypeBuilder declType) } internal TypeBuilder( - string fullname, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces, ModuleBuilder module, + string fullname, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces, RuntimeModuleBuilder module, PackingSize iPackingSize, int iTypeSize, TypeBuilder? enclosingType) { ArgumentException.ThrowIfNullOrEmpty(fullname); @@ -657,7 +657,7 @@ internal void ThrowIfCreated() internal object SyncRoot => m_module.SyncRoot; - internal ModuleBuilder GetModuleBuilder() + internal RuntimeModuleBuilder GetModuleBuilder() { return m_module; } @@ -1213,7 +1213,7 @@ private void DefineMethodOverrideNoLock(MethodInfo methodInfoBody, MethodInfo me int tkBody = m_module.GetMethodToken(methodInfoBody); int tkDecl = m_module.GetMethodToken(methodInfoDeclaration); - ModuleBuilder module = m_module; + RuntimeModuleBuilder module = m_module; DefineMethodImpl(new QCallModule(ref module), m_tdType, tkBody, tkDecl); } @@ -1343,7 +1343,7 @@ public MethodBuilder DefinePInvokeMethod(string name, string dllName, string ent break; } - ModuleBuilder module = m_module; + RuntimeModuleBuilder module = m_module; SetPInvokeData(new QCallModule(ref module), dllName, entryName, @@ -1615,7 +1615,7 @@ private PropertyBuilder DefinePropertyNoLock(string name, PropertyAttributes att // get the signature in byte form sigBytes = sigHelper.InternalGetSignature(out int sigLength); - ModuleBuilder module = m_module; + RuntimeModuleBuilder module = m_module; int prToken = DefineProperty( new QCallModule(ref module), @@ -1657,7 +1657,7 @@ private EventBuilder DefineEventNoLock(string name, EventAttributes attributes, tkType = m_module.GetTypeTokenInternal(eventtype); // Internal helpers to define property records - ModuleBuilder module = m_module; + RuntimeModuleBuilder module = m_module; evToken = DefineEvent( new QCallModule(ref module), m_tdType, @@ -1719,7 +1719,7 @@ private EventBuilder DefineEventNoLock(string name, EventAttributes attributes, tkParent = m_module.GetTypeTokenInternal(m_typeParent); } - ModuleBuilder module = m_module; + RuntimeModuleBuilder module = m_module; if (IsGenericParameter) { @@ -1926,7 +1926,7 @@ public void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAc ThrowIfCreated(); int tkInterface = m_module.GetTypeTokenInternal(interfaceType); - ModuleBuilder module = m_module; + RuntimeModuleBuilder module = m_module; AddInterfaceImpl(new QCallModule(ref module), m_tdType, tkInterface); m_typeInterfaces!.Add(interfaceType); @@ -1948,14 +1948,15 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); - DefineCustomAttribute(m_module, m_tdType, ((ModuleBuilder)m_module).GetConstructorToken(con), binaryAttribute); + DefineCustomAttribute(m_module, m_tdType, ((RuntimeModuleBuilder)m_module).GetConstructorToken(con), + binaryAttribute); } public void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); - customBuilder.CreateCustomAttribute((ModuleBuilder)m_module, m_tdType); + customBuilder.CreateCustomAttribute((RuntimeModuleBuilder)m_module, m_tdType); } #endregion diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj index a7a97332ec947..18b012d00e33a 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj @@ -136,7 +136,6 @@ - diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index 45f413b369fdf..30222ba82bfb1 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -6,8 +6,20 @@ namespace System.Reflection.Emit { - public partial class ModuleBuilder : Module + public abstract class ModuleBuilder : Module { + protected ModuleBuilder() + { + } + + // The following virtual methods are abstract in reference assembly. We keep them as virtual to maintain backward compatibility. + + public virtual void CreateGlobalFunctions() + => CreateGlobalFunctions(); + + public virtual EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type underlyingType) + => DefineEnum(name, visibility, underlyingType); + public MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, Type? returnType, Type[]? parameterTypes) => DefineGlobalMethod(name, attributes, CallingConventions.Standard, returnType, null, null, parameterTypes, null, null); @@ -15,6 +27,16 @@ public MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes Type? returnType, Type[]? parameterTypes) => DefineGlobalMethod(name, attributes, callingConvention, returnType, null, null, parameterTypes, null, null); + public virtual MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, + Type? returnType, Type[]? requiredReturnTypeCustomModifiers, Type[]? optionalReturnTypeCustomModifiers, + Type[]? parameterTypes, Type[][]? requiredParameterTypeCustomModifiers, Type[][]? optionalParameterTypeCustomModifiers) + => DefineGlobalMethod(name, attributes, callingConvention, + returnType, requiredReturnTypeCustomModifiers, optionalReturnTypeCustomModifiers, + parameterTypes, requiredParameterTypeCustomModifiers, optionalParameterTypeCustomModifiers); + + public virtual FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) + => DefineInitializedData(name, data, attributes); + [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] public MethodBuilder DefinePInvokeMethod(string name, string dllName, MethodAttributes attributes, CallingConventions callingConvention, @@ -22,6 +44,13 @@ public MethodBuilder DefinePInvokeMethod(string name, string dllName, => DefinePInvokeMethod(name, dllName, name, attributes, callingConvention, returnType, parameterTypes, nativeCallConv, nativeCharSet); + [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] + public virtual MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, + MethodAttributes attributes, CallingConventions callingConvention, + Type? returnType, Type[]? parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet) + => DefinePInvokeMethod(name, dllName, entryName, attributes, callingConvention, + returnType, parameterTypes, nativeCallConv, nativeCharSet); + public TypeBuilder DefineType(string name) => DefineType(name, TypeAttributes.NotPublic, null, null); @@ -32,6 +61,10 @@ public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) => DefineType(name, attr, parent, null); + public virtual TypeBuilder DefineType(string name, TypeAttributes attr, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) + => DefineType(name, attr, parent, interfaces); + public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, int typesize) => DefineType(name, attr, parent, PackingSize.Unspecified, typesize); @@ -39,5 +72,28 @@ public TypeBuilder DefineType(string name, TypeAttributes attr, public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packsize) => DefineType(name, attr, parent, packsize, TypeBuilder.UnspecifiedTypeSize); + + public virtual TypeBuilder DefineType(string name, TypeAttributes attr, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packingSize, int typesize) + => DefineType(name, attr, parent, packingSize, typesize); + + public virtual FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) + => DefineUninitializedData(name, size, attributes); + + public virtual MethodInfo GetArrayMethod(Type arrayClass, string methodName, CallingConventions callingConvention, + Type? returnType, Type[]? parameterTypes) + => GetArrayMethod(arrayClass, methodName, callingConvention, returnType, parameterTypes); + + public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + => SetCustomAttribute(con, binaryAttribute); + + public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) + => SetCustomAttribute(customBuilder); + + public abstract int GetTypeToken(Type type, bool getGenericDefinition = true); + public abstract int GetFieldToken(FieldInfo field); + public abstract int GetConstructorToken(ConstructorInfo con); + public abstract int GetSignatureToken(SignatureHelper sigHelper); + public abstract int GetStringConstant(string str); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/QCallHandles.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/QCallHandles.cs index e3020176fa2be..7bd401ef58f75 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/QCallHandles.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/QCallHandles.cs @@ -57,7 +57,7 @@ internal QCallModule(ref System.Reflection.RuntimeModule module) _module = module.GetUnderlyingNativeHandle(); } - internal QCallModule(ref System.Reflection.Emit.ModuleBuilder module) + internal QCallModule(ref System.Reflection.Emit.RuntimeModuleBuilder module) { _ptr = Unsafe.AsPointer(ref module); _module = module.InternalModule.GetUnderlyingNativeHandle(); diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeModuleBuilder.cs similarity index 100% rename from src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs rename to src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeModuleBuilder.cs From 6fe424046287dce685cca6b218a45846ebe4fb2d Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Tue, 22 Mar 2022 20:39:09 -0700 Subject: [PATCH 09/36] Abstract TypeBuilder and EventBuilder --- .../System/Reflection/Emit/AssemblyBuilder.cs | 9 +- .../Reflection/Emit/ConstructorBuilder.cs | 6 +- .../Reflection/Emit/CustomAttributeBuilder.cs | 10 +- .../src/System/Reflection/Emit/EnumBuilder.cs | 4 +- .../System/Reflection/Emit/EventBuilder.cs | 24 +- .../System/Reflection/Emit/FieldBuilder.cs | 12 +- .../Emit/GenericTypeParameterBuilder.cs | 4 +- .../System/Reflection/Emit/MethodBuilder.cs | 16 +- .../System/Reflection/Emit/ModuleBuilder.cs | 52 +- .../Reflection/Emit/ParameterBuilder.cs | 6 +- .../System/Reflection/Emit/PropertyBuilder.cs | 10 +- .../System/Reflection/Emit/SignatureHelper.cs | 6 +- .../src/System/Reflection/Emit/TypeBuilder.cs | 123 ++-- .../src/System.Private.CoreLib.csproj | 2 - .../System/Reflection/Emit/EventBuilder.cs | 37 -- .../src/System/Reflection/Emit/TypeBuilder.cs | 587 ------------------ .../System.Private.CoreLib.Shared.projitems | 1 + .../System/Reflection/Emit/EventBuilder.cs | 30 + .../System/Reflection/Emit/ModuleBuilder.cs | 4 + .../src/System/Reflection/Emit/TypeBuilder.cs | 123 +++- 20 files changed, 306 insertions(+), 760 deletions(-) delete mode 100644 src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs delete mode 100644 src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs create mode 100644 src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index 5b16e6c5fa171..0f1141d9c9e8c 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -145,7 +145,10 @@ internal RuntimeAssemblyBuilder(AssemblyName name, { foreach (CustomAttributeBuilder assemblyAttribute in assemblyAttributes) { - SetCustomAttribute(assemblyAttribute); + foreach (CustomAttributeBuilder assemblyAttribute in assemblyAttributes) + { + SetCustomAttribute(assemblyAttribute); + } } } } @@ -324,7 +327,7 @@ public override Assembly GetSatelliteAssembly(CultureInfo culture, Version? vers if (_isManifestModuleUsedAsDefinedModule) { - if (ModuleBuilder.ManifestModuleName == name) + if (RuntimeModuleBuilder.ManifestModuleName == name) { return _manifestModuleBuilder; } @@ -342,7 +345,7 @@ public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttrib lock (SyncRoot) { - TypeBuilder.DefineCustomAttribute( + RuntimeTypeBuilder.DefineCustomAttribute( _manifestModuleBuilder, // pass in the in-memory assembly module AssemblyDefToken, _manifestModuleBuilder.GetConstructorToken(con), diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs index cd6e6b394036f..6a5bc678c60a1 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs @@ -14,7 +14,7 @@ public sealed class ConstructorBuilder : ConstructorInfo #region Constructor internal ConstructorBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention, - Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers, RuntimeModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TypeBuilder type) + Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers, RuntimeModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] RuntimeTypeBuilder type) { m_methodBuilder = new MethodBuilder(name, attributes, callingConvention, null, null, null, parameterTypes, requiredCustomModifiers, optionalCustomModifiers, mod, type); @@ -27,7 +27,7 @@ internal ConstructorBuilder(string name, MethodAttributes attributes, CallingCon } internal ConstructorBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention, - Type[]? parameterTypes, RuntimeModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TypeBuilder type) : + Type[]? parameterTypes, RuntimeModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] RuntimeTypeBuilder type) : this(name, attributes, callingConvention, parameterTypes, null, null, mod, type) { } @@ -41,7 +41,7 @@ internal override Type[] GetParameterTypes() } [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - private TypeBuilder GetTypeBuilder() + private RuntimeTypeBuilder GetTypeBuilder() { return m_methodBuilder.GetTypeBuilder(); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs index 3ba20a31bcac6..db6402d8e3f63 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs @@ -150,14 +150,14 @@ public CustomAttributeBuilder(ConstructorInfo con, object?[] constructorArgs, Pr // Might have failed check because one type is a XXXBuilder // and the other is not. Deal with these special cases // separately. - if (!TypeBuilder.IsTypeEqual(property.DeclaringType, con.DeclaringType)) + if (!RuntimeTypeBuilder.IsTypeEqual(property.DeclaringType, con.DeclaringType)) { // IsSubclassOf is overloaded to do the right thing if // the constructor is a TypeBuilder, but we still need // to deal with the case where the property's declaring // type is one. if (!(property.DeclaringType is TypeBuilder) || - !con.DeclaringType.IsSubclassOf(((TypeBuilder)property.DeclaringType).BakedRuntimeType)) + !con.DeclaringType.IsSubclassOf(((RuntimeTypeBuilder)property.DeclaringType).BakedRuntimeType)) throw new ArgumentException(SR.Argument_BadPropertyForConstructorBuilder); } } @@ -204,14 +204,14 @@ public CustomAttributeBuilder(ConstructorInfo con, object?[] constructorArgs, Pr // Might have failed check because one type is a XXXBuilder // and the other is not. Deal with these special cases // separately. - if (!TypeBuilder.IsTypeEqual(namedField.DeclaringType, con.DeclaringType)) + if (!RuntimeTypeBuilder.IsTypeEqual(namedField.DeclaringType, con.DeclaringType)) { // IsSubclassOf is overloaded to do the right thing if // the constructor is a TypeBuilder, but we still need // to deal with the case where the field's declaring // type is one. if (!(namedField.DeclaringType is TypeBuilder) || - !con.DeclaringType.IsSubclassOf(((TypeBuilder)namedFields[i].DeclaringType!).BakedRuntimeType)) + !con.DeclaringType.IsSubclassOf(((RuntimeTypeBuilder)namedFields[i].DeclaringType!).BakedRuntimeType)) throw new ArgumentException(SR.Argument_BadFieldForConstructorBuilder); } } @@ -517,7 +517,7 @@ private static void EmitValue(BinaryWriter writer, Type type, object? value) // return the byte interpretation of the custom attribute internal void CreateCustomAttribute(RuntimeModuleBuilder mod, int tkOwner) { - TypeBuilder.DefineCustomAttribute(mod, tkOwner, mod.GetConstructorToken(m_con), m_blob); + RuntimeTypeBuilder.DefineCustomAttribute(mod, tkOwner, mod.GetConstructorToken(m_con), m_blob); } } } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs index cbae60503120a..bb4d44e908b81 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs @@ -350,7 +350,7 @@ internal EnumBuilder( // Client should not set any bits other than the visibility bits. if ((visibility & ~TypeAttributes.VisibilityMask) != 0) throw new ArgumentException(SR.Argument_ShouldOnlySetVisibilityFlags, nameof(name)); - m_typeBuilder = new TypeBuilder(name, visibility | TypeAttributes.Sealed, typeof(System.Enum), null, module, PackingSize.Unspecified, TypeBuilder.UnspecifiedTypeSize, null); + m_typeBuilder = new RuntimeTypeBuilder(name, visibility | TypeAttributes.Sealed, typeof(System.Enum), null, module, PackingSize.Unspecified, TypeBuilder.UnspecifiedTypeSize, null); // Define the underlying field for the enum. It will be a non-static, private field with special name bit set. m_underlyingField = m_typeBuilder.DefineField("value__", underlyingType, FieldAttributes.Public | FieldAttributes.SpecialName | FieldAttributes.RTSpecialName); @@ -362,7 +362,7 @@ internal EnumBuilder( * */ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - internal TypeBuilder m_typeBuilder; + internal RuntimeTypeBuilder m_typeBuilder; private FieldBuilder m_underlyingField; } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs index c7051c65c2d86..f1c2a658c46f0 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs @@ -20,16 +20,16 @@ namespace System.Reflection.Emit // A EventBuilder is always associated with a TypeBuilder. The TypeBuilder.DefineEvent // method will return a new EventBuilder to a client. // - public sealed class EventBuilder + internal sealed class RuntimeEventBuilder : EventBuilder { // Constructs a EventBuilder. // - internal EventBuilder( + internal RuntimeEventBuilder( RuntimeModuleBuilder mod, // the module containing this EventBuilder string name, // Event name EventAttributes attr, // event attribute such as Public, Private, and Protected defined above // int eventType, // event type - TypeBuilder type, // containing type + RuntimeTypeBuilder type, // containing type int evToken) { m_name = name; @@ -52,43 +52,43 @@ private void SetMethodSemantics(MethodBuilder mdBuilder, MethodSemanticsAttribut m_type.ThrowIfCreated(); RuntimeModuleBuilder module = m_module; - TypeBuilder.DefineMethodSemantics( + RuntimeTypeBuilder.DefineMethodSemantics( new QCallModule(ref module), m_evToken, semantics, mdBuilder.MetadataToken); } - public void SetAddOnMethod(MethodBuilder mdBuilder) + public override void SetAddOnMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.AddOn); } - public void SetRemoveOnMethod(MethodBuilder mdBuilder) + public override void SetRemoveOnMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.RemoveOn); } - public void SetRaiseMethod(MethodBuilder mdBuilder) + public override void SetRaiseMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Fire); } - public void AddOtherMethod(MethodBuilder mdBuilder) + public override void AddOtherMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Other); } // Use this function if client decides to form the custom attribute blob themselves - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); m_type.ThrowIfCreated(); - TypeBuilder.DefineCustomAttribute( + RuntimeTypeBuilder.DefineCustomAttribute( m_module, m_evToken, m_module.GetConstructorToken(con), @@ -96,7 +96,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) } // Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); @@ -109,6 +109,6 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) private int m_evToken; // The token of this event private RuntimeModuleBuilder m_module; private EventAttributes m_attributes; - private TypeBuilder m_type; + private RuntimeTypeBuilder m_type; } } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs index b18157011d613..8eeabc1a907dc 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs @@ -10,14 +10,14 @@ public sealed class FieldBuilder : FieldInfo { #region Private Data Members private int m_fieldTok; - private TypeBuilder m_typeBuilder; + private RuntimeTypeBuilder m_typeBuilder; private string m_fieldName; private FieldAttributes m_Attributes; private Type m_fieldType; #endregion #region Constructor - internal FieldBuilder(TypeBuilder typeBuilder, string fieldName, Type type, + internal FieldBuilder(RuntimeTypeBuilder typeBuilder, string fieldName, Type type, Type[]? requiredCustomModifiers, Type[]? optionalCustomModifiers, FieldAttributes attributes) { ArgumentException.ThrowIfNullOrEmpty(fieldName); @@ -41,7 +41,7 @@ internal FieldBuilder(TypeBuilder typeBuilder, string fieldName, Type type, byte[] signature = sigHelp.InternalGetSignature(out int sigLength); RuntimeModuleBuilder module = m_typeBuilder.GetModuleBuilder(); - m_fieldTok = TypeBuilder.DefineField(new QCallModule(ref module), + m_fieldTok = RuntimeTypeBuilder.DefineField(new QCallModule(ref module), typeBuilder.TypeToken, fieldName, signature, sigLength, m_Attributes); } @@ -137,7 +137,7 @@ public void SetOffset(int iOffset) m_typeBuilder.ThrowIfCreated(); RuntimeModuleBuilder module = m_typeBuilder.GetModuleBuilder(); - TypeBuilder.SetFieldLayoutOffset(new QCallModule(ref module), m_fieldTok, iOffset); + RuntimeTypeBuilder.SetFieldLayoutOffset(new QCallModule(ref module), m_fieldTok, iOffset); } public void SetConstant(object? defaultValue) @@ -151,7 +151,7 @@ public void SetConstant(object? defaultValue) throw new ArgumentException(SR.Argument_ConstantNull); } - TypeBuilder.SetConstantValue(m_typeBuilder.GetModuleBuilder(), m_fieldTok, m_fieldType, defaultValue); + RuntimeTypeBuilder.SetConstantValue(m_typeBuilder.GetModuleBuilder(), m_fieldTok, m_fieldType, defaultValue); } public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) @@ -163,7 +163,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) RuntimeModuleBuilder moduleBuilder = (RuntimeModuleBuilder)m_typeBuilder.Module; - TypeBuilder.DefineCustomAttribute(moduleBuilder, + RuntimeTypeBuilder.DefineCustomAttribute(moduleBuilder, m_fieldTok, moduleBuilder.GetConstructorToken(con), binaryAttribute); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs index 2d8935e7b09c7..3938b9b06ac7d 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs @@ -15,11 +15,11 @@ public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) } #region Private Data Members - internal TypeBuilder m_type; + internal RuntimeTypeBuilder m_type; #endregion #region Constructor - internal GenericTypeParameterBuilder(TypeBuilder type) + internal GenericTypeParameterBuilder(RuntimeTypeBuilder type) { m_type = type; } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs index 5fcc4267ecf7e..e6b1a9f161ca2 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs @@ -20,7 +20,7 @@ public sealed class MethodBuilder : MethodInfo private readonly RuntimeModuleBuilder m_module; [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - internal TypeBuilder m_containingType; + internal RuntimeTypeBuilder m_containingType; // IL private int[]? m_mdMethodFixups; // The location of all of the token fixups. Null means no fixups. @@ -59,7 +59,7 @@ public sealed class MethodBuilder : MethodInfo internal MethodBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers, - RuntimeModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TypeBuilder type) + RuntimeModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] RuntimeTypeBuilder type) { ArgumentException.ThrowIfNullOrEmpty(name); @@ -348,7 +348,7 @@ internal bool IsTypeCreated() } [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - internal TypeBuilder GetTypeBuilder() + internal RuntimeTypeBuilder GetTypeBuilder() { return m_containingType; } @@ -535,7 +535,7 @@ public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] nam m_bIsGenMethDef = true; m_inst = new GenericTypeParameterBuilder[names.Length]; for (int i = 0; i < names.Length; i++) - m_inst[i] = new GenericTypeParameterBuilder(new TypeBuilder(names[i], i, this)); + m_inst[i] = new GenericTypeParameterBuilder(new RuntimeTypeBuilder(names[i], i, this)); return m_inst; } @@ -602,14 +602,14 @@ private int GetTokenNoLock() byte[] sigBytes = GetMethodSignature().InternalGetSignature(out int sigLength); RuntimeModuleBuilder module = m_module; - int token = TypeBuilder.DefineMethod(new QCallModule(ref module), m_containingType.MetadataToken, m_strName, sigBytes, sigLength, Attributes); + int token = RuntimeTypeBuilder.DefineMethod(new QCallModule(ref module), m_containingType.MetadataToken, m_strName, sigBytes, sigLength, Attributes); m_token = token; if (m_inst != null) foreach (GenericTypeParameterBuilder tb in m_inst) if (!tb.m_type.IsCreated()) tb.m_type.CreateType(); - TypeBuilder.SetMethodImpl(new QCallModule(ref module), token, m_dwMethodImplFlags); + RuntimeTypeBuilder.SetMethodImpl(new QCallModule(ref module), token, m_dwMethodImplFlags); return m_token; } @@ -678,7 +678,7 @@ public void SetImplementationFlags(MethodImplAttributes attributes) m_canBeRuntimeImpl = true; RuntimeModuleBuilder module = m_module; - TypeBuilder.SetMethodImpl(new QCallModule(ref module), MetadataToken, attributes); + RuntimeTypeBuilder.SetMethodImpl(new QCallModule(ref module), MetadataToken, attributes); } public ILGenerator GetILGenerator() @@ -729,7 +729,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) ThrowIfGeneric(); - TypeBuilder.DefineCustomAttribute(m_module, MetadataToken, + RuntimeTypeBuilder.DefineCustomAttribute(m_module, MetadataToken, ((RuntimeModuleBuilder)m_module).GetConstructorToken(con), binaryAttribute); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index 328b25602bfec..85c77444c7a9a 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -68,7 +68,7 @@ internal RuntimeModuleBuilder(RuntimeAssemblyBuilder assemblyBuilder, RuntimeMod _internalModule = internalModule; _assemblyBuilder = assemblyBuilder; - _globalTypeBuilder = new TypeBuilder(this); + _globalTypeBuilder = new RuntimeTypeBuilder(this); _typeBuilderDict = new Dictionary(); } @@ -749,7 +749,7 @@ public override TypeBuilder DefineType(string name, TypeAttributes attr, [Dynami { lock (SyncRoot) { - return new TypeBuilder(name, attr, parent, null, this, packingSize, typesize, null); + return new RuntimeTypeBuilder(name, attr, parent, null, this, packingSize, typesize, null); } } @@ -757,7 +757,7 @@ public override TypeBuilder DefineType(string name, TypeAttributes attr, [Dynami { lock (SyncRoot) { - return new TypeBuilder(name, attr, parent, interfaces, this, PackingSize.Unspecified, TypeBuilder.UnspecifiedTypeSize, null); + return new RuntimeTypeBuilder(name, attr, parent, interfaces, this, PackingSize.Unspecified, TypeBuilder.UnspecifiedTypeSize, null); } } @@ -934,10 +934,10 @@ private int GetTypeTokenWorkerNoLock(Type type, bool getGenericDefinition) if (refedModule.Equals(this)) { // no need to do anything additional other than defining the TypeRef Token - TypeBuilder? typeBuilder; + RuntimeTypeBuilder? typeBuilder; EnumBuilder? enumBuilder = type as EnumBuilder; - typeBuilder = enumBuilder != null ? enumBuilder.m_typeBuilder : type as TypeBuilder; + typeBuilder = enumBuilder != null ? enumBuilder.m_typeBuilder : type as RuntimeTypeBuilder; if (typeBuilder != null) { @@ -1114,7 +1114,7 @@ internal int GetMethodTokenInternal(MethodBase method, Type[]? optionalParameter byte[] sigBytes = SignatureHelper.GetMethodSpecSigHelper( this, methodInfo.GetGenericArguments()).InternalGetSignature(out int sigLength); RuntimeModuleBuilder thisModule = this; - tk = TypeBuilder.DefineMethodSpec(new QCallModule(ref thisModule), tk, sigBytes, sigLength); + tk = RuntimeTypeBuilder.DefineMethodSpec(new QCallModule(ref thisModule), tk, sigBytes, sigLength); } else { @@ -1266,11 +1266,7 @@ private int GetFieldTokenNoLock(FieldInfo field) return mr; } -<<<<<<< HEAD - internal int GetStringConstant(string str) -======= - public override int GetStringConstant(string str!!) ->>>>>>> 3bca7cb8116... Factor out RuntimeModuleBuilder + public override int GetStringConstant(string str) { ArgumentNullException.ThrowIfNull(str); @@ -1280,11 +1276,7 @@ public override int GetStringConstant(string str!!) return GetStringConstant(new QCallModule(ref thisModule), str, str.Length); } -<<<<<<< HEAD - internal int GetSignatureToken(SignatureHelper sigHelper) -======= - public override int GetSignatureToken(SignatureHelper sigHelper!!) ->>>>>>> 3bca7cb8116... Factor out RuntimeModuleBuilder + public override int GetSignatureToken(SignatureHelper sigHelper) { ArgumentNullException.ThrowIfNull(sigHelper); @@ -1293,7 +1285,7 @@ public override int GetSignatureToken(SignatureHelper sigHelper!!) // Get the signature in byte form. byte[] sigBytes = sigHelper.InternalGetSignature(out int sigLength); RuntimeModuleBuilder thisModule = this; - return TypeBuilder.GetTokenFromSig(new QCallModule(ref thisModule), sigBytes, sigLength); + return RuntimeTypeBuilder.GetTokenFromSig(new QCallModule(ref thisModule), sigBytes, sigLength); } internal int GetSignatureToken(byte[] sigBytes, int sigLength) @@ -1304,34 +1296,26 @@ internal int GetSignatureToken(byte[] sigBytes, int sigLength) Buffer.BlockCopy(sigBytes, 0, localSigBytes, 0, sigBytes.Length); RuntimeModuleBuilder thisModule = this; - return TypeBuilder.GetTokenFromSig(new QCallModule(ref thisModule), localSigBytes, sigLength); + return RuntimeTypeBuilder.GetTokenFromSig(new QCallModule(ref thisModule), localSigBytes, sigLength); } #endregion #region Other -<<<<<<< HEAD - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) -======= - public override void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute!!) ->>>>>>> 3bca7cb8116... Factor out RuntimeModuleBuilder + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); - TypeBuilder.DefineCustomAttribute( + RuntimeTypeBuilder.DefineCustomAttribute( this, 1, // This is hard coding the module token to 1 GetConstructorToken(con), binaryAttribute); } -<<<<<<< HEAD - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) -======= - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) ->>>>>>> 3bca7cb8116... Factor out RuntimeModuleBuilder + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); @@ -1341,5 +1325,15 @@ public override void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) #endregion #endregion + + public override ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) + => RuntimeTypeBuilder.GetConstructor(type, constructor); + + public override FieldInfo GetField(Type type, FieldInfo field) + => RuntimeTypeBuilder.GetField(type, field); + + public override MethodInfo GetMethod(Type type, MethodInfo method) + => RuntimeTypeBuilder.GetMethod(type, method); + } } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs index f3c97106fcc68..e64f723020352 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs @@ -10,7 +10,7 @@ public class ParameterBuilder // Set the default value of the parameter public virtual void SetConstant(object? defaultValue) { - TypeBuilder.SetConstantValue( + RuntimeTypeBuilder.SetConstantValue( _methodBuilder.GetModuleBuilder(), _token, _position == 0 ? _methodBuilder.ReturnType : _methodBuilder.m_parameterTypes![_position - 1], @@ -23,7 +23,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); - TypeBuilder.DefineCustomAttribute( + RuntimeTypeBuilder.DefineCustomAttribute( _methodBuilder.GetModuleBuilder(), _token, ((RuntimeModuleBuilder)_methodBuilder.GetModule()).GetConstructorToken(con), @@ -49,7 +49,7 @@ internal ParameterBuilder( _methodBuilder = methodBuilder; _attributes = attributes; RuntimeModuleBuilder module = _methodBuilder.GetModuleBuilder(); - _token = TypeBuilder.SetParamInfo( + _token = RuntimeTypeBuilder.SetParamInfo( new QCallModule(ref module), _methodBuilder.MetadataToken, sequence, diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs index 94a0cdd9795d9..fa8ef294ce24b 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs @@ -31,7 +31,7 @@ internal PropertyBuilder( PropertyAttributes attr, // property attribute such as DefaultProperty, Bindable, DisplayBind, etc Type returnType, // return type of the property. int prToken, // the metadata token for this property - TypeBuilder containingType) // the containing type + RuntimeTypeBuilder containingType) // the containing type { ArgumentException.ThrowIfNullOrEmpty(name); if (name[0] == '\0') @@ -52,7 +52,7 @@ public void SetConstant(object? defaultValue) { m_containingType.ThrowIfCreated(); - TypeBuilder.SetConstantValue( + RuntimeTypeBuilder.SetConstantValue( m_moduleBuilder, m_tkProperty, m_returnType, @@ -72,7 +72,7 @@ private void SetMethodSemantics(MethodBuilder mdBuilder, MethodSemanticsAttribut m_containingType.ThrowIfCreated(); RuntimeModuleBuilder module = m_moduleBuilder; - TypeBuilder.DefineMethodSemantics( + RuntimeTypeBuilder.DefineMethodSemantics( new QCallModule(ref module), m_tkProperty, semantics, @@ -104,7 +104,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) ArgumentNullException.ThrowIfNull(binaryAttribute); m_containingType.ThrowIfCreated(); - TypeBuilder.DefineCustomAttribute( + RuntimeTypeBuilder.DefineCustomAttribute( m_moduleBuilder, m_tkProperty, m_moduleBuilder.GetConstructorToken(con), @@ -214,6 +214,6 @@ public override bool IsDefined(Type attributeType, bool inherit) private Type m_returnType; // property's return type private MethodInfo? m_getMethod; private MethodInfo? m_setMethod; - private TypeBuilder m_containingType; + private RuntimeTypeBuilder m_containingType; } } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs index 17362b3512291..4efc8dbb25026 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs @@ -349,9 +349,9 @@ private void AddOneArgTypeHelperWorker(Type clsArgument, bool lastWasGenericInst foreach (Type t in args) AddOneArgTypeHelper(t); } - else if (clsArgument is TypeBuilder) + else if (clsArgument is RuntimeTypeBuilder) { - TypeBuilder clsBuilder = (TypeBuilder)clsArgument; + RuntimeTypeBuilder clsBuilder = (RuntimeTypeBuilder)clsArgument; int tkType; if (clsBuilder.Module.Equals(m_module)) @@ -374,7 +374,7 @@ private void AddOneArgTypeHelperWorker(Type clsArgument, bool lastWasGenericInst } else if (clsArgument is EnumBuilder) { - TypeBuilder clsBuilder = ((EnumBuilder)clsArgument).m_typeBuilder; + RuntimeTypeBuilder clsBuilder = ((EnumBuilder)clsArgument).m_typeBuilder; int tkType; if (clsBuilder.Module.Equals(m_module)) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index 662c6fc4c1bbe..b50a5826f893a 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -10,7 +10,7 @@ namespace System.Reflection.Emit { - public sealed partial class TypeBuilder : TypeInfo + internal sealed partial class RuntimeTypeBuilder : TypeBuilder { public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) { @@ -60,7 +60,7 @@ public void Bake(RuntimeModuleBuilder module, int token) #region Public Static Methods [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", Justification = "MakeGenericType is only called on a TypeBuilder which is not subject to trimming")] - public static MethodInfo GetMethod(Type type, MethodInfo method) + public static new MethodInfo GetMethod(Type type, MethodInfo method) { if (type is not TypeBuilder && type is not TypeBuilderInstantiation) throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); @@ -95,7 +95,7 @@ public static MethodInfo GetMethod(Type type, MethodInfo method) [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", Justification = "MakeGenericType is only called on a TypeBuilder which is not subject to trimming")] - public static ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) + public static new ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) { if (type is not TypeBuilder && type is not TypeBuilderInstantiation) throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); @@ -118,7 +118,7 @@ public static ConstructorInfo GetConstructor(Type type, ConstructorInfo construc [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", Justification = "MakeGenericType is only called on a TypeBuilder which is not subject to trimming")] - public static FieldInfo GetField(Type type, FieldInfo field) + public static new FieldInfo GetField(Type type, FieldInfo field) { if (type is not TypeBuilder and not TypeBuilderInstantiation) throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); @@ -231,15 +231,15 @@ internal static bool IsTypeEqual(Type? t1, Type? t2) // Maybe we are lucky that they are equal in the first place if (t1 == t2) return true; - TypeBuilder? tb1 = null; - TypeBuilder? tb2 = null; + RuntimeTypeBuilder? tb1 = null; + RuntimeTypeBuilder? tb2 = null; Type? runtimeType1; Type? runtimeType2; // set up the runtimeType and TypeBuilder type corresponding to t1 and t2 - if (t1 is TypeBuilder) + if (t1 is RuntimeTypeBuilder) { - tb1 = (TypeBuilder)t1; + tb1 = (RuntimeTypeBuilder)t1; // This will be null if it is not baked. runtimeType1 = tb1.m_bakedRuntimeType; } @@ -248,9 +248,9 @@ internal static bool IsTypeEqual(Type? t1, Type? t2) runtimeType1 = t1; } - if (t2 is TypeBuilder) + if (t2 is RuntimeTypeBuilder) { - tb2 = (TypeBuilder)t2; + tb2 = (RuntimeTypeBuilder)t2; // This will be null if it is not baked. runtimeType2 = tb2.m_bakedRuntimeType; } @@ -312,7 +312,7 @@ internal static unsafe void SetConstantValue(RuntimeModuleBuilder module, int tk if (type != enumBldr.m_typeBuilder.m_bakedRuntimeType && type != underlyingType) throw new ArgumentException(SR.Argument_ConstantDoesntMatch); } - else if (destType is TypeBuilder typeBldr) + else if (destType is RuntimeTypeBuilder typeBldr) { underlyingType = typeBldr.m_enumUnderlyingType; @@ -411,7 +411,7 @@ internal static unsafe void SetConstantValue(RuntimeModuleBuilder module, int tk private int m_constructorCount; private readonly int m_iTypeSize; private readonly PackingSize m_iPackingSize; - private readonly TypeBuilder? m_DeclaringType; + private readonly RuntimeTypeBuilder? m_DeclaringType; // We cannot store this on EnumBuilder because users can define enum types manually using TypeBuilder. private Type? m_enumUnderlyingType; @@ -430,7 +430,7 @@ internal static unsafe void SetConstantValue(RuntimeModuleBuilder module, int tk #region Constructor // ctor for the global (module) type - internal TypeBuilder(RuntimeModuleBuilder module) + internal RuntimeTypeBuilder(RuntimeModuleBuilder module) { m_tdType = ((int)MetadataTokenType.TypeDef); m_isHiddenGlobalType = true; @@ -442,7 +442,7 @@ internal TypeBuilder(RuntimeModuleBuilder module) } // ctor for generic method parameter - internal TypeBuilder(string szName, int genParamPos, MethodBuilder declMeth) + internal RuntimeTypeBuilder(string szName, int genParamPos, MethodBuilder declMeth) { m_strName = szName; m_genParamPos = genParamPos; @@ -456,7 +456,7 @@ internal TypeBuilder(string szName, int genParamPos, MethodBuilder declMeth) } // ctor for generic type parameter - private TypeBuilder(string szName, int genParamPos, TypeBuilder declType) + private RuntimeTypeBuilder(string szName, int genParamPos, RuntimeTypeBuilder declType) { m_strName = szName; m_genParamPos = genParamPos; @@ -468,9 +468,9 @@ private TypeBuilder(string szName, int genParamPos, TypeBuilder declType) m_module = declType.GetModuleBuilder(); } - internal TypeBuilder( + internal RuntimeTypeBuilder( string fullname, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces, RuntimeModuleBuilder module, - PackingSize iPackingSize, int iTypeSize, TypeBuilder? enclosingType) + PackingSize iPackingSize, int iTypeSize, RuntimeTypeBuilder? enclosingType) { ArgumentException.ThrowIfNullOrEmpty(fullname); @@ -629,7 +629,7 @@ private void VerifyTypeAttributes(TypeAttributes attr) } } - public bool IsCreated() + public override bool IsCreated() { return m_hasBeenCreated; } @@ -691,7 +691,7 @@ internal void SetGenParamCustomAttribute(CustomAttributeBuilder customBuilder) private void SetGenParamCustomAttributeNoLock(CustAttr ca) { - m_ca ??= new List(); + m_ca ??= new List(); m_ca.Add(ca); } #endregion @@ -940,7 +940,7 @@ public override bool IsAssignableFrom([NotNullWhen(true)] Type? c) return true; Type? fromRuntimeType; - TypeBuilder? fromTypeBuilder = c as TypeBuilder; + RuntimeTypeBuilder? fromTypeBuilder = c as RuntimeTypeBuilder; if (fromTypeBuilder != null) fromRuntimeType = fromTypeBuilder.m_bakedRuntimeType; @@ -1150,7 +1150,7 @@ internal void SetInterfaces(params Type[]? interfaces) } } - public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + public override GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) { ArgumentNullException.ThrowIfNull(names); if (names.Length == 0) @@ -1164,7 +1164,7 @@ public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] nam m_inst = new GenericTypeParameterBuilder[names.Length]; for (int i = 0; i < names.Length; i++) - m_inst[i] = new GenericTypeParameterBuilder(new TypeBuilder(names[i], i, this)); + m_inst[i] = new GenericTypeParameterBuilder(new RuntimeTypeBuilder(names[i], i, this)); return m_inst; } @@ -1191,7 +1191,7 @@ public override Type MakeGenericType(params Type[] typeArguments) #endregion #region Define Method - public void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) + public override void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) { lock (SyncRoot) { @@ -1217,7 +1217,7 @@ private void DefineMethodOverrideNoLock(MethodInfo methodInfoBody, MethodInfo me DefineMethodImpl(new QCallModule(ref module), m_tdType, tkBody, tkDecl); } - public MethodBuilder DefineMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, + public override MethodBuilder DefineMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { @@ -1270,7 +1270,7 @@ private MethodBuilder DefineMethodNoLock(string name, MethodAttributes attribute } [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, + public override MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers, @@ -1358,7 +1358,7 @@ public MethodBuilder DefinePInvokeMethod(string name, string dllName, string ent #endregion #region Define Constructor - public ConstructorBuilder DefineTypeInitializer() + public override ConstructorBuilder DefineTypeInitializer() { lock (SyncRoot) { @@ -1381,7 +1381,7 @@ private ConstructorBuilder DefineTypeInitializerNoLock() return constBuilder; } - public ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes) + public override ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes) { if ((m_iAttr & TypeAttributes.Interface) == TypeAttributes.Interface) { @@ -1415,7 +1415,7 @@ private ConstructorBuilder DefineDefaultConstructorNoLock(MethodAttributes attri Type? genericTypeDefinition = m_typeParent.GetGenericTypeDefinition(); if (genericTypeDefinition is TypeBuilder) - genericTypeDefinition = ((TypeBuilder)genericTypeDefinition).m_bakedRuntimeType; + genericTypeDefinition = ((RuntimeTypeBuilder)genericTypeDefinition).m_bakedRuntimeType; if (genericTypeDefinition == null) throw new NotSupportedException(SR.NotSupported_DynamicModule); @@ -1452,7 +1452,7 @@ private ConstructorBuilder DefineDefaultConstructorNoLock(MethodAttributes attri return constBuilder; } - public ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, + public override ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers) { if ((m_iAttr & TypeAttributes.Interface) == TypeAttributes.Interface && (attributes & MethodAttributes.Static) != MethodAttributes.Static) @@ -1499,10 +1499,11 @@ private ConstructorBuilder DefineConstructorNoLock(MethodAttributes attributes, #region Define Nested Type - public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) + public override TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) { lock (SyncRoot) { +<<<<<<< HEAD return new TypeBuilder(name, attr, parent, interfaces, m_module, PackingSize.Unspecified, UnspecifiedTypeSize, this); } } @@ -1520,6 +1521,34 @@ public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [Dynamical #region Define Field public FieldBuilder DefineField(string fieldName, Type type, Type[]? requiredCustomModifiers, +======= + RuntimeAssemblyBuilder.CheckContext(parent); + RuntimeAssemblyBuilder.CheckContext(interfaces); + + return DefineNestedTypeNoLock(name, attr, parent, interfaces, PackingSize.Unspecified, UnspecifiedTypeSize); + } + } + + public override TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packSize, int typeSize) + { + lock (SyncRoot) + { + RuntimeAssemblyBuilder.CheckContext(parent); + + return DefineNestedTypeNoLock(name, attr, parent, null, packSize, typeSize); + } + } + + private TypeBuilder DefineNestedTypeNoLock(string name, TypeAttributes attr, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces, PackingSize packSize, int typeSize) + { + return new RuntimeTypeBuilder(name, attr, parent, interfaces, m_module, packSize, typeSize, this); + } + + #endregion + + #region Define Field + public override FieldBuilder DefineField(string fieldName, Type type, Type[]? requiredCustomModifiers, Type[]? optionalCustomModifiers, FieldAttributes attributes) { lock (SyncRoot) @@ -1545,7 +1574,7 @@ private FieldBuilder DefineFieldNoLock(string fieldName, Type type, Type[]? requ return new FieldBuilder(this, fieldName, type, requiredCustomModifiers, optionalCustomModifiers, attributes); } - public FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) + public override FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) { lock (SyncRoot) { @@ -1564,7 +1593,7 @@ private FieldBuilder DefineInitializedDataNoLock(string name, byte[] data, Field return DefineDataHelper(name, data, data.Length, attributes); } - public FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) + public override FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) { lock (SyncRoot) { @@ -1583,8 +1612,7 @@ private FieldBuilder DefineUninitializedDataNoLock(string name, int size, FieldA #endregion #region Define Properties and Events - - public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, CallingConventions callingConvention, + public override PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { @@ -1635,7 +1663,7 @@ private PropertyBuilder DefinePropertyNoLock(string name, PropertyAttributes att this); } - public EventBuilder DefineEvent(string name, EventAttributes attributes, Type eventtype) + public override EventBuilder DefineEvent(string name, EventAttributes attributes, Type eventtype) { lock (SyncRoot) { @@ -1666,7 +1694,7 @@ private EventBuilder DefineEventNoLock(string name, EventAttributes attributes, tkType); // create the property builder now. - return new EventBuilder( + return new RuntimeEventBuilder( m_module, name, attributes, @@ -1680,16 +1708,7 @@ private EventBuilder DefineEventNoLock(string name, EventAttributes attributes, #region Create Type [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public TypeInfo? CreateTypeInfo() - { - lock (SyncRoot) - { - return CreateTypeNoLock(); - } - } - - [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public Type? CreateType() + public override TypeInfo? CreateTypeInfo() { lock (SyncRoot) { @@ -1887,11 +1906,11 @@ private EventBuilder DefineEventNoLock(string name, EventAttributes attributes, #endregion #region Misc - public int Size => m_iTypeSize; + public override int Size => m_iTypeSize; - public PackingSize PackingSize => m_iPackingSize; + public override PackingSize PackingSize => m_iPackingSize; - public void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) + public override void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) { ThrowIfCreated(); @@ -1919,7 +1938,7 @@ public void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes } } - public void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) + public override void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) { ArgumentNullException.ThrowIfNull(interfaceType); @@ -1943,7 +1962,7 @@ internal int TypeToken } } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); @@ -1952,7 +1971,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) binaryAttribute); } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj index 18b012d00e33a..0dd6c3b635fc9 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj @@ -130,7 +130,6 @@ - @@ -140,7 +139,6 @@ - diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs deleted file mode 100644 index 7abaec6cb2ec7..0000000000000 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs +++ /dev/null @@ -1,37 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -namespace System.Reflection.Emit -{ - public sealed class EventBuilder - { - internal EventBuilder() - { - // Prevent generating a default constructor - } - - public void AddOtherMethod(MethodBuilder mdBuilder) - { - } - - public void SetAddOnMethod(MethodBuilder mdBuilder) - { - } - - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - { - } - - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) - { - } - - public void SetRaiseMethod(MethodBuilder mdBuilder) - { - } - - public void SetRemoveOnMethod(MethodBuilder mdBuilder) - { - } - } -} diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs deleted file mode 100644 index 2eb974bce303c..0000000000000 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ /dev/null @@ -1,587 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Diagnostics.CodeAnalysis; -using System.Runtime.InteropServices; - -namespace System.Reflection.Emit -{ - public sealed partial class TypeBuilder : TypeInfo - { - internal TypeBuilder() - { - // Prevent generating a default constructor - } - - public override Assembly Assembly - { - get - { - return default; - } - } - - public override string AssemblyQualifiedName - { - get - { - return default; - } - } - - public override Type BaseType - { - get - { - return default; - } - } - - public override MethodBase DeclaringMethod - { - get - { - return default; - } - } - - public override Type DeclaringType - { - get - { - return default; - } - } - - public override string FullName - { - get - { - return default; - } - } - - public override GenericParameterAttributes GenericParameterAttributes - { - get - { - return default; - } - } - - public override int GenericParameterPosition - { - get - { - return default; - } - } - - public override Guid GUID - { - get - { - return default; - } - } - - public override bool IsByRefLike - { - get - { - return default; - } - } - - public override bool IsConstructedGenericType - { - get - { - return default; - } - } - - public override bool IsGenericParameter - { - get - { - return default; - } - } - - public override bool IsGenericType - { - get - { - return default; - } - } - - public override bool IsGenericTypeDefinition - { - get - { - return default; - } - } - - public override bool IsSecurityCritical - { - get - { - return default; - } - } - - public override bool IsSecuritySafeCritical - { - get - { - return default; - } - } - - public override bool IsSecurityTransparent - { - get - { - return default; - } - } - - public override Module Module - { - get - { - return default; - } - } - - public override string Name - { - get - { - return default; - } - } - - public override string Namespace - { - get - { - return default; - } - } - - public PackingSize PackingSize - { - get - { - return default; - } - } - - public override Type ReflectedType - { - get - { - return default; - } - } - - public int Size - { - get - { - return default; - } - } - - public override RuntimeTypeHandle TypeHandle - { - get - { - return default; - } - } - - public override Type UnderlyingSystemType - { - get - { - return default; - } - } - - public void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) { } - - [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public Type? CreateType() - { - return default; - } - - [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public TypeInfo? CreateTypeInfo() - { - return default; - } - - public ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, Type[] parameterTypes, Type[][] requiredCustomModifiers, Type[][] optionalCustomModifiers) - { - return default; - } - - public ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes) - { - return default; - } - - public EventBuilder DefineEvent(string name, EventAttributes attributes, Type eventtype) - { - return default; - } - - public FieldBuilder DefineField(string fieldName, Type type, Type[] requiredCustomModifiers, Type[] optionalCustomModifiers, FieldAttributes attributes) - { - return default; - } - - public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) - { - return default; - } - - public FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) - { - return default; - } - - public MethodBuilder DefineMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers, Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers) - { - return default; - } - - public void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) - { - } - - public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type parent, PackingSize packSize, int typeSize) - { - return default; - } - - public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type parent, Type[] interfaces) - { - return default; - } - - [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers, Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers, CallingConvention nativeCallConv, CharSet nativeCharSet) - { - return default; - } - - public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers, Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers) - { - return default; - } - - public ConstructorBuilder DefineTypeInitializer() - { - return default; - } - - public FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) - { - return default; - } - - protected override TypeAttributes GetAttributeFlagsImpl() - { - return default; - } - - public static ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) - { - ReflectionEmitThrower.ThrowPlatformNotSupportedException(); - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] - protected override ConstructorInfo GetConstructorImpl(BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] - public override ConstructorInfo[] GetConstructors(BindingFlags bindingAttr) - { - return default; - } - - public override object[] GetCustomAttributes(bool inherit) - { - return default; - } - - public override object[] GetCustomAttributes(Type attributeType, bool inherit) - { - return default; - } - - public override Type GetElementType() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] - public override EventInfo GetEvent(string name, BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents)] - public override EventInfo[] GetEvents() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] - public override EventInfo[] GetEvents(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] - public override FieldInfo GetField(string name, BindingFlags bindingAttr) - { - return default; - } - - public static FieldInfo GetField(Type type, FieldInfo field) - { - ReflectionEmitThrower.ThrowPlatformNotSupportedException(); - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] - public override FieldInfo[] GetFields(BindingFlags bindingAttr) - { - return default; - } - - public override Type[] GetGenericArguments() - { - return default; - } - - public override Type GetGenericTypeDefinition() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] - [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] - public override Type GetInterface(string name, bool ignoreCase) - { - return default; - } - - public override InterfaceMapping GetInterfaceMap([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] Type interfaceType) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] - public override Type[] GetInterfaces() - { - return default; - } - - [DynamicallyAccessedMembers(GetAllMembers)] - public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(GetAllMembers)] - public override MemberInfo[] GetMembers(BindingFlags bindingAttr) - { - return default; - } - - public static MethodInfo GetMethod(Type type, MethodInfo method) - { - ReflectionEmitThrower.ThrowPlatformNotSupportedException(); - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] - protected override MethodInfo GetMethodImpl(string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] - public override MethodInfo[] GetMethods(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] - public override Type GetNestedType(string name, BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] - public override Type[] GetNestedTypes(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] - public override PropertyInfo[] GetProperties(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] - protected override PropertyInfo GetPropertyImpl(string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers) - { - return default; - } - - protected override bool HasElementTypeImpl() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public override object? InvokeMember(string name, BindingFlags invokeAttr, Binder? binder, object? target, object?[]? args, ParameterModifier[]? modifiers, Globalization.CultureInfo? culture, string[]? namedParameters) - { - return default; - } - - protected override bool IsArrayImpl() - { - return default; - } - - public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) - { - return default; - } - - public override bool IsAssignableFrom([NotNullWhen(true)] Type? c) - { - return default; - } - - protected override bool IsByRefImpl() - { - return default; - } - - protected override bool IsCOMObjectImpl() - { - return default; - } - - public bool IsCreated() - { - return default; - } - - public override bool IsDefined(Type attributeType, bool inherit) - { - return default; - } - - protected override bool IsPointerImpl() - { - return default; - } - - protected override bool IsPrimitiveImpl() - { - return default; - } - - public override bool IsSubclassOf(Type c) - { - return default; - } - - public override bool IsTypeDefinition - { - get - { - return default; - } - } - - public override bool IsSZArray - { - get - { - return default; - } - } - - public override bool IsVariableBoundArray - { - get - { - return default; - } - } - - [RequiresDynamicCode("The code for an array of the specified type might not be available.")] - public override Type MakeArrayType() - { - return default; - } - - [RequiresDynamicCode("The code for an array of the specified type might not be available.")] - public override Type MakeArrayType(int rank) - { - return default; - } - - public override Type MakeByRefType() - { - return default; - } - - [RequiresDynamicCode("The native code for this instantiation might not be available at runtime.")] - [RequiresUnreferencedCode("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] - public override Type MakeGenericType(params Type[] typeArguments) - { - return default; - } - - public override Type MakePointerType() - { - return default; - } - - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - { - } - - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) - { - } - - public void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type parent) - { - } - - public override string ToString() - { - return default; - } - } -} diff --git a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems index 04af36187e3f4..4c52a466b4712 100644 --- a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems +++ b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems @@ -594,6 +594,7 @@ + diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs new file mode 100644 index 0000000000000..3c36a478a7dd6 --- /dev/null +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs @@ -0,0 +1,30 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace System.Reflection.Emit +{ + public class EventBuilder + { + protected EventBuilder() + { + } + + public virtual void AddOtherMethod(MethodBuilder mdBuilder) + => AddOtherMethod(mdBuilder); + + public virtual void SetAddOnMethod(MethodBuilder mdBuilder) + => SetAddOnMethod(mdBuilder); + + public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + => SetCustomAttribute(con, binaryAttribute); + + public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) + => SetCustomAttribute(customBuilder); + + public virtual void SetRaiseMethod(MethodBuilder mdBuilder) + => SetRaiseMethod(mdBuilder); + + public virtual void SetRemoveOnMethod(MethodBuilder mdBuilder) + => SetRemoveOnMethod(mdBuilder); + } +} diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index 30222ba82bfb1..27919102aa85f 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -95,5 +95,9 @@ public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) public abstract int GetConstructorToken(ConstructorInfo con); public abstract int GetSignatureToken(SignatureHelper sigHelper); public abstract int GetStringConstant(string str); + + public abstract ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor); + public abstract FieldInfo GetField(Type type, FieldInfo field); + public abstract MethodInfo GetMethod(Type type, MethodInfo method); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index 47e6cecab3691..891f4245f38e7 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -6,16 +6,57 @@ namespace System.Reflection.Emit { - public partial class TypeBuilder : TypeInfo + public abstract class TypeBuilder : TypeInfo { + protected TypeBuilder() + { + } + public const int UnspecifiedTypeSize = 0; + public virtual PackingSize PackingSize + => PackingSize; + + public virtual int Size + => Size; + + public virtual void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) + => AddInterfaceImplementation(interfaceType); + + [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] + public Type? CreateType() + => CreateTypeInfo(); + + [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] + public virtual TypeInfo? CreateTypeInfo() + => CreateTypeInfo(); + public ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes) => DefineConstructor(attributes, callingConvention, parameterTypes, null, null); + public virtual ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, + Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers) + => DefineConstructor(attributes, callingConvention, parameterTypes, requiredCustomModifiers, optionalCustomModifiers); + + public virtual ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes) + => DefineDefaultConstructor(attributes); + + public virtual EventBuilder DefineEvent(string name, EventAttributes attributes, Type eventtype) + => DefineEvent(name, attributes, eventtype); + public FieldBuilder DefineField(string fieldName, Type type, FieldAttributes attributes) => DefineField(fieldName, type, null, null, attributes); + public virtual FieldBuilder DefineField(string fieldName, Type type, Type[]? requiredCustomModifiers, Type[]? optionalCustomModifiers, + FieldAttributes attributes) + => DefineField(fieldName, type, requiredCustomModifiers, optionalCustomModifiers, attributes); + + public virtual GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + => DefineGenericParameters(names); + + public virtual FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) + => DefineInitializedData(name, data, attributes); + public MethodBuilder DefineMethod(string name, MethodAttributes attributes) => DefineMethod(name, attributes, CallingConventions.Standard, null, null); @@ -29,6 +70,15 @@ public MethodBuilder DefineMethod(string name, MethodAttributes attributes, Call public MethodBuilder DefineMethod(string name, MethodAttributes attributes, Type returnType, Type[] parameterTypes) => DefineMethod(name, attributes, CallingConventions.Standard, returnType, parameterTypes); + public virtual MethodBuilder DefineMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, + Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, + Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) + => DefineMethod(name, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, + parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); + + public virtual void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) + => DefineMethodOverride(methodInfoBody, methodInfoDeclaration); + public TypeBuilder DefineNestedType(string name) => DefineNestedType(name, TypeAttributes.NestedPrivate, null, null); @@ -39,6 +89,10 @@ public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) => DefineNestedType(name, attr, parent, null); + public virtual TypeBuilder DefineNestedType(string name, TypeAttributes attr, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) + => DefineNestedType(name, attr, parent, interfaces); + public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, int typeSize) => DefineNestedType(name, attr, parent, PackingSize.Unspecified, typeSize); @@ -47,6 +101,10 @@ public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packSize) => DefineNestedType(name, attr, parent, packSize, TypeBuilder.UnspecifiedTypeSize); + public virtual TypeBuilder DefineNestedType(string name, TypeAttributes attr, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packSize, int typeSize) + => DefineNestedType(name, attr, parent, packSize, typeSize); + [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] public MethodBuilder DefinePInvokeMethod(string name, string dllName, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes, @@ -62,6 +120,17 @@ public MethodBuilder DefinePInvokeMethod(string name, string dllName, string ent name, dllName, entryName, attributes, callingConvention, returnType, null, null, parameterTypes, null, null, nativeCallConv, nativeCharSet); + [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] + public virtual MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, + CallingConventions callingConvention, + Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, + Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers, + CallingConvention nativeCallConv, CharSet nativeCharSet) + => DefinePInvokeMethod(name, dllName, entryName, attributes, callingConvention, + returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, + parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers, + nativeCallConv, nativeCharSet); + public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, Type returnType, Type[]? parameterTypes) => DefineProperty(name, attributes, returnType, null, null, parameterTypes, null, null); @@ -75,5 +144,57 @@ public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes => DefineProperty(name, attributes, default, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); + + public virtual PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, CallingConventions callingConvention, + Type returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, + Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) + => DefineProperty(name, attributes, callingConvention, + returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, + parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); + + public virtual ConstructorBuilder DefineTypeInitializer() + => DefineTypeInitializer(); + + public virtual FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) + => DefineUninitializedData(name, size, attributes); + + public static ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) + { + Module? module = type?.Module; + if (module is not ModuleBuilder moduleBuilder) + throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); + + return moduleBuilder.GetConstructor(type!, constructor); + } + + public static FieldInfo GetField(Type type, FieldInfo field) + { + Module? module = type?.Module; + if (module is not ModuleBuilder moduleBuilder) + throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); + + return moduleBuilder.GetField(type!, field); + } + + public static MethodInfo GetMethod(Type type, MethodInfo method) + { + Module? module = type?.Module; + if (module is not ModuleBuilder moduleBuilder) + throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); + + return moduleBuilder.GetMethod(type!, method); + } + + public virtual bool IsCreated() + => IsCreated(); + + public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + => SetCustomAttribute(con, binaryAttribute); + + public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) + => SetCustomAttribute(customBuilder); + + public virtual void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type parent) + => SetParent(parent); } } From 79dd71ad82ffe5561820dd52d291326709dcec27 Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Thu, 24 Mar 2022 19:30:12 -0700 Subject: [PATCH 10/36] Refactor PropertyBuilder --- .../System/Reflection/Emit/PropertyBuilder.cs | 16 +- .../src/System/Reflection/Emit/TypeBuilder.cs | 2 +- .../src/System.Private.CoreLib.csproj | 1 - .../System/Reflection/Emit/PropertyBuilder.cs | 154 ------------------ .../System.Private.CoreLib.Shared.projitems | 1 + .../System/Reflection/Emit/PropertyBuilder.cs | 30 ++++ 6 files changed, 40 insertions(+), 164 deletions(-) delete mode 100644 src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs create mode 100644 src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs index fa8ef294ce24b..6510777b73802 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs @@ -21,11 +21,11 @@ namespace System.Reflection.Emit // A PropertyBuilder is always associated with a TypeBuilder. The TypeBuilder.DefineProperty // method will return a new PropertyBuilder to a client. // - public sealed class PropertyBuilder : PropertyInfo + internal sealed class RuntimePropertyBuilder : PropertyBuilder { // Constructs a PropertyBuilder. // - internal PropertyBuilder( + internal RuntimePropertyBuilder( RuntimeModuleBuilder mod, // the module containing this PropertyBuilder string name, // property name PropertyAttributes attr, // property attribute such as DefaultProperty, Bindable, DisplayBind, etc @@ -48,7 +48,7 @@ internal PropertyBuilder( /// /// Set the default value of the Property /// - public void SetConstant(object? defaultValue) + public override void SetConstant(object? defaultValue) { m_containingType.ThrowIfCreated(); @@ -79,26 +79,26 @@ private void SetMethodSemantics(MethodBuilder mdBuilder, MethodSemanticsAttribut mdBuilder.MetadataToken); } - public void SetGetMethod(MethodBuilder mdBuilder) + public override void SetGetMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Getter); m_getMethod = mdBuilder; } - public void SetSetMethod(MethodBuilder mdBuilder) + public override void SetSetMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Setter); m_setMethod = mdBuilder; } - public void AddOtherMethod(MethodBuilder mdBuilder) + public override void AddOtherMethod(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Other); } // Use this function if client decides to form the custom attribute blob themselves - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); @@ -112,7 +112,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) } // Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index b50a5826f893a..71b73afc8a558 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -1654,7 +1654,7 @@ private PropertyBuilder DefinePropertyNoLock(string name, PropertyAttributes att sigLength); // create the property builder now. - return new PropertyBuilder( + return new RuntimePropertyBuilder( m_module, name, attributes, diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj index 0dd6c3b635fc9..6ae94dd094d76 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj @@ -136,7 +136,6 @@ - diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs deleted file mode 100644 index 940a21a42b88d..0000000000000 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs +++ /dev/null @@ -1,154 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -namespace System.Reflection.Emit -{ - public sealed class PropertyBuilder : PropertyInfo - { - internal PropertyBuilder() - { - // Prevent generating a default constructor - } - - public override PropertyAttributes Attributes - { - get - { - return default; - } - } - - public override bool CanRead - { - get - { - return default; - } - } - - public override bool CanWrite - { - get - { - return default; - } - } - - public override Type DeclaringType - { - get - { - return default; - } - } - - public override Module Module - { - get - { - return default; - } - } - - public override string Name - { - get - { - return default; - } - } - - public override Type PropertyType - { - get - { - return default; - } - } - - public override Type ReflectedType - { - get - { - return default; - } - } - - public void AddOtherMethod(MethodBuilder mdBuilder) - { - } - - public override MethodInfo[] GetAccessors(bool nonPublic) - { - return default; - } - - public override object[] GetCustomAttributes(bool inherit) - { - return default; - } - - public override object[] GetCustomAttributes(Type attributeType, bool inherit) - { - return default; - } - - public override MethodInfo GetGetMethod(bool nonPublic) - { - return default; - } - - public override ParameterInfo[] GetIndexParameters() - { - return default; - } - - public override MethodInfo GetSetMethod(bool nonPublic) - { - return default; - } - - public override object? GetValue(object? obj, object?[]? index) - { - return default; - } - - public override object? GetValue(object? obj, BindingFlags invokeAttr, Binder? binder, object?[]? index, Globalization.CultureInfo? culture) - { - return default; - } - - public override bool IsDefined(Type attributeType, bool inherit) - { - return default; - } - - public void SetConstant(object defaultValue) - { - } - - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - { - } - - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) - { - } - - public void SetGetMethod(MethodBuilder mdBuilder) - { - } - - public void SetSetMethod(MethodBuilder mdBuilder) - { - } - - public override void SetValue(object? obj, object? value, object?[]? index) - { - } - - public override void SetValue(object? obj, object? value, BindingFlags invokeAttr, Binder? binder, object?[]? index, Globalization.CultureInfo? culture) - { - } - } -} diff --git a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems index 4c52a466b4712..c724a2493fb4a 100644 --- a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems +++ b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems @@ -604,6 +604,7 @@ + diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs new file mode 100644 index 0000000000000..638601cce7276 --- /dev/null +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs @@ -0,0 +1,30 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace System.Reflection.Emit +{ + public abstract class PropertyBuilder : PropertyInfo + { + protected PropertyBuilder() + { + } + + public virtual void AddOtherMethod(MethodBuilder mdBuilder) + => AddOtherMethod(mdBuilder); + + public virtual void SetConstant(object defaultValue) + => SetConstant(defaultValue); + + public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + => SetCustomAttribute(con, binaryAttribute); + + public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) + => SetCustomAttribute(customBuilder); + + public virtual void SetGetMethod(MethodBuilder mdBuilder) + => SetGetMethod(mdBuilder); + + public virtual void SetSetMethod(MethodBuilder mdBuilder) + => SetSetMethod(mdBuilder); + } +} From 7ec068b35cb11e527263491d663dac84dcc8f3eb Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Thu, 24 Mar 2022 19:43:36 -0700 Subject: [PATCH 11/36] Refactor EnumBuilder --- .../src/System/Reflection/Emit/EnumBuilder.cs | 21 +- .../System/Reflection/Emit/ModuleBuilder.cs | 10 +- .../System/Reflection/Emit/SignatureHelper.cs | 4 +- .../src/System/Reflection/Emit/TypeBuilder.cs | 2 +- .../src/System.Private.CoreLib.csproj | 1 - .../src/System/Reflection/Emit/EnumBuilder.cs | 390 ------------------ .../System.Private.CoreLib.Shared.projitems | 1 + .../src/System/Reflection/Emit/EnumBuilder.cs | 34 ++ 8 files changed, 50 insertions(+), 413 deletions(-) delete mode 100644 src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs create mode 100644 src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs index bb4d44e908b81..bbb4602e3af0c 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs @@ -17,7 +17,7 @@ namespace System.Reflection.Emit { - public sealed class EnumBuilder : TypeInfo + internal sealed class RuntimeEnumBuilder : EnumBuilder { public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) { @@ -27,7 +27,7 @@ public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) // Define literal for enum - public FieldBuilder DefineLiteral(string literalName, object? literalValue) + public override FieldBuilder DefineLiteral(string literalName, object? literalValue) { // Define the underlying field for the enum. It will be a non-static, private field with special name bit set. FieldBuilder fieldBuilder = m_typeBuilder.DefineField( @@ -39,24 +39,17 @@ public FieldBuilder DefineLiteral(string literalName, object? literalValue) } [return: DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes.All)] - public TypeInfo? CreateTypeInfo() + public override TypeInfo? CreateTypeInfo() { return m_typeBuilder.CreateTypeInfo(); } - // CreateType cause EnumBuilder to be baked. - [return: DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes.All)] - public Type? CreateType() - { - return m_typeBuilder.CreateType(); - } - // Get the internal metadata token for this class. internal int TypeToken => m_typeBuilder.TypeToken; // return the underlying field for the enum - public FieldBuilder UnderlyingField => m_underlyingField; + public override FieldBuilder UnderlyingField => m_underlyingField; public override string Name => m_typeBuilder.Name; @@ -282,13 +275,13 @@ public override object[] GetCustomAttributes(Type attributeType, bool inherit) // Use this function if client decides to form the custom attribute blob themselves - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { m_typeBuilder.SetCustomAttribute(con, binaryAttribute); } // Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { m_typeBuilder.SetCustomAttribute(customBuilder); } @@ -341,7 +334,7 @@ public override Type MakeArrayType(int rank) // EnumBuilder can only be a top-level (not nested) enum type. [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2064:UnrecognizedReflectionPattern", Justification = "Reflection.Emit is not subject to trimming")] - internal EnumBuilder( + internal RuntimeEnumBuilder( string name, // name of type Type underlyingType, // underlying type for an Enum TypeAttributes visibility, // any bits on TypeAttributes.VisibilityMask) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index 85c77444c7a9a..368fee675e1fb 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -526,13 +526,13 @@ internal Type[] GetTypesNoLock() foreach (Type builder in _typeBuilderDict.Values) { - EnumBuilder? enumBldr = builder as EnumBuilder; - TypeBuilder tmpTypeBldr; + RuntimeEnumBuilder? enumBldr = builder as RuntimeEnumBuilder; + RuntimeTypeBuilder tmpTypeBldr; if (enumBldr != null) tmpTypeBldr = enumBldr.m_typeBuilder; else - tmpTypeBldr = (TypeBuilder)builder; + tmpTypeBldr = (RuntimeTypeBuilder)builder; // We should not return TypeBuilders. // Otherwise anyone can emit code in it. @@ -771,7 +771,7 @@ public override EnumBuilder DefineEnum(string name, TypeAttributes visibility, T { lock (SyncRoot) { - EnumBuilder enumBuilder = new EnumBuilder(name, underlyingType, visibility, this); + RuntimeEnumBuilder enumBuilder = new RuntimeEnumBuilder(name, underlyingType, visibility, this); // This enum is not generic, nested, and cannot have any element type. // Replace the TypeBuilder object in _typeBuilderDict with this EnumBuilder object. @@ -936,7 +936,7 @@ private int GetTypeTokenWorkerNoLock(Type type, bool getGenericDefinition) // no need to do anything additional other than defining the TypeRef Token RuntimeTypeBuilder? typeBuilder; - EnumBuilder? enumBuilder = type as EnumBuilder; + RuntimeEnumBuilder? enumBuilder = type as RuntimeEnumBuilder; typeBuilder = enumBuilder != null ? enumBuilder.m_typeBuilder : type as RuntimeTypeBuilder; if (typeBuilder != null) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs index 4efc8dbb25026..517dbcea8c946 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs @@ -372,9 +372,9 @@ private void AddOneArgTypeHelperWorker(Type clsArgument, bool lastWasGenericInst InternalAddTypeToken(tkType, CorElementType.ELEMENT_TYPE_CLASS); } } - else if (clsArgument is EnumBuilder) + else if (clsArgument is RuntimeEnumBuilder) { - RuntimeTypeBuilder clsBuilder = ((EnumBuilder)clsArgument).m_typeBuilder; + RuntimeTypeBuilder clsBuilder = ((RuntimeEnumBuilder)clsArgument).m_typeBuilder; int tkType; if (clsBuilder.Module.Equals(m_module)) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index 71b73afc8a558..c8f21608dd9f6 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -303,7 +303,7 @@ internal static unsafe void SetConstantValue(RuntimeModuleBuilder module, int tk // The above behaviors might not be the most consistent but we have to live with them. Type? underlyingType; - if (destType is EnumBuilder enumBldr) + if (destType is RuntimeEnumBuilder enumBldr) { underlyingType = enumBldr.GetEnumUnderlyingType(); diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj index 6ae94dd094d76..025a38d1cea6a 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj @@ -129,7 +129,6 @@ - diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs deleted file mode 100644 index 006f893e0e9c1..0000000000000 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs +++ /dev/null @@ -1,390 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Diagnostics.CodeAnalysis; - -namespace System.Reflection.Emit -{ - public sealed partial class EnumBuilder : TypeInfo - { - internal EnumBuilder() - { - // Prevent generating a default constructor - } - - public override Assembly Assembly - { - get - { - return default; - } - } - - public override string AssemblyQualifiedName - { - get - { - return default; - } - } - - public override Type BaseType - { - get - { - return default; - } - } - - public override Type DeclaringType - { - get - { - return default; - } - } - - public override string FullName - { - get - { - return default; - } - } - - public override Guid GUID - { - get - { - return default; - } - } - - public override bool IsConstructedGenericType - { - get - { - return default; - } - } - - public override Module Module - { - get - { - return default; - } - } - - public override string Name - { - get - { - return default; - } - } - - public override string Namespace - { - get - { - return default; - } - } - - public override Type ReflectedType - { - get - { - return default; - } - } - - public override RuntimeTypeHandle TypeHandle - { - get - { - return default; - } - } - - public FieldBuilder UnderlyingField - { - get - { - return default; - } - } - - public override Type UnderlyingSystemType - { - get - { - return default; - } - } - - [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public Type? CreateType() - { - return default; - } - - [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public TypeInfo? CreateTypeInfo() - { - return default; - } - - public FieldBuilder DefineLiteral(string literalName, object literalValue) - { - return default; - } - - protected override TypeAttributes GetAttributeFlagsImpl() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] - protected override ConstructorInfo GetConstructorImpl(BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] - public override ConstructorInfo[] GetConstructors(BindingFlags bindingAttr) - { - return default; - } - - public override object[] GetCustomAttributes(bool inherit) - { - return default; - } - - public override object[] GetCustomAttributes(Type attributeType, bool inherit) - { - return default; - } - - public override Type GetElementType() - { - return default; - } - - public override Type GetEnumUnderlyingType() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] - public override EventInfo GetEvent(string name, BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents)] - public override EventInfo[] GetEvents() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] - public override EventInfo[] GetEvents(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] - public override FieldInfo GetField(string name, BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] - public override FieldInfo[] GetFields(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] - [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] - public override Type? GetInterface(string name, bool ignoreCase) - { - return default; - } - - public override InterfaceMapping GetInterfaceMap([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] Type interfaceType) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] - public override Type[] GetInterfaces() - { - return default; - } - - [DynamicallyAccessedMembers(GetAllMembers)] - public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(GetAllMembers)] - public override MemberInfo[] GetMembers(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] - protected override MethodInfo GetMethodImpl(string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, System.Type[] types, ParameterModifier[] modifiers) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] - public override MethodInfo[] GetMethods(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] - public override Type GetNestedType(string name, BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] - public override Type[] GetNestedTypes(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] - public override PropertyInfo[] GetProperties(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] - protected override PropertyInfo GetPropertyImpl(string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers) - { - return default; - } - - protected override bool HasElementTypeImpl() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public override object? InvokeMember(string name, BindingFlags invokeAttr, Binder? binder, object? target, object?[]? args, ParameterModifier[]? modifiers, Globalization.CultureInfo? culture, string[]? namedParameters) - { - return default; - } - - protected override bool IsArrayImpl() - { - return default; - } - - public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) - { - return default; - } - - protected override bool IsByRefImpl() - { - return default; - } - - public override bool IsByRefLike - { - get - { - return default; - } - } - - protected override bool IsCOMObjectImpl() - { - return default; - } - - public override bool IsDefined(Type attributeType, bool inherit) - { - return default; - } - - protected override bool IsPointerImpl() - { - return default; - } - - protected override bool IsPrimitiveImpl() - { - return default; - } - - public override bool IsTypeDefinition - { - get - { - return default; - } - } - - public override bool IsSZArray - { - get - { - return default; - } - } - - public override bool IsVariableBoundArray - { - get - { - return default; - } - } - - protected override bool IsValueTypeImpl() - { - return default; - } - - [RequiresDynamicCode("The code for an array of the specified type might not be available.")] - public override Type MakeArrayType() - { - return default; - } - - [RequiresDynamicCode("The code for an array of the specified type might not be available.")] - public override Type MakeArrayType(int rank) - { - return default; - } - - public override Type MakeByRefType() - { - return default; - } - - public override Type MakePointerType() - { - return default; - } - - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - { - } - - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) - { - } - } -} diff --git a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems index c724a2493fb4a..8d2fd5b7da47e 100644 --- a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems +++ b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems @@ -594,6 +594,7 @@ + diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs new file mode 100644 index 0000000000000..03645421c2da4 --- /dev/null +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs @@ -0,0 +1,34 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Diagnostics.CodeAnalysis; + +namespace System.Reflection.Emit +{ + public abstract partial class EnumBuilder : TypeInfo + { + protected EnumBuilder() + { + } + + public virtual FieldBuilder UnderlyingField + => UnderlyingField; + + [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] + public Type? CreateType() + => CreateTypeInfo(); + + [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] + public virtual TypeInfo? CreateTypeInfo() + => CreateTypeInfo(); + + public virtual FieldBuilder DefineLiteral(string literalName, object literalValue) + => DefineLiteral(literalName, literalValue); + + public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + => SetCustomAttribute(con, binaryAttribute); + + public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) + => SetCustomAttribute(customBuilder); + } +} From b36778c1db4b95e81ac814db30b3fe6b4b68f9da Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Thu, 24 Mar 2022 19:53:15 -0700 Subject: [PATCH 12/36] Refactor FieldBuilder --- .../src/System/Reflection/Emit/EnumBuilder.cs | 2 +- .../System/Reflection/Emit/FieldBuilder.cs | 12 +- .../src/System/Reflection/Emit/TypeBuilder.cs | 4 +- .../src/System.Private.CoreLib.csproj | 1 - .../System/Reflection/Emit/FieldBuilder.cs | 104 ------------------ .../System.Private.CoreLib.Shared.projitems | 1 + .../System/Reflection/Emit/FieldBuilder.cs | 24 ++++ 7 files changed, 34 insertions(+), 114 deletions(-) delete mode 100644 src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs create mode 100644 src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs index bbb4602e3af0c..9f6b054ba64a9 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs @@ -34,7 +34,7 @@ public override FieldBuilder DefineLiteral(string literalName, object? literalVa literalName, this, FieldAttributes.Public | FieldAttributes.Static | FieldAttributes.Literal); - fieldBuilder.SetConstant(literalValue); + ((RuntimeFieldBuilder)fieldBuilder).SetConstant(literalValue); return fieldBuilder; } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs index 8eeabc1a907dc..01d040f69901b 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs @@ -6,7 +6,7 @@ namespace System.Reflection.Emit { - public sealed class FieldBuilder : FieldInfo + internal sealed class RuntimeFieldBuilder : FieldBuilder { #region Private Data Members private int m_fieldTok; @@ -17,7 +17,7 @@ public sealed class FieldBuilder : FieldInfo #endregion #region Constructor - internal FieldBuilder(RuntimeTypeBuilder typeBuilder, string fieldName, Type type, + internal RuntimeFieldBuilder(RuntimeTypeBuilder typeBuilder, string fieldName, Type type, Type[]? requiredCustomModifiers, Type[]? optionalCustomModifiers, FieldAttributes attributes) { ArgumentException.ThrowIfNullOrEmpty(fieldName); @@ -132,7 +132,7 @@ public override bool IsDefined(Type attributeType, bool inherit) #endregion #region Public Members - public void SetOffset(int iOffset) + public override void SetOffset(int iOffset) { m_typeBuilder.ThrowIfCreated(); @@ -140,7 +140,7 @@ public void SetOffset(int iOffset) RuntimeTypeBuilder.SetFieldLayoutOffset(new QCallModule(ref module), m_fieldTok, iOffset); } - public void SetConstant(object? defaultValue) + public override void SetConstant(object? defaultValue) { m_typeBuilder.ThrowIfCreated(); @@ -154,7 +154,7 @@ public void SetConstant(object? defaultValue) RuntimeTypeBuilder.SetConstantValue(m_typeBuilder.GetModuleBuilder(), m_fieldTok, m_fieldType, defaultValue); } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); @@ -167,7 +167,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) m_fieldTok, moduleBuilder.GetConstructorToken(con), binaryAttribute); } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index c8f21608dd9f6..b72c7bb947b3e 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -592,7 +592,7 @@ private FieldBuilder DefineDataHelper(string name, byte[]? data, int size, Field fdBuilder = DefineField(name, valueClassType, attributes | FieldAttributes.Static); // now we need to set the RVA - fdBuilder.SetData(data, size); + ((RuntimeFieldBuilder)fdBuilder).SetData(data, size); return fdBuilder; } @@ -1571,7 +1571,7 @@ private FieldBuilder DefineFieldNoLock(string fieldName, Type type, Type[]? requ } } - return new FieldBuilder(this, fieldName, type, requiredCustomModifiers, optionalCustomModifiers, attributes); + return new RuntimeFieldBuilder(this, fieldName, type, requiredCustomModifiers, optionalCustomModifiers, attributes); } public override FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj index 025a38d1cea6a..7b5f08c6bef3b 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj @@ -129,7 +129,6 @@ - diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs deleted file mode 100644 index 6c57ca73eebf8..0000000000000 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs +++ /dev/null @@ -1,104 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Globalization; - -namespace System.Reflection.Emit -{ - - public sealed class FieldBuilder : FieldInfo - { - internal FieldBuilder() - { - // Prevent generating a default constructor - } - - public override FieldAttributes Attributes - { - get - { - return default; - } - } - - public override Type DeclaringType - { - get - { - return default; - } - } - - public override RuntimeFieldHandle FieldHandle - { - get - { - return default; - } - } - - public override Type FieldType - { - get - { - return default; - } - } - - public override string Name - { - get - { - return default; - } - } - - public override Type ReflectedType - { - get - { - return default; - } - } - - public override object[] GetCustomAttributes(bool inherit) - { - return default; - } - - public override object[] GetCustomAttributes(Type attributeType, bool inherit) - { - return default; - } - - public override object GetValue(object obj) - { - return default; - } - - public override bool IsDefined(Type attributeType, bool inherit) - { - return default; - } - - public void SetConstant(object defaultValue) - { - } - - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - { - } - - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) - { - } - - public void SetOffset(int iOffset) - { - } - - public override void SetValue(object obj, object val, BindingFlags invokeAttr, Binder binder, CultureInfo culture) - { - } - } -} diff --git a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems index 8d2fd5b7da47e..3ead8fdaf5214 100644 --- a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems +++ b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems @@ -596,6 +596,7 @@ + diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs new file mode 100644 index 0000000000000..1a178ed73ed86 --- /dev/null +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs @@ -0,0 +1,24 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace System.Reflection.Emit +{ + public abstract class FieldBuilder : FieldInfo + { + protected FieldBuilder() + { + } + + public virtual void SetConstant(object defaultValue) + => SetConstant(defaultValue); + + public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + => SetCustomAttribute(con, binaryAttribute); + + public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) + => SetCustomAttribute(customBuilder); + + public virtual void SetOffset(int iOffset) + => SetOffset(iOffset); + } +} From 6ee8a6717372948c84fe6a72e777d6bc8f865d9c Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Thu, 24 Mar 2022 20:35:06 -0700 Subject: [PATCH 13/36] Refactor ConstructorBuilder and MethodBuilder --- .../System/Reflection/Emit/AssemblyBuilder.cs | 34 +-- .../Reflection/Emit/ConstructorBuilder.cs | 24 +- .../Reflection/Emit/DynamicILGenerator.cs | 2 +- .../System/Reflection/Emit/DynamicMethod.cs | 2 +- .../src/System/Reflection/Emit/ILGenerator.cs | 6 +- .../System/Reflection/Emit/MethodBuilder.cs | 36 +-- .../System/Reflection/Emit/ModuleBuilder.cs | 12 +- .../Reflection/Emit/ParameterBuilder.cs | 4 +- .../src/System/Reflection/Emit/TypeBuilder.cs | 60 ++--- .../src/System.Private.CoreLib.csproj | 2 - .../Reflection/Emit/ConstructorBuilder.cs | 149 ----------- .../System/Reflection/Emit/MethodBuilder.cs | 249 ------------------ .../System.Private.CoreLib.Shared.projitems | 2 + .../Reflection/Emit/ConstructorBuilder.cs | 38 +++ .../System/Reflection/Emit/MethodBuilder.cs | 52 ++++ .../Reflection/Emit/RuntimeAssemblyBuilder.cs | 14 +- 16 files changed, 167 insertions(+), 519 deletions(-) delete mode 100644 src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs delete mode 100644 src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs create mode 100644 src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs create mode 100644 src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index 0f1141d9c9e8c..c2650f2f66fa9 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -35,7 +35,7 @@ public static AssemblyBuilder DefineDynamicAssembly( => DefineDynamicAssembly(name, access, null, Assembly.GetCallingAssembly()); private static AssemblyBuilder DefineDynamicAssembly( - AssemblyName name!!, + AssemblyName name, AssemblyBuilderAccess access, IEnumerable? assemblyAttributes, Assembly? callingAssembly) @@ -45,6 +45,8 @@ private static AssemblyBuilder DefineDynamicAssembly( return (s_defineDynamicAssembly ?? InitDefineDynamicAssembly())(name, access, assemblyAttributes, callingAssembly); } + ArgumentNullException.ThrowIfNull(name); + if (access != AssemblyBuilderAccess.Run && access != AssemblyBuilderAccess.RunAndCollect) { throw new ArgumentException(SR.Format(SR.Arg_EnumIllegalVal, (int)access), nameof(access)); @@ -65,7 +67,7 @@ private static AssemblyBuilder DefineDynamicAssembly( throw new InvalidOperationException(); } - return new RuntimeAssemblyBuilder(name, access, assemblyAttributes, assemblyLoadContext); + return new RuntimeAssemblyBuilder(name, access, assemblyLoadContext, assemblyAttributes); } private static Func?, Assembly?, AssemblyBuilder>? s_defineDynamicAssembly; @@ -114,41 +116,25 @@ internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder internal RuntimeAssemblyBuilder(AssemblyName name, AssemblyBuilderAccess access, - AssemblyLoadContext? assemblyLoadContext, + AssemblyLoadContext assemblyLoadContext, IEnumerable? assemblyAttributes) { - ArgumentNullException.ThrowIfNull(name); - - if (access != AssemblyBuilderAccess.Run && access != AssemblyBuilderAccess.RunAndCollect) - { - throw new ArgumentException(SR.Format(SR.Arg_EnumIllegalVal, (int)access), nameof(access)); - } - if (callingAssembly == null) - { - // Called either from interop or async delegate invocation. Rejecting because we don't - // know how to set the correct context of the new dynamic assembly. - throw new InvalidOperationException(); - } - _access = access; - _internalAssembly = CreateDynamicAssembly(assemblyLoadContext ?? AssemblyLoadContext.GetLoadContext(callingAssembly)!, name, access); + _internalAssembly = CreateDynamicAssembly(assemblyLoadContext, name, access); // Make sure that ManifestModule is properly initialized // We need to do this before setting any CustomAttribute // Note that this ModuleBuilder cannot be used for RefEmit yet // because it hasn't been initialized. // However, it can be used to set the custom attribute on the Assembly - _manifestModuleBuilder = new ModuleBuilder(this, (RuntimeModule)InternalAssembly.ManifestModule); + _manifestModuleBuilder = new RuntimeModuleBuilder(this, (RuntimeModule)InternalAssembly.ManifestModule); if (assemblyAttributes != null) { foreach (CustomAttributeBuilder assemblyAttribute in assemblyAttributes) { - foreach (CustomAttributeBuilder assemblyAttribute in assemblyAttributes) - { - SetCustomAttribute(assemblyAttribute); - } + SetCustomAttribute(assemblyAttribute); } } } @@ -202,8 +188,7 @@ private static unsafe RuntimeAssembly CreateDynamicAssembly(AssemblyLoadContext internal static RuntimeAssemblyBuilder InternalDefineDynamicAssembly( AssemblyName name, AssemblyBuilderAccess access, - Assembly? callingAssembly, - AssemblyLoadContext? assemblyLoadContext, + AssemblyLoadContext assemblyLoadContext, IEnumerable? assemblyAttributes) { lock (s_assemblyBuilderLock) @@ -211,7 +196,6 @@ internal static RuntimeAssemblyBuilder InternalDefineDynamicAssembly( // We can only create dynamic assemblies in the current domain return new RuntimeAssemblyBuilder(name, access, - callingAssembly, assemblyLoadContext, assemblyAttributes); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs index 6a5bc678c60a1..7e8bf6f77a19c 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs @@ -6,17 +6,17 @@ namespace System.Reflection.Emit { - public sealed class ConstructorBuilder : ConstructorInfo + internal sealed class RuntimeConstructorBuilder : ConstructorBuilder { - private readonly MethodBuilder m_methodBuilder; + private readonly RuntimeMethodBuilder m_methodBuilder; internal bool m_isDefaultConstructor; #region Constructor - internal ConstructorBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention, + internal RuntimeConstructorBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers, RuntimeModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] RuntimeTypeBuilder type) { - m_methodBuilder = new MethodBuilder(name, attributes, callingConvention, null, null, null, + m_methodBuilder = new RuntimeMethodBuilder(name, attributes, callingConvention, null, null, null, parameterTypes, requiredCustomModifiers, optionalCustomModifiers, mod, type); type.m_listMethods!.Add(m_methodBuilder); @@ -26,7 +26,7 @@ internal ConstructorBuilder(string name, MethodAttributes attributes, CallingCon _ = m_methodBuilder.MetadataToken; // Doubles as "CreateMethod" for MethodBuilder -- analogous to CreateType() } - internal ConstructorBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention, + internal RuntimeConstructorBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes, RuntimeModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] RuntimeTypeBuilder type) : this(name, attributes, callingConvention, parameterTypes, null, null, mod, type) { @@ -122,7 +122,7 @@ public override bool IsDefined(Type attributeType, bool inherit) #endregion #region Public Members - public ParameterBuilder DefineParameter(int iSequence, ParameterAttributes attributes, string? strParamName) + public override ParameterBuilder DefineParameter(int iSequence, ParameterAttributes attributes, string? strParamName) { // Theoretically we shouldn't allow iSequence to be 0 because in reflection ctors don't have // return parameters. But we'll allow it for backward compatibility with V2. The attributes @@ -133,7 +133,7 @@ public ParameterBuilder DefineParameter(int iSequence, ParameterAttributes attri return m_methodBuilder.DefineParameter(iSequence, attributes, strParamName); } - public ILGenerator GetILGenerator() + public override ILGenerator GetILGenerator() { if (m_isDefaultConstructor) throw new InvalidOperationException(SR.InvalidOperation_DefaultConstructorILGen); @@ -141,7 +141,7 @@ public ILGenerator GetILGenerator() return m_methodBuilder.GetILGenerator(); } - public ILGenerator GetILGenerator(int streamSize) + public override ILGenerator GetILGenerator(int streamSize) { if (m_isDefaultConstructor) throw new InvalidOperationException(SR.InvalidOperation_DefaultConstructorILGen); @@ -165,22 +165,22 @@ internal override Type GetReturnType() return m_methodBuilder.ReturnType; } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { m_methodBuilder.SetCustomAttribute(con, binaryAttribute); } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { m_methodBuilder.SetCustomAttribute(customBuilder); } - public void SetImplementationFlags(MethodImplAttributes attributes) + public override void SetImplementationFlags(MethodImplAttributes attributes) { m_methodBuilder.SetImplementationFlags(attributes); } - public bool InitLocals + public override bool InitLocals { get => m_methodBuilder.InitLocals; set => m_methodBuilder.InitLocals = value; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicILGenerator.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicILGenerator.cs index 0828c9f2cc545..952cc8890292c 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicILGenerator.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicILGenerator.cs @@ -445,7 +445,7 @@ private int GetMemberRefToken(MethodBase methodInfo, Type[]? optionalParameterTy } SignatureHelper sig = GetMemberRefSignature(methodInfo.CallingConvention, - MethodBuilder.GetMethodBaseReturnType(methodInfo), + RuntimeMethodBuilder.GetMethodBaseReturnType(methodInfo), parameterTypes, requiredCustomModifiers, optionalCustomModifiers, diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs index d6d9b118b1aa3..63aad0c8a0c6c 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs @@ -240,7 +240,7 @@ private static RuntimeModule GetDynamicMethodsModule() return s_anonymouslyHostedDynamicMethodsModule; var assembly = new RuntimeAssemblyBuilder(new AssemblyName("Anonymously Hosted DynamicMethods Assembly"), - AssemblyBuilderAccess.Run, null, AssemblyLoadContext.Default); + AssemblyBuilderAccess.Run, AssemblyLoadContext.Default, null); // this always gets the internal module. s_anonymouslyHostedDynamicMethodsModule = (RuntimeModule)assembly.ManifestModule!; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs index 0970543156fab..d35bcfcd19e69 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs @@ -91,7 +91,7 @@ internal ILGenerator(MethodInfo methodBuilder, int size) m_methodBuilder = methodBuilder; // initialize local signature - MethodBuilder? mb = m_methodBuilder as MethodBuilder; + RuntimeMethodBuilder? mb = m_methodBuilder as RuntimeMethodBuilder; m_localSignature = SignatureHelper.GetLocalVarSigHelper(mb?.GetTypeBuilder().Module); } @@ -1215,7 +1215,7 @@ public virtual LocalBuilder DeclareLocal(Type localType, bool pinned) // Declare a local of type "local". The current active lexical scope // will be the scope that local will live. - MethodBuilder? methodBuilder = m_methodBuilder as MethodBuilder; + RuntimeMethodBuilder? methodBuilder = m_methodBuilder as RuntimeMethodBuilder; if (methodBuilder == null) throw new NotSupportedException(); @@ -1245,7 +1245,7 @@ public virtual void UsingNamespace(string usingNamespace) ArgumentException.ThrowIfNullOrEmpty(usingNamespace); - MethodBuilder? methodBuilder = m_methodBuilder as MethodBuilder; + RuntimeMethodBuilder? methodBuilder = m_methodBuilder as RuntimeMethodBuilder; if (methodBuilder == null) throw new NotSupportedException(); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs index e6b1a9f161ca2..97b0da7e7b114 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs @@ -11,7 +11,7 @@ namespace System.Reflection.Emit { - public sealed class MethodBuilder : MethodInfo + internal sealed class RuntimeMethodBuilder : MethodBuilder { #region Private Data Members // Identity @@ -56,7 +56,7 @@ public sealed class MethodBuilder : MethodInfo #region Constructor - internal MethodBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention, + internal RuntimeMethodBuilder(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers, RuntimeModuleBuilder mod, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] RuntimeTypeBuilder type) @@ -362,21 +362,21 @@ internal RuntimeModuleBuilder GetModuleBuilder() #region Object Overrides public override bool Equals(object? obj) { - if (!(obj is MethodBuilder)) + if (!(obj is RuntimeMethodBuilder)) { return false; } - if (!m_strName.Equals(((MethodBuilder)obj).m_strName)) + if (!m_strName.Equals(((RuntimeMethodBuilder)obj).m_strName)) { return false; } - if (m_iAttributes != (((MethodBuilder)obj).m_iAttributes)) + if (m_iAttributes != (((RuntimeMethodBuilder)obj).m_iAttributes)) { return false; } - SignatureHelper thatSig = ((MethodBuilder)obj).GetMethodSignature(); + SignatureHelper thatSig = ((RuntimeMethodBuilder)obj).GetMethodSignature(); if (thatSig.Equals(GetMethodSignature())) { return true; @@ -516,7 +516,7 @@ public override MethodInfo MakeGenericMethod(params Type[] typeArguments) return MethodBuilderInstantiation.MakeGenericMethod(this, typeArguments); } - public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + public override GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) { ArgumentNullException.ThrowIfNull(names); @@ -561,7 +561,7 @@ private int GetToken() return m_token; } - MethodBuilder? currentMethod = null; + RuntimeMethodBuilder? currentMethod = null; int currentToken = 0; int i; @@ -614,17 +614,17 @@ private int GetTokenNoLock() return m_token; } - public void SetParameters(params Type[] parameterTypes) + public override void SetParameters(params Type[] parameterTypes) { SetSignature(null, null, null, parameterTypes, null, null); } - public void SetReturnType(Type? returnType) + public override void SetReturnType(Type? returnType) { SetSignature(returnType, null, null, null, null, null); } - public void SetSignature( + public override void SetSignature( Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { @@ -652,7 +652,7 @@ public void SetSignature( m_parameterTypeOptionalCustomModifiers = parameterTypeOptionalCustomModifiers; } - public ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string? strParamName) + public override ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string? strParamName) { if (position < 0) throw new ArgumentOutOfRangeException(SR.ArgumentOutOfRange_ParamSequence); @@ -667,7 +667,7 @@ public ParameterBuilder DefineParameter(int position, ParameterAttributes attrib return new ParameterBuilder(this, position, attributes, strParamName); } - public void SetImplementationFlags(MethodImplAttributes attributes) + public override void SetImplementationFlags(MethodImplAttributes attributes) { ThrowIfGeneric(); @@ -681,7 +681,7 @@ public void SetImplementationFlags(MethodImplAttributes attributes) RuntimeTypeBuilder.SetMethodImpl(new QCallModule(ref module), MetadataToken, attributes); } - public ILGenerator GetILGenerator() + public override ILGenerator GetILGenerator() { ThrowIfGeneric(); ThrowIfShouldNotHaveBody(); @@ -689,7 +689,7 @@ public ILGenerator GetILGenerator() return m_ilGenerator ??= new ILGenerator(this); } - public ILGenerator GetILGenerator(int size) + public override ILGenerator GetILGenerator(int size) { ThrowIfGeneric(); ThrowIfShouldNotHaveBody(); @@ -710,7 +710,7 @@ private void ThrowIfShouldNotHaveBody() } } - public bool InitLocals + public override bool InitLocals { // Property is set to true if user wishes to have zero initialized stack frame for this method. Default to false. get { ThrowIfGeneric(); return m_fInitLocals; } @@ -722,7 +722,7 @@ internal Module GetModule() return GetModuleBuilder(); } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); @@ -737,7 +737,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) ParseCA(con); } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index 368fee675e1fb..c44ea33bfa909 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -10,7 +10,7 @@ namespace System.Reflection.Emit { - internal partial class RuntimeModuleBuilder : ModuleBuilder + internal sealed partial class RuntimeModuleBuilder : ModuleBuilder { internal static string UnmangleTypeName(string typeName) { @@ -178,7 +178,7 @@ private int GetTokenFromTypeSpec(byte[] signature, int length) #region Internal Members - internal virtual Type? FindTypeBuilderWithName(string strTypeName, bool ignoreCase) + internal Type? FindTypeBuilderWithName(string strTypeName, bool ignoreCase) { if (ignoreCase) { @@ -443,16 +443,16 @@ internal SignatureHelper GetMemberRefSignature(MethodBase? method, int cGenericP { switch (method) { - case MethodBuilder methodBuilder: + case RuntimeMethodBuilder methodBuilder: return methodBuilder.GetMethodSignature(); - case ConstructorBuilder constructorBuilder: + case RuntimeConstructorBuilder constructorBuilder: return constructorBuilder.GetMethodSignature(); - case MethodOnTypeBuilderInstantiation motbi when motbi.m_method is MethodBuilder methodBuilder: + case MethodOnTypeBuilderInstantiation motbi when motbi.m_method is RuntimeMethodBuilder methodBuilder: return methodBuilder.GetMethodSignature(); case MethodOnTypeBuilderInstantiation motbi: method = motbi.m_method; break; - case ConstructorOnTypeBuilderInstantiation cotbi when cotbi.m_ctor is ConstructorBuilder constructorBuilder: + case ConstructorOnTypeBuilderInstantiation cotbi when cotbi.m_ctor is RuntimeConstructorBuilder constructorBuilder: return constructorBuilder.GetMethodSignature(); case ConstructorOnTypeBuilderInstantiation cotbi: method = cotbi.m_ctor; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs index e64f723020352..48dc902f56404 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs @@ -39,7 +39,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) } internal ParameterBuilder( - MethodBuilder methodBuilder, + RuntimeMethodBuilder methodBuilder, int sequence, ParameterAttributes attributes, string? paramName) // can be NULL string @@ -77,7 +77,7 @@ internal int GetToken() private readonly string? _name; private readonly int _position; private readonly ParameterAttributes _attributes; - private MethodBuilder _methodBuilder; + private RuntimeMethodBuilder _methodBuilder; private int _token; } } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index b72c7bb947b3e..d1598d01a1fb8 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -406,7 +406,7 @@ internal static unsafe void SetConstantValue(RuntimeModuleBuilder module, int tk private List? m_typeInterfaces; private readonly TypeAttributes m_iAttr; private GenericParameterAttributes m_genParamAttributes; - internal List? m_listMethods; + internal List? m_listMethods; internal int m_lastTokenizedMethod; private int m_constructorCount; private readonly int m_iTypeSize; @@ -424,8 +424,8 @@ internal static unsafe void SetConstantValue(RuntimeModuleBuilder module, int tk private readonly int m_genParamPos; private GenericTypeParameterBuilder[]? m_inst; private readonly bool m_bIsGenParam; - private readonly MethodBuilder? m_declMeth; - private readonly TypeBuilder? m_genTypeDef; + private readonly RuntimeMethodBuilder? m_declMeth; + private readonly RuntimeTypeBuilder? m_genTypeDef; #endregion #region Constructor @@ -435,14 +435,14 @@ internal RuntimeTypeBuilder(RuntimeModuleBuilder module) m_tdType = ((int)MetadataTokenType.TypeDef); m_isHiddenGlobalType = true; m_module = module; - m_listMethods = new List(); + m_listMethods = new List(); // No token has been created so let's initialize it to -1 // The first time we call MethodBuilder.GetToken this will incremented. m_lastTokenizedMethod = -1; } // ctor for generic method parameter - internal RuntimeTypeBuilder(string szName, int genParamPos, MethodBuilder declMeth) + internal RuntimeTypeBuilder(string szName, int genParamPos, RuntimeMethodBuilder declMeth) { m_strName = szName; m_genParamPos = genParamPos; @@ -531,7 +531,7 @@ internal RuntimeTypeBuilder( SetParent(parent); - m_listMethods = new List(); + m_listMethods = new List(); m_lastTokenizedMethod = -1; SetInterfaces(interfaces); @@ -1249,7 +1249,7 @@ private MethodBuilder DefineMethodNoLock(string name, MethodAttributes attribute ThrowIfCreated(); // pass in Method attributes - MethodBuilder method = new MethodBuilder( + RuntimeMethodBuilder method = new RuntimeMethodBuilder( name, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers, @@ -1291,7 +1291,7 @@ public override MethodBuilder DefinePInvokeMethod(string name, string dllName, s ThrowIfCreated(); attributes |= MethodAttributes.PinvokeImpl; - MethodBuilder method = new MethodBuilder(name, attributes, callingConvention, + RuntimeMethodBuilder method = new RuntimeMethodBuilder(name, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers, m_module, this); @@ -1375,7 +1375,7 @@ private ConstructorBuilder DefineTypeInitializerNoLock() // change the attributes and the class constructor's name const MethodAttributes attr = MethodAttributes.Private | MethodAttributes.Static | MethodAttributes.SpecialName; - ConstructorBuilder constBuilder = new ConstructorBuilder( + ConstructorBuilder constBuilder = new RuntimeConstructorBuilder( ConstructorInfo.TypeConstructorName, attr, CallingConventions.Standard, null, m_module, this); return constBuilder; @@ -1400,7 +1400,7 @@ public override ConstructorBuilder DefineDefaultConstructor(MethodAttributes att Justification = "GetConstructor is only called on a TypeBuilderInstantiation which is not subject to trimming")] private ConstructorBuilder DefineDefaultConstructorNoLock(MethodAttributes attributes) { - ConstructorBuilder constBuilder; + RuntimeConstructorBuilder constBuilder; // get the parent class's default constructor // We really don't want(BindingFlags.Instance|BindingFlags.Public|BindingFlags.NonPublic) here. We really want @@ -1439,7 +1439,7 @@ private ConstructorBuilder DefineDefaultConstructorNoLock(MethodAttributes attri throw new NotSupportedException(SR.NotSupported_NoParentDefaultConstructor); // Define the constructor Builder - constBuilder = DefineConstructor(attributes, CallingConventions.Standard, null); + constBuilder = (RuntimeConstructorBuilder)DefineConstructor(attributes, CallingConventions.Standard, null); m_constructorCount++; // generate the code to call the parent's default constructor @@ -1487,7 +1487,7 @@ private ConstructorBuilder DefineConstructorNoLock(MethodAttributes attributes, attributes |= MethodAttributes.SpecialName; ConstructorBuilder constBuilder = - new ConstructorBuilder(name, attributes, callingConvention, + new RuntimeConstructorBuilder(name, attributes, callingConvention, parameterTypes, requiredCustomModifiers, optionalCustomModifiers, m_module, this); m_constructorCount++; @@ -1503,29 +1503,7 @@ public override TypeBuilder DefineNestedType(string name, TypeAttributes attr, [ { lock (SyncRoot) { -<<<<<<< HEAD - return new TypeBuilder(name, attr, parent, interfaces, m_module, PackingSize.Unspecified, UnspecifiedTypeSize, this); - } - } - - public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packSize, int typeSize) - { - lock (SyncRoot) - { - return new TypeBuilder(name, attr, parent, null, m_module, packSize, typeSize, this); - } - } - - #endregion - - #region Define Field - - public FieldBuilder DefineField(string fieldName, Type type, Type[]? requiredCustomModifiers, -======= - RuntimeAssemblyBuilder.CheckContext(parent); - RuntimeAssemblyBuilder.CheckContext(interfaces); - - return DefineNestedTypeNoLock(name, attr, parent, interfaces, PackingSize.Unspecified, UnspecifiedTypeSize); + return new RuntimeTypeBuilder(name, attr, parent, interfaces, m_module, PackingSize.Unspecified, UnspecifiedTypeSize, this); } } @@ -1533,18 +1511,10 @@ public override TypeBuilder DefineNestedType(string name, TypeAttributes attr, [ { lock (SyncRoot) { - RuntimeAssemblyBuilder.CheckContext(parent); - - return DefineNestedTypeNoLock(name, attr, parent, null, packSize, typeSize); + return new RuntimeTypeBuilder(name, attr, parent, null, m_module, packSize, typeSize, this); } } - private TypeBuilder DefineNestedTypeNoLock(string name, TypeAttributes attr, - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces, PackingSize packSize, int typeSize) - { - return new RuntimeTypeBuilder(name, attr, parent, interfaces, m_module, packSize, typeSize, this); - } - #endregion #region Define Field @@ -1806,7 +1776,7 @@ private EventBuilder DefineEventNoLock(string name, EventAttributes attributes, for (int i = 0; i < size; i++) { - MethodBuilder meth = m_listMethods[i]; + RuntimeMethodBuilder meth = m_listMethods[i]; if (meth.IsGenericMethodDefinition) { diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj index 7b5f08c6bef3b..46494f720bc07 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj @@ -125,14 +125,12 @@ - - diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs deleted file mode 100644 index 1c9d3cefedf9e..0000000000000 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs +++ /dev/null @@ -1,149 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Globalization; - -namespace System.Reflection.Emit -{ - public sealed class ConstructorBuilder : ConstructorInfo - { - internal ConstructorBuilder() - { - // Prevent generating a default constructor - } - - public override MethodAttributes Attributes - { - get - { - return default; - } - } - - public override CallingConventions CallingConvention - { - get - { - return default; - } - } - - public override Type DeclaringType - { - get - { - return default; - } - } - - public bool InitLocals - { - get - { - return default; - } - set - { - } - } - - public override RuntimeMethodHandle MethodHandle - { - get - { - return default; - } - } - - public override Module Module - { - get - { - return default; - } - } - - public override string Name - { - get - { - return default; - } - } - - public override Type ReflectedType - { - get - { - return default; - } - } - - public ParameterBuilder DefineParameter(int iSequence, ParameterAttributes attributes, string strParamName) - { - return default; - } - - public override object[] GetCustomAttributes(bool inherit) - { - return default; - } - - public override object[] GetCustomAttributes(Type attributeType, bool inherit) - { - return default; - } - - public ILGenerator GetILGenerator() - { - return default; - } - - public ILGenerator GetILGenerator(int streamSize) - { - return default; - } - - public override MethodImplAttributes GetMethodImplementationFlags() - { - return default; - } - - public override ParameterInfo[] GetParameters() - { - return default; - } - - public override object? Invoke(object? obj, BindingFlags invokeAttr, Binder? binder, object?[]? parameters, CultureInfo? culture) - { - return default; - } - - public override object Invoke(BindingFlags invokeAttr, Binder? binder, object?[]? parameters, CultureInfo? culture) - { - return default; - } - - public override bool IsDefined(Type attributeType, bool inherit) - { - return default; - } - - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - { - } - - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) - { - } - - public void SetImplementationFlags(MethodImplAttributes attributes) - { - } - - public override string ToString() - { - return default; - } - } -} diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs deleted file mode 100644 index 4737d419ff150..0000000000000 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs +++ /dev/null @@ -1,249 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Diagnostics.CodeAnalysis; - -namespace System.Reflection.Emit -{ - public sealed class MethodBuilder : MethodInfo - { - internal MethodBuilder() - { - // Prevent generating a default constructor - } - - public override MethodAttributes Attributes - { - get - { - return default; - } - } - - public override CallingConventions CallingConvention - { - get - { - return default; - } - } - - public override bool ContainsGenericParameters - { - get - { - return default; - } - } - - public override Type DeclaringType - { - get - { - return default; - } - } - - public bool InitLocals - { - get - { - return default; - } - set - { - } - } - - public override bool IsGenericMethod - { - get - { - return default; - } - } - - public override bool IsGenericMethodDefinition - { - get - { - return default; - } - } - - public override bool IsConstructedGenericMethod - { - get - { - return default; - } - } - - public override RuntimeMethodHandle MethodHandle - { - get - { - return default; - } - } - - public override Module Module - { - get - { - return default; - } - } - - public override string Name - { - get - { - return default; - } - } - - public override Type ReflectedType - { - get - { - return default; - } - } - - public override ParameterInfo ReturnParameter - { - get - { - return default; - } - } - - public override Type ReturnType - { - get - { - return default; - } - } - - public override ICustomAttributeProvider ReturnTypeCustomAttributes - { - get - { - return default; - } - } - - public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) - { - return default; - } - - public ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string strParamName) - { - return default; - } - - public override bool Equals(object? obj) - { - return default; - } - - public override MethodInfo GetBaseDefinition() - { - return default; - } - - public override object[] GetCustomAttributes(bool inherit) - { - return default; - } - - public override object[] GetCustomAttributes(Type attributeType, bool inherit) - { - return default; - } - - public override Type[] GetGenericArguments() - { - return default; - } - - public override MethodInfo GetGenericMethodDefinition() - { - return default; - } - - public override int GetHashCode() - { - return default; - } - - public ILGenerator GetILGenerator() - { - return default; - } - - public ILGenerator GetILGenerator(int size) - { - return default; - } - - public override MethodImplAttributes GetMethodImplementationFlags() - { - return default; - } - - public override ParameterInfo[] GetParameters() - { - return default; - } - - public override object? Invoke(object? obj, BindingFlags invokeAttr, Binder? binder, object?[]? parameters, Globalization.CultureInfo? culture) - { - return default; - } - - public override bool IsDefined(Type attributeType, bool inherit) - { - return default; - } - - [RequiresDynamicCode("The native code for this instantiation might not be available at runtime.")] - [RequiresUnreferencedCode("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] - public override MethodInfo MakeGenericMethod(params Type[] typeArguments) - { - return default; - } - - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - { - } - - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) - { - } - - public void SetImplementationFlags(MethodImplAttributes attributes) - { - } - - public void SetParameters(params Type[] parameterTypes) - { - } - - public void SetReturnType(Type returnType) - { - } - - public void SetSignature(Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers, Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers) - { - } - - public override string ToString() - { - return default; - } - } -} diff --git a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems index 3ead8fdaf5214..ad5f920ecc13a 100644 --- a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems +++ b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems @@ -593,12 +593,14 @@ + + diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs new file mode 100644 index 0000000000000..4162f2b99119e --- /dev/null +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs @@ -0,0 +1,38 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Globalization; + +namespace System.Reflection.Emit +{ + public abstract class ConstructorBuilder : ConstructorInfo + { + protected ConstructorBuilder() + { + } + + public virtual bool InitLocals + { + get => InitLocals; + set { var _this = this; _this.InitLocals = value; } + } + + public virtual ParameterBuilder DefineParameter(int iSequence, ParameterAttributes attributes, string strParamName) + => DefineParameter(iSequence, attributes, strParamName); + + public virtual ILGenerator GetILGenerator() + => GetILGenerator(); + + public virtual ILGenerator GetILGenerator(int streamSize) + => GetILGenerator(streamSize); + + public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + => SetCustomAttribute(con, binaryAttribute); + + public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) + => SetCustomAttribute(customBuilder); + + public virtual void SetImplementationFlags(MethodImplAttributes attributes) + => SetImplementationFlags(attributes); + } +} diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs new file mode 100644 index 0000000000000..9ee8d9a3f54a7 --- /dev/null +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs @@ -0,0 +1,52 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Diagnostics.CodeAnalysis; + +namespace System.Reflection.Emit +{ + public abstract class MethodBuilder : MethodInfo + { + protected MethodBuilder() + { + } + + public virtual bool InitLocals + { + get => InitLocals; + set { var _this = this; _this.InitLocals = value; } + } + + public virtual GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + => DefineGenericParameters(names); + + public virtual ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string strParamName) + => DefineParameter(position, attributes, strParamName); + + public virtual ILGenerator GetILGenerator() + => GetILGenerator(); + + public virtual ILGenerator GetILGenerator(int size) + => GetILGenerator(size); + + public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + => SetCustomAttribute(con, binaryAttribute); + + public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) + => SetCustomAttribute(customBuilder); + + public virtual void SetImplementationFlags(MethodImplAttributes attributes) + => SetImplementationFlags(attributes); + + public virtual void SetParameters(params Type[] parameterTypes) + => SetParameters(parameterTypes); + + public virtual void SetReturnType(Type returnType) + => SetReturnType(returnType); + + public virtual void SetSignature(Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers, + Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers) + => SetSignature(returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, + parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); + } +} diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs index 5729d0d31dcec..5b38148f61180 100644 --- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs +++ b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs @@ -20,7 +20,7 @@ public sealed class RuntimeAssemblyBuilder : AssemblyBuilder // https://docs.microsoft.com/en-us/dotnet/api/system.reflection.metadata.ecma335.metadatabuilder // TODO: Create a new method for loading the assembly as dynamic and attached to the original load context - private class ReflectionEmitLoadContext : AssemblyLoadContext + private sealed class ReflectionEmitLoadContext : AssemblyLoadContext { public ReflectionEmitLoadContext(bool isCollectible) : base(isCollectible) @@ -33,8 +33,8 @@ public ReflectionEmitLoadContext(bool isCollectible) private RuntimeAssemblyBuilder( AssemblyName name, AssemblyBuilderAccess access, - IEnumerable? assemblyAttributes, - AssemblyLoadContext assemblyLoadContext) + AssemblyLoadContext assemblyLoadContext, + IEnumerable? assemblyAttributes) { var metadata = new MetadataBuilder(); @@ -102,6 +102,8 @@ public static AssemblyBuilder DefineDynamicAssembly( IEnumerable? assemblyAttributes, Assembly? callingAssembly) { + ArgumentNullException.ThrowIfNull(name); + if (access != AssemblyBuilderAccess.Run && access != AssemblyBuilderAccess.RunAndCollect) { throw new ArgumentException(SR.Format(SR.Arg_EnumIllegalVal, (int)access), nameof(access)); @@ -122,7 +124,7 @@ public static AssemblyBuilder DefineDynamicAssembly( throw new InvalidOperationException(); } - return new RuntimeAssemblyBuilder(name, access, assemblyAttributes, assemblyLoadContext); + return new RuntimeAssemblyBuilder(name, access, assemblyLoadContext, assemblyAttributes); } internal Assembly InternalAssembly => _internalAssembly; @@ -192,12 +194,12 @@ public override ModuleBuilder DefineDynamicModule(string name) throw new NotImplementedException(); // TODO } - public override void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute!!) + public override void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute) { throw new NotImplementedException(); // TODO } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder!!) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { throw new NotImplementedException(); // TODO } From e1279520f3e650ed62b0a55f8d9cc0b7c4e07b83 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Thu, 10 Nov 2022 14:27:35 -0800 Subject: [PATCH 14/36] Fix app compat issues --- .../src/MatchingRefApiCompatBaseline.txt | 113 +++++++++++++++++- ...iCompatBaseline.NetCoreAppLatestStable.txt | 8 +- .../ApiCompatBaseline.netstandard2.1.txt | 7 +- 3 files changed, 119 insertions(+), 9 deletions(-) diff --git a/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt b/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt index 7bd8bc860e93f..5f520c13d9737 100644 --- a/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt +++ b/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt @@ -1,8 +1,119 @@ Compat issues with assembly System.Reflection.Emit: +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.AssemblyBuilder' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String)' is abstract in the reference but is not abstract in the implementation. CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the reference but is not abstract in the implementation. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the reference but is not abstract in the implementation. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. MembersMustExist : Member 'protected System.ModuleHandle System.Reflection.Emit.ModuleBuilder.GetModuleHandleImpl()' does not exist in the reference but it does exist in the implementation. TypesMustExist : Type 'System.Reflection.Emit.RuntimeAssemblyBuilder' does not exist in the reference but it does exist in the implementation. -Total Issues: 6 +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.ConstructorBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.EnumBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.FieldBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.MethodBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.ModuleBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.PropertyBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.TypeBuilder' is abstract in the implementation but is not abstract in the contract. +CannotSealType : Type 'System.Reflection.Emit.ConstructorBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. +MembersMustExist : Member 'protected void System.Reflection.Emit.ConstructorBuilder..ctor()' does not exist in the reference but it does exist in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Boolean System.Reflection.Emit.ConstructorBuilder.InitLocals' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.ConstructorBuilder.GetILGenerator()' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Boolean System.Reflection.Emit.ConstructorBuilder.InitLocals.get()' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ConstructorBuilder.InitLocals.set(System.Boolean)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes)' is non-virtual in the reference but is virtual in the implementation. +CannotSealType : Type 'System.Reflection.Emit.EnumBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. +MembersMustExist : Member 'protected void System.Reflection.Emit.EnumBuilder..ctor()' does not exist in the reference but it does exist in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.UnderlyingField' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.TypeInfo System.Reflection.Emit.EnumBuilder.CreateTypeInfo()' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String, System.Object)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.UnderlyingField.get()' is non-virtual in the reference but is virtual in the implementation. +CannotSealType : Type 'System.Reflection.Emit.EventBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. +MembersMustExist : Member 'protected void System.Reflection.Emit.EventBuilder..ctor()' does not exist in the reference but it does exist in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotSealType : Type 'System.Reflection.Emit.FieldBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. +MembersMustExist : Member 'protected void System.Reflection.Emit.FieldBuilder..ctor()' does not exist in the reference but it does exist in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.FieldBuilder.SetConstant(System.Object)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32)' is non-virtual in the reference but is virtual in the implementation. +annotSealType : Type 'System.Reflection.Emit.MethodBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. +MembersMustExist : Member 'protected void System.Reflection.Emit.MethodBuilder..ctor()' does not exist in the reference but it does exist in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Boolean System.Reflection.Emit.MethodBuilder.InitLocals' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.GenericTypeParameterBuilder[] System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.MethodBuilder.GetILGenerator()' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Boolean System.Reflection.Emit.MethodBuilder.InitLocals.get()' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.InitLocals.set(System.Boolean)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.SetSignature(System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is non-virtual in the reference but is virtual in the implementation. +CannotSealType : Type 'System.Reflection.Emit.ModuleBuilder' is effectively (has a private constructor) sealed in the reference but not sealed in the implementation. +MembersMustExist : Member 'protected void System.Reflection.Emit.ModuleBuilder..ctor()' does not exist in the reference but it does exist in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions()' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.EnumBuilder System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String, System.Reflection.TypeAttributes, System.Type)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.ModuleBuilder.DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.ModuleBuilder.DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.MethodInfo System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])' is non-virtual in the reference but is virtual in the implementation. +MembersMustExist : Member 'public System.Reflection.ConstructorInfo System.Reflection.Emit.ModuleBuilder.GetConstructor(System.Type, System.Reflection.ConstructorInfo)' does not exist in the reference but it does exist in the implementation. +MembersMustExist : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo)' does not exist in the reference but it does exist in the implementation. +MembersMustExist : Member 'public System.Reflection.FieldInfo System.Reflection.Emit.ModuleBuilder.GetField(System.Type, System.Reflection.FieldInfo)' does not exist in the reference but it does exist in the implementation. +MembersMustExist : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo)' does not exist in the reference but it does exist in the implementation. +MembersMustExist : Member 'public System.Reflection.MethodInfo System.Reflection.Emit.ModuleBuilder.GetMethod(System.Type, System.Reflection.MethodInfo)' does not exist in the reference but it does exist in the implementation. +MembersMustExist : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper)' does not exist in the reference but it does exist in the implementation. +MembersMustExist : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String)' does not exist in the reference but it does exist in the implementation. +MembersMustExist : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type, System.Boolean)' does not exist in the reference but it does exist in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotSealType : Type 'System.Reflection.Emit.PropertyBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. +MembersMustExist : Member 'protected void System.Reflection.Emit.PropertyBuilder..ctor()' does not exist in the reference but it does exist in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotSealType : Type 'System.Reflection.Emit.TypeBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. +MembersMustExist : Member 'protected void System.Reflection.Emit.TypeBuilder..ctor()' does not exist in the reference but it does exist in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.PackingSize System.Reflection.Emit.TypeBuilder.PackingSize' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.TypeInfo System.Reflection.Emit.TypeBuilder.CreateTypeInfo()' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type[], System.Type[][], System.Type[][])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.EventBuilder System.Reflection.Emit.TypeBuilder.DefineEvent(System.String, System.Reflection.EventAttributes, System.Type)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineField(System.String, System.Type, System.Type[], System.Type[], System.Reflection.FieldAttributes)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.GenericTypeParameterBuilder[] System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefineMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo, System.Reflection.MethodInfo)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.PropertyBuilder System.Reflection.Emit.TypeBuilder.DefineProperty(System.String, System.Reflection.PropertyAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineTypeInitializer()' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Boolean System.Reflection.Emit.TypeBuilder.IsCreated()' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.PackingSize System.Reflection.Emit.TypeBuilder.PackingSize.get()' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.TypeBuilder.SetParent(System.Type)' is non-virtual in the reference but is virtual in the implementation. +CannotMakeMemberNonVirtual : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size.get()' is non-virtual in the reference but is virtual in the implementation. +Total Issues: 117 \ No newline at end of file diff --git a/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt b/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt index f8e6d6b6dc1e1..59f5a1ad7f99f 100644 --- a/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt +++ b/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt @@ -52,15 +52,12 @@ CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAtt CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Numerics.Vector.ToString(System.String, System.IFormatProvider)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Numerics.Vector.TryCopyTo(System.Span)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Numerics.Vector.TryCopyTo(System.Span)' in the contract but not the implementation. -<<<<<<< HEAD CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.RequiresPreviewFeaturesAttribute' exists on 'System.String System.Runtime.CompilerServices.RuntimeFeature.VirtualStaticsInInterfaces' in the contract but not the implementation. -======= CannotMakeTypeAbstract : Type 'System.Reflection.Emit.AssemblyBuilder' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. ->>>>>>> 86381da18a7... Add abstract AssemblyBuilder CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.Aes' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' in the contract but not the implementation. @@ -130,19 +127,16 @@ CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAtt CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Numerics.Vector.ToString(System.String, System.IFormatProvider)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Numerics.Vector.TryCopyTo(System.Span)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Numerics.Vector.TryCopyTo(System.Span)' in the contract but not the implementation. -<<<<<<< HEAD Compat issues with assembly System.Runtime: CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.RequiresPreviewFeaturesAttribute' exists on 'System.String System.Runtime.CompilerServices.RuntimeFeature.VirtualStaticsInInterfaces' in the contract but not the implementation. CannotChangeAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' on 'System.IO.FileStream.Lock(System.Int64, System.Int64)' changed from '[UnsupportedOSPlatformAttribute("ios")]' in the contract to '[UnsupportedOSPlatformAttribute("freebsd")]' in the implementation. CannotChangeAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' on 'System.IO.FileStream.Unlock(System.Int64, System.Int64)' changed from '[UnsupportedOSPlatformAttribute("ios")]' in the contract to '[UnsupportedOSPlatformAttribute("freebsd")]' in the implementation. -======= Compat issues with assembly System.Reflection.Emit: CannotMakeTypeAbstract : Type 'System.Reflection.Emit.AssemblyBuilder' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. ->>>>>>> 86381da18a7... Add abstract AssemblyBuilder Compat issues with assembly System.Runtime.Intrinsics: MembersMustExist : Member 'public System.Runtime.Intrinsics.Vector128 System.Runtime.Intrinsics.Vector128.As(System.Runtime.Intrinsics.Vector128)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'public System.Runtime.Intrinsics.Vector256 System.Runtime.Intrinsics.Vector256.As(System.Runtime.Intrinsics.Vector256)' does not exist in the implementation but it does exist in the contract. @@ -182,4 +176,4 @@ CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatfo CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.TripleDES' in the contract but not the implementation. Compat issues with assembly System.Security.Cryptography.X509Certificates: CannotChangeAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' on 'System.Security.Cryptography.X509Certificates.PublicKey.GetDSAPublicKey()' changed from '[UnsupportedOSPlatformAttribute("ios")]' in the contract to '[UnsupportedOSPlatformAttribute("browser")]' in the implementation. -Total Issues: 150 +Total Issues: 164 \ No newline at end of file diff --git a/src/libraries/apicompat/ApiCompatBaseline.netstandard2.1.txt b/src/libraries/apicompat/ApiCompatBaseline.netstandard2.1.txt index 23cb3764dd968..87684d1d3ed86 100644 --- a/src/libraries/apicompat/ApiCompatBaseline.netstandard2.1.txt +++ b/src/libraries/apicompat/ApiCompatBaseline.netstandard2.1.txt @@ -154,4 +154,9 @@ CannotRemoveAttribute : Attribute 'System.ComponentModel.BrowsableAttribute' exi CannotRemoveAttribute : Attribute 'System.ComponentModel.CategoryAttribute' exists on 'System.Timers.Timer.Elapsed' in the contract but not the implementation. CannotChangeAttribute : Attribute 'System.AttributeUsageAttribute' on 'System.Xml.Serialization.XmlAnyAttributeAttribute' changed from '[AttributeUsageAttribute(AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.ReturnValue)]' in the contract to '[AttributeUsageAttribute(AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.ReturnValue, AllowMultiple=false)]' in the implementation. CannotChangeAttribute : Attribute 'System.AttributeUsageAttribute' on 'System.Xml.Serialization.XmlNamespaceDeclarationsAttribute' changed from '[AttributeUsageAttribute(AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.ReturnValue)]' in the contract to '[AttributeUsageAttribute(AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.ReturnValue, AllowMultiple=false)]' in the implementation. -Total Issues: 155 +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.AssemblyBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +Total Issues: 160 From e10200050fb92eddd60207ea2972ea56462fb940 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Wed, 16 Nov 2022 15:44:09 -0800 Subject: [PATCH 15/36] Revert updates that not needed for initial step --- .../System/Reflection/Emit/AssemblyBuilder.cs | 32 +-- src/coreclr/vm/ecalllist.h | 3 + .../System/Reflection/Emit/EventBuilder.cs | 2 +- .../ref/System.Reflection.Emit.cs | 185 ++++++++-------- .../src/MatchingRefApiCompatBaseline.txt | 195 +++++++---------- .../src/Resources/Strings.resx | 66 ------ .../src/System.Reflection.Emit.csproj | 8 - .../Reflection/Emit/RuntimeAssemblyBuilder.cs | 207 ------------------ .../Reflection/Emit/RuntimeModuleBuilder.cs | 105 --------- ...iCompatBaseline.NetCoreAppLatestStable.txt | 182 ++++++++++++++- .../ApiCompatBaseline.netstandard2.1.txt | 89 +++++++- 11 files changed, 446 insertions(+), 628 deletions(-) delete mode 100644 src/libraries/System.Reflection.Emit/src/Resources/Strings.resx delete mode 100644 src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs delete mode 100644 src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeModuleBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index c2650f2f66fa9..97c8abeefe888 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -19,8 +19,6 @@ namespace System.Reflection.Emit { public partial class AssemblyBuilder { - internal static bool s_useManagedReflectionEmit = true; - [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] [DynamicSecurityMethod] // Required to make Assembly.GetCallingAssembly reliable. public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) @@ -32,7 +30,7 @@ public static AssemblyBuilder DefineDynamicAssembly( AssemblyName name, AssemblyBuilderAccess access, IEnumerable? assemblyAttributes) - => DefineDynamicAssembly(name, access, null, Assembly.GetCallingAssembly()); + => DefineDynamicAssembly(name, access, assemblyAttributes, Assembly.GetCallingAssembly()); private static AssemblyBuilder DefineDynamicAssembly( AssemblyName name, @@ -40,11 +38,6 @@ private static AssemblyBuilder DefineDynamicAssembly( IEnumerable? assemblyAttributes, Assembly? callingAssembly) { - if (s_useManagedReflectionEmit) - { - return (s_defineDynamicAssembly ?? InitDefineDynamicAssembly())(name, access, assemblyAttributes, callingAssembly); - } - ArgumentNullException.ThrowIfNull(name); if (access != AssemblyBuilderAccess.Run && access != AssemblyBuilderAccess.RunAndCollect) @@ -69,29 +62,6 @@ private static AssemblyBuilder DefineDynamicAssembly( return new RuntimeAssemblyBuilder(name, access, assemblyLoadContext, assemblyAttributes); } - - private static Func?, Assembly?, AssemblyBuilder>? s_defineDynamicAssembly; - private static Func?, Assembly?, AssemblyBuilder> InitDefineDynamicAssembly() - { - Type assemblyBuilderType = Type.GetType( - "System.Reflection.Emit.RuntimeAssemblyBuilder, System.Reflection.Emit", - throwOnError: true)!; - - MethodInfo? defineDynamicAssemblyMethod = assemblyBuilderType.GetMethod( - "DefineDynamicAssembly", - BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static, - null, - new Type[] { typeof(AssemblyName), typeof(AssemblyBuilderAccess), typeof(IEnumerable), typeof(Assembly) }, - null); - - if (defineDynamicAssemblyMethod == null) - { - throw new MissingMethodException(assemblyBuilderType.FullName, "DefineDynamicAssembly"); - } - - return s_defineDynamicAssembly = defineDynamicAssemblyMethod. - CreateDelegate?, Assembly?, AssemblyBuilder>>(); - } } internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder diff --git a/src/coreclr/vm/ecalllist.h b/src/coreclr/vm/ecalllist.h index 7ed2b2d40fc9e..775b7e912ae40 100644 --- a/src/coreclr/vm/ecalllist.h +++ b/src/coreclr/vm/ecalllist.h @@ -286,6 +286,9 @@ FCFuncStart(gRuntimeAssemblyFuncs) FCFuncElement("GetToken", AssemblyHandle::GetToken) FCFuncEnd() +FCFuncStart(gAssemblyBuilderFuncs) +FCFuncEnd() + FCFuncStart(gAssemblyLoadContextFuncs) FCFuncElement("GetLoadedAssemblies", AppDomainNative::GetLoadedAssemblies) FCFuncElement("IsTracingEnabled", AssemblyNative::IsTracingEnabled) diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs index 3c36a478a7dd6..87d5c94a54170 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs @@ -3,7 +3,7 @@ namespace System.Reflection.Emit { - public class EventBuilder + public abstract class EventBuilder { protected EventBuilder() { diff --git a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs index 120a0e044be74..d28800de0e7d5 100644 --- a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs +++ b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs @@ -61,36 +61,36 @@ public enum AssemblyBuilderAccess Run = 1, RunAndCollect = 9, } - public sealed partial class ConstructorBuilder : System.Reflection.ConstructorInfo + public abstract partial class ConstructorBuilder : System.Reflection.ConstructorInfo { - internal ConstructorBuilder() { } + protected ConstructorBuilder() { } public override System.Reflection.MethodAttributes Attributes { get { throw null; } } public override System.Reflection.CallingConventions CallingConvention { get { throw null; } } public override System.Type? DeclaringType { get { throw null; } } - public bool InitLocals { get { throw null; } set { } } + public abstract bool InitLocals { get; set; } public override int MetadataToken { get { throw null; } } public override System.RuntimeMethodHandle MethodHandle { get { throw null; } } public override System.Reflection.Module Module { get { throw null; } } public override string Name { get { throw null; } } public override System.Type? ReflectedType { get { throw null; } } - public System.Reflection.Emit.ParameterBuilder DefineParameter(int iSequence, System.Reflection.ParameterAttributes attributes, string? strParamName) { throw null; } + public abstract System.Reflection.Emit.ParameterBuilder DefineParameter(int iSequence, System.Reflection.ParameterAttributes attributes, string? strParamName); public override object[] GetCustomAttributes(bool inherit) { throw null; } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } - public System.Reflection.Emit.ILGenerator GetILGenerator() { throw null; } - public System.Reflection.Emit.ILGenerator GetILGenerator(int streamSize) { throw null; } + public abstract System.Reflection.Emit.ILGenerator GetILGenerator(); + public abstract System.Reflection.Emit.ILGenerator GetILGenerator(int streamSize); public override System.Reflection.MethodImplAttributes GetMethodImplementationFlags() { throw null; } public override System.Reflection.ParameterInfo[] GetParameters() { throw null; } public override object Invoke(object? obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? parameters, System.Globalization.CultureInfo? culture) { throw null; } public override object Invoke(System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? parameters, System.Globalization.CultureInfo? culture) { throw null; } public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } - public void SetImplementationFlags(System.Reflection.MethodImplAttributes attributes) { } + public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public abstract void SetImplementationFlags(System.Reflection.MethodImplAttributes attributes); public override string ToString() { throw null; } } - public sealed partial class EnumBuilder : System.Reflection.TypeInfo + public abstract partial class EnumBuilder : System.Reflection.TypeInfo { - internal EnumBuilder() { } + protected EnumBuilder() { } public override System.Reflection.Assembly Assembly { get { throw null; } } public override string? AssemblyQualifiedName { get { throw null; } } public override System.Type? BaseType { get { throw null; } } @@ -106,13 +106,13 @@ internal EnumBuilder() { } public override string? Namespace { get { throw null; } } public override System.Type? ReflectedType { get { throw null; } } public override System.RuntimeTypeHandle TypeHandle { get { throw null; } } - public System.Reflection.Emit.FieldBuilder UnderlyingField { get { throw null; } } + public abstract System.Reflection.Emit.FieldBuilder UnderlyingField { get; } public override System.Type UnderlyingSystemType { get { throw null; } } [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] public System.Type? CreateType() { throw null; } [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] - public System.Reflection.TypeInfo? CreateTypeInfo() { throw null; } - public System.Reflection.Emit.FieldBuilder DefineLiteral(string literalName, object? literalValue) { throw null; } + public abstract System.Reflection.TypeInfo? CreateTypeInfo(); + public abstract System.Reflection.Emit.FieldBuilder DefineLiteral(string literalName, object? literalValue); protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { throw null; } [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)] protected override System.Reflection.ConstructorInfo? GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, System.Reflection.CallingConventions callConvention, System.Type[] types, System.Reflection.ParameterModifier[]? modifiers) { throw null; } @@ -171,22 +171,22 @@ internal EnumBuilder() { } public override System.Type MakeArrayType(int rank) { throw null; } public override System.Type MakeByRefType() { throw null; } public override System.Type MakePointerType() { throw null; } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } + public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); } - public sealed partial class EventBuilder + public abstract partial class EventBuilder { - internal EventBuilder() { } - public void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } - public void SetAddOnMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } - public void SetRaiseMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } - public void SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } + protected EventBuilder() { } + public abstract void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder); + public abstract void SetAddOnMethod(System.Reflection.Emit.MethodBuilder mdBuilder); + public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public abstract void SetRaiseMethod(System.Reflection.Emit.MethodBuilder mdBuilder); + public abstract void SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder mdBuilder); } - public sealed partial class FieldBuilder : System.Reflection.FieldInfo + public abstract partial class FieldBuilder : System.Reflection.FieldInfo { - internal FieldBuilder() { } + protected FieldBuilder() { } public override System.Reflection.FieldAttributes Attributes { get { throw null; } } public override System.Type? DeclaringType { get { throw null; } } public override System.RuntimeFieldHandle FieldHandle { get { throw null; } } @@ -199,10 +199,10 @@ internal FieldBuilder() { } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } public override object? GetValue(object? obj) { throw null; } public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } - public void SetConstant(object? defaultValue) { } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } - public void SetOffset(int iOffset) { } + public abstract void SetConstant(object? defaultValue); + public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public abstract void SetOffset(int iOffset); public override void SetValue(object? obj, object? val, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, System.Globalization.CultureInfo? culture) { } } public sealed partial class GenericTypeParameterBuilder : System.Reflection.TypeInfo @@ -305,14 +305,14 @@ public void SetGenericParameterAttributes(System.Reflection.GenericParameterAttr public void SetInterfaceConstraints(params System.Type[]? interfaceConstraints) { } public override string ToString() { throw null; } } - public sealed partial class MethodBuilder : System.Reflection.MethodInfo + public abstract partial class MethodBuilder : System.Reflection.MethodInfo { - internal MethodBuilder() { } + protected MethodBuilder() { } public override System.Reflection.MethodAttributes Attributes { get { throw null; } } public override System.Reflection.CallingConventions CallingConvention { get { throw null; } } public override bool ContainsGenericParameters { get { throw null; } } public override System.Type? DeclaringType { get { throw null; } } - public bool InitLocals { get { throw null; } set { } } + public abstract bool InitLocals { get; set; } public override bool IsGenericMethod { get { throw null; } } public override bool IsGenericMethodDefinition { get { throw null; } } public override bool IsSecurityCritical { get { throw null; } } @@ -326,8 +326,8 @@ internal MethodBuilder() { } public override System.Reflection.ParameterInfo ReturnParameter { get { throw null; } } public override System.Type ReturnType { get { throw null; } } public override System.Reflection.ICustomAttributeProvider ReturnTypeCustomAttributes { get { throw null; } } - public System.Reflection.Emit.GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) { throw null; } - public System.Reflection.Emit.ParameterBuilder DefineParameter(int position, System.Reflection.ParameterAttributes attributes, string? strParamName) { throw null; } + public abstract System.Reflection.Emit.GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names); + public abstract System.Reflection.Emit.ParameterBuilder DefineParameter(int position, System.Reflection.ParameterAttributes attributes, string? strParamName); public override bool Equals(object? obj) { throw null; } public override System.Reflection.MethodInfo GetBaseDefinition() { throw null; } public override object[] GetCustomAttributes(bool inherit) { throw null; } @@ -335,8 +335,8 @@ internal MethodBuilder() { } public override System.Type[] GetGenericArguments() { throw null; } public override System.Reflection.MethodInfo GetGenericMethodDefinition() { throw null; } public override int GetHashCode() { throw null; } - public System.Reflection.Emit.ILGenerator GetILGenerator() { throw null; } - public System.Reflection.Emit.ILGenerator GetILGenerator(int size) { throw null; } + public abstract System.Reflection.Emit.ILGenerator GetILGenerator(); + public abstract System.Reflection.Emit.ILGenerator GetILGenerator(int size); public override System.Reflection.MethodImplAttributes GetMethodImplementationFlags() { throw null; } public override System.Reflection.ParameterInfo[] GetParameters() { throw null; } public override object Invoke(object? obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? parameters, System.Globalization.CultureInfo? culture) { throw null; } @@ -344,17 +344,17 @@ internal MethodBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresDynamicCode("The native code for this instantiation might not be available at runtime.")] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] public override System.Reflection.MethodInfo MakeGenericMethod(params System.Type[] typeArguments) { throw null; } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } - public void SetImplementationFlags(System.Reflection.MethodImplAttributes attributes) { } - public void SetParameters(params System.Type[] parameterTypes) { } - public void SetReturnType(System.Type? returnType) { } - public void SetSignature(System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers) { } + public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public abstract void SetImplementationFlags(System.Reflection.MethodImplAttributes attributes); + public abstract void SetParameters(params System.Type[] parameterTypes); + public abstract void SetReturnType(System.Type? returnType); + public abstract void SetSignature(System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers); public override string ToString() { throw null; } } - public partial class ModuleBuilder : System.Reflection.Module + public abstract partial class ModuleBuilder : System.Reflection.Module { - internal ModuleBuilder() { } + protected ModuleBuilder() { } public override System.Reflection.Assembly Assembly { get { throw null; } } [System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute("Returns for modules with no file path")] public override string FullyQualifiedName { get { throw null; } } @@ -364,26 +364,26 @@ internal ModuleBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute("Returns for modules with no file path")] public override string Name { get { throw null; } } public override string ScopeName { get { throw null; } } - public void CreateGlobalFunctions() { } - public System.Reflection.Emit.EnumBuilder DefineEnum(string name, System.Reflection.TypeAttributes visibility, System.Type underlyingType) { throw null; } + public abstract void CreateGlobalFunctions(); + public abstract System.Reflection.Emit.EnumBuilder DefineEnum(string name, System.Reflection.TypeAttributes visibility, System.Type underlyingType); public System.Reflection.Emit.MethodBuilder DefineGlobalMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes) { throw null; } - public System.Reflection.Emit.MethodBuilder DefineGlobalMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? requiredReturnTypeCustomModifiers, System.Type[]? optionalReturnTypeCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? requiredParameterTypeCustomModifiers, System.Type[][]? optionalParameterTypeCustomModifiers) { throw null; } + public abstract System.Reflection.Emit.MethodBuilder DefineGlobalMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? requiredReturnTypeCustomModifiers, System.Type[]? optionalReturnTypeCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? requiredParameterTypeCustomModifiers, System.Type[][]? optionalParameterTypeCustomModifiers); public System.Reflection.Emit.MethodBuilder DefineGlobalMethod(string name, System.Reflection.MethodAttributes attributes, System.Type? returnType, System.Type[]? parameterTypes) { throw null; } - public System.Reflection.Emit.FieldBuilder DefineInitializedData(string name, byte[] data, System.Reflection.FieldAttributes attributes) { throw null; } + public abstract System.Reflection.Emit.FieldBuilder DefineInitializedData(string name, byte[] data, System.Reflection.FieldAttributes attributes); [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] public System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet) { throw null; } + public abstract System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet); public System.Reflection.Emit.TypeBuilder DefineType(string name) { throw null; } public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr) { throw null; } public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent) { throw null; } public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, int typesize) { throw null; } public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Reflection.Emit.PackingSize packsize) { throw null; } - public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Reflection.Emit.PackingSize packingSize, int typesize) { throw null; } - public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Type[]? interfaces) { throw null; } - public System.Reflection.Emit.FieldBuilder DefineUninitializedData(string name, int size, System.Reflection.FieldAttributes attributes) { throw null; } + public abstract System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Reflection.Emit.PackingSize packingSize, int typesize); + public abstract System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Type[]? interfaces); + public abstract System.Reflection.Emit.FieldBuilder DefineUninitializedData(string name, int size, System.Reflection.FieldAttributes attributes); public override bool Equals(object? obj) { throw null; } - public System.Reflection.MethodInfo GetArrayMethod(System.Type arrayClass, string methodName, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes) { throw null; } + public abstract System.Reflection.MethodInfo GetArrayMethod(System.Type arrayClass, string methodName, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes); public override object[] GetCustomAttributes(bool inherit) { throw null; } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } public override System.Collections.Generic.IList GetCustomAttributesData() { throw null; } @@ -419,12 +419,21 @@ public void CreateGlobalFunctions() { } public override string ResolveString(int metadataToken) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Trimming changes metadata tokens")] public override System.Type ResolveType(int metadataToken, System.Type[]? genericTypeArguments, System.Type[]? genericMethodArguments) { throw null; } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } + public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + + public abstract int GetTypeToken(Type type, bool getGenericDefinition = true); + public abstract int GetFieldToken(FieldInfo field); + public abstract int GetConstructorToken(ConstructorInfo con); + public abstract int GetSignatureToken(SignatureHelper sigHelper); + public abstract int GetStringConstant(string str); + public abstract ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor); + public abstract FieldInfo GetField(Type type, FieldInfo field); + public abstract MethodInfo GetMethod(Type type, MethodInfo method); } - public sealed partial class PropertyBuilder : System.Reflection.PropertyInfo + public abstract partial class PropertyBuilder : System.Reflection.PropertyInfo { - internal PropertyBuilder() { } + protected PropertyBuilder() { } public override System.Reflection.PropertyAttributes Attributes { get { throw null; } } public override bool CanRead { get { throw null; } } public override bool CanWrite { get { throw null; } } @@ -433,7 +442,7 @@ internal PropertyBuilder() { } public override string Name { get { throw null; } } public override System.Type PropertyType { get { throw null; } } public override System.Type? ReflectedType { get { throw null; } } - public void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } + public abstract void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder); public override System.Reflection.MethodInfo[] GetAccessors(bool nonPublic) { throw null; } public override object[] GetCustomAttributes(bool inherit) { throw null; } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } @@ -443,17 +452,17 @@ public void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } public override object GetValue(object? obj, object?[]? index) { throw null; } public override object GetValue(object? obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? index, System.Globalization.CultureInfo? culture) { throw null; } public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } - public void SetConstant(object? defaultValue) { } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } - public void SetGetMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } - public void SetSetMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } + public abstract void SetConstant(object? defaultValue); + public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public abstract void SetGetMethod(System.Reflection.Emit.MethodBuilder mdBuilder); + public abstract void SetSetMethod(System.Reflection.Emit.MethodBuilder mdBuilder); public override void SetValue(object? obj, object? value, object?[]? index) { } public override void SetValue(object? obj, object? value, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? index, System.Globalization.CultureInfo? culture) { } } - public sealed partial class TypeBuilder : System.Reflection.TypeInfo + public abstract partial class TypeBuilder : System.Reflection.TypeInfo { - internal TypeBuilder() { } + protected TypeBuilder() { } public const int UnspecifiedTypeSize = 0; public override System.Reflection.Assembly Assembly { get { throw null; } } public override string? AssemblyQualifiedName { get { throw null; } } @@ -478,49 +487,49 @@ internal TypeBuilder() { } public override System.Reflection.Module Module { get { throw null; } } public override string Name { get { throw null; } } public override string? Namespace { get { throw null; } } - public System.Reflection.Emit.PackingSize PackingSize { get { throw null; } } + public abstract System.Reflection.Emit.PackingSize PackingSize { get; } public override System.Type? ReflectedType { get { throw null; } } - public int Size { get { throw null; } } + public abstract int Size { get; } public override System.RuntimeTypeHandle TypeHandle { get { throw null; } } public override System.Type UnderlyingSystemType { get { throw null; } } - public void AddInterfaceImplementation([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type interfaceType) { } + public abstract void AddInterfaceImplementation([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type interfaceType); [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] public System.Type? CreateType() { throw null; } [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] - public System.Reflection.TypeInfo? CreateTypeInfo() { throw null; } + public abstract System.Reflection.TypeInfo? CreateTypeInfo(); public System.Reflection.Emit.ConstructorBuilder DefineConstructor(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type[]? parameterTypes) { throw null; } - public System.Reflection.Emit.ConstructorBuilder DefineConstructor(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type[]? parameterTypes, System.Type[][]? requiredCustomModifiers, System.Type[][]? optionalCustomModifiers) { throw null; } - public System.Reflection.Emit.ConstructorBuilder DefineDefaultConstructor(System.Reflection.MethodAttributes attributes) { throw null; } - public System.Reflection.Emit.EventBuilder DefineEvent(string name, System.Reflection.EventAttributes attributes, System.Type eventtype) { throw null; } + public abstract System.Reflection.Emit.ConstructorBuilder DefineConstructor(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type[]? parameterTypes, System.Type[][]? requiredCustomModifiers, System.Type[][]? optionalCustomModifiers); + public abstract System.Reflection.Emit.ConstructorBuilder DefineDefaultConstructor(System.Reflection.MethodAttributes attributes); + public abstract System.Reflection.Emit.EventBuilder DefineEvent(string name, System.Reflection.EventAttributes attributes, System.Type eventtype); public System.Reflection.Emit.FieldBuilder DefineField(string fieldName, System.Type type, System.Reflection.FieldAttributes attributes) { throw null; } - public System.Reflection.Emit.FieldBuilder DefineField(string fieldName, System.Type type, System.Type[]? requiredCustomModifiers, System.Type[]? optionalCustomModifiers, System.Reflection.FieldAttributes attributes) { throw null; } - public System.Reflection.Emit.GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) { throw null; } - public System.Reflection.Emit.FieldBuilder DefineInitializedData(string name, byte[] data, System.Reflection.FieldAttributes attributes) { throw null; } + public abstract System.Reflection.Emit.FieldBuilder DefineField(string fieldName, System.Type type, System.Type[]? requiredCustomModifiers, System.Type[]? optionalCustomModifiers, System.Reflection.FieldAttributes attributes); + public abstract System.Reflection.Emit.GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names); + public abstract System.Reflection.Emit.FieldBuilder DefineInitializedData(string name, byte[] data, System.Reflection.FieldAttributes attributes); public System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes) { throw null; } public System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention) { throw null; } public System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes) { throw null; } - public System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers) { throw null; } + public abstract System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers); public System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes, System.Type? returnType, System.Type[]? parameterTypes) { throw null; } - public void DefineMethodOverride(System.Reflection.MethodInfo methodInfoBody, System.Reflection.MethodInfo methodInfoDeclaration) { } + public abstract void DefineMethodOverride(System.Reflection.MethodInfo methodInfoBody, System.Reflection.MethodInfo methodInfoDeclaration); public System.Reflection.Emit.TypeBuilder DefineNestedType(string name) { throw null; } public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr) { throw null; } public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent) { throw null; } public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, int typeSize) { throw null; } public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Reflection.Emit.PackingSize packSize) { throw null; } - public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Reflection.Emit.PackingSize packSize, int typeSize) { throw null; } - public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Type[]? interfaces) { throw null; } + public abstract System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Reflection.Emit.PackingSize packSize, int typeSize); + public abstract System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Type[]? interfaces); [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] public System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] public System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet) { throw null; } + public abstract System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet); public System.Reflection.Emit.PropertyBuilder DefineProperty(string name, System.Reflection.PropertyAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[]? parameterTypes) { throw null; } - public System.Reflection.Emit.PropertyBuilder DefineProperty(string name, System.Reflection.PropertyAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers) { throw null; } + public abstract System.Reflection.Emit.PropertyBuilder DefineProperty(string name, System.Reflection.PropertyAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers); public System.Reflection.Emit.PropertyBuilder DefineProperty(string name, System.Reflection.PropertyAttributes attributes, System.Type returnType, System.Type[]? parameterTypes) { throw null; } public System.Reflection.Emit.PropertyBuilder DefineProperty(string name, System.Reflection.PropertyAttributes attributes, System.Type returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers) { throw null; } - public System.Reflection.Emit.ConstructorBuilder DefineTypeInitializer() { throw null; } - public System.Reflection.Emit.FieldBuilder DefineUninitializedData(string name, int size, System.Reflection.FieldAttributes attributes) { throw null; } + public abstract System.Reflection.Emit.ConstructorBuilder DefineTypeInitializer(); + public abstract System.Reflection.Emit.FieldBuilder DefineUninitializedData(string name, int size, System.Reflection.FieldAttributes attributes); protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { throw null; } public static System.Reflection.ConstructorInfo GetConstructor(System.Type type, System.Reflection.ConstructorInfo constructor) { throw null; } [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)] @@ -574,7 +583,7 @@ public void DefineMethodOverride(System.Reflection.MethodInfo methodInfoBody, Sy public override bool IsAssignableFrom([System.Diagnostics.CodeAnalysis.NotNullWhenAttribute(true)] System.Type? c) { throw null; } protected override bool IsByRefImpl() { throw null; } protected override bool IsCOMObjectImpl() { throw null; } - public bool IsCreated() { throw null; } + public abstract bool IsCreated(); public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } protected override bool IsPointerImpl() { throw null; } protected override bool IsPrimitiveImpl() { throw null; } @@ -588,9 +597,9 @@ public void DefineMethodOverride(System.Reflection.MethodInfo methodInfoBody, Sy [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] public override System.Type MakeGenericType(params System.Type[] typeArguments) { throw null; } public override System.Type MakePointerType() { throw null; } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } - public void SetParent([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent) { } + public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public abstract void SetParent([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent); public override string ToString() { throw null; } } } diff --git a/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt b/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt index 5f520c13d9737..3edd1338d4a88 100644 --- a/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt +++ b/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt @@ -1,119 +1,86 @@ Compat issues with assembly System.Reflection.Emit: -CannotMakeTypeAbstract : Type 'System.Reflection.Emit.AssemblyBuilder' is abstract in the implementation but is not abstract in the contract. +MembersMustExist : Member 'protected System.ModuleHandle System.Reflection.Emit.ModuleBuilder.GetModuleHandleImpl()' does not exist in the reference but it does exist in the implementation. CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String)' is abstract in the reference but is not abstract in the implementation. CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the reference but is not abstract in the implementation. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the reference but is not abstract in the implementation. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. -MembersMustExist : Member 'protected System.ModuleHandle System.Reflection.Emit.ModuleBuilder.GetModuleHandleImpl()' does not exist in the reference but it does exist in the implementation. -TypesMustExist : Type 'System.Reflection.Emit.RuntimeAssemblyBuilder' does not exist in the reference but it does exist in the implementation. -CannotMakeTypeAbstract : Type 'System.Reflection.Emit.ConstructorBuilder' is abstract in the implementation but is not abstract in the contract. -CannotMakeTypeAbstract : Type 'System.Reflection.Emit.EnumBuilder' is abstract in the implementation but is not abstract in the contract. -CannotMakeTypeAbstract : Type 'System.Reflection.Emit.FieldBuilder' is abstract in the implementation but is not abstract in the contract. -CannotMakeTypeAbstract : Type 'System.Reflection.Emit.MethodBuilder' is abstract in the implementation but is not abstract in the contract. -CannotMakeTypeAbstract : Type 'System.Reflection.Emit.ModuleBuilder' is abstract in the implementation but is not abstract in the contract. -CannotMakeTypeAbstract : Type 'System.Reflection.Emit.PropertyBuilder' is abstract in the implementation but is not abstract in the contract. -CannotMakeTypeAbstract : Type 'System.Reflection.Emit.TypeBuilder' is abstract in the implementation but is not abstract in the contract. -CannotSealType : Type 'System.Reflection.Emit.ConstructorBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. -MembersMustExist : Member 'protected void System.Reflection.Emit.ConstructorBuilder..ctor()' does not exist in the reference but it does exist in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Boolean System.Reflection.Emit.ConstructorBuilder.InitLocals' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.ConstructorBuilder.GetILGenerator()' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Boolean System.Reflection.Emit.ConstructorBuilder.InitLocals.get()' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ConstructorBuilder.InitLocals.set(System.Boolean)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes)' is non-virtual in the reference but is virtual in the implementation. -CannotSealType : Type 'System.Reflection.Emit.EnumBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. -MembersMustExist : Member 'protected void System.Reflection.Emit.EnumBuilder..ctor()' does not exist in the reference but it does exist in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.UnderlyingField' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.TypeInfo System.Reflection.Emit.EnumBuilder.CreateTypeInfo()' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String, System.Object)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.UnderlyingField.get()' is non-virtual in the reference but is virtual in the implementation. -CannotSealType : Type 'System.Reflection.Emit.EventBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. -MembersMustExist : Member 'protected void System.Reflection.Emit.EventBuilder..ctor()' does not exist in the reference but it does exist in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotSealType : Type 'System.Reflection.Emit.FieldBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. -MembersMustExist : Member 'protected void System.Reflection.Emit.FieldBuilder..ctor()' does not exist in the reference but it does exist in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.FieldBuilder.SetConstant(System.Object)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32)' is non-virtual in the reference but is virtual in the implementation. -annotSealType : Type 'System.Reflection.Emit.MethodBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. -MembersMustExist : Member 'protected void System.Reflection.Emit.MethodBuilder..ctor()' does not exist in the reference but it does exist in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Boolean System.Reflection.Emit.MethodBuilder.InitLocals' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.GenericTypeParameterBuilder[] System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.MethodBuilder.GetILGenerator()' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Boolean System.Reflection.Emit.MethodBuilder.InitLocals.get()' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.InitLocals.set(System.Boolean)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.MethodBuilder.SetSignature(System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is non-virtual in the reference but is virtual in the implementation. -CannotSealType : Type 'System.Reflection.Emit.ModuleBuilder' is effectively (has a private constructor) sealed in the reference but not sealed in the implementation. -MembersMustExist : Member 'protected void System.Reflection.Emit.ModuleBuilder..ctor()' does not exist in the reference but it does exist in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions()' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.EnumBuilder System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String, System.Reflection.TypeAttributes, System.Type)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.ModuleBuilder.DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.ModuleBuilder.DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.MethodInfo System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])' is non-virtual in the reference but is virtual in the implementation. -MembersMustExist : Member 'public System.Reflection.ConstructorInfo System.Reflection.Emit.ModuleBuilder.GetConstructor(System.Type, System.Reflection.ConstructorInfo)' does not exist in the reference but it does exist in the implementation. -MembersMustExist : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo)' does not exist in the reference but it does exist in the implementation. -MembersMustExist : Member 'public System.Reflection.FieldInfo System.Reflection.Emit.ModuleBuilder.GetField(System.Type, System.Reflection.FieldInfo)' does not exist in the reference but it does exist in the implementation. -MembersMustExist : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo)' does not exist in the reference but it does exist in the implementation. -MembersMustExist : Member 'public System.Reflection.MethodInfo System.Reflection.Emit.ModuleBuilder.GetMethod(System.Type, System.Reflection.MethodInfo)' does not exist in the reference but it does exist in the implementation. -MembersMustExist : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper)' does not exist in the reference but it does exist in the implementation. -MembersMustExist : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String)' does not exist in the reference but it does exist in the implementation. -MembersMustExist : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type, System.Boolean)' does not exist in the reference but it does exist in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotSealType : Type 'System.Reflection.Emit.PropertyBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. -MembersMustExist : Member 'protected void System.Reflection.Emit.PropertyBuilder..ctor()' does not exist in the reference but it does exist in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotSealType : Type 'System.Reflection.Emit.TypeBuilder' is actually (has the sealed modifier) sealed in the reference but not sealed in the implementation. -MembersMustExist : Member 'protected void System.Reflection.Emit.TypeBuilder..ctor()' does not exist in the reference but it does exist in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.PackingSize System.Reflection.Emit.TypeBuilder.PackingSize' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.TypeInfo System.Reflection.Emit.TypeBuilder.CreateTypeInfo()' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type[], System.Type[][], System.Type[][])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.EventBuilder System.Reflection.Emit.TypeBuilder.DefineEvent(System.String, System.Reflection.EventAttributes, System.Type)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineField(System.String, System.Type, System.Type[], System.Type[], System.Reflection.FieldAttributes)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.GenericTypeParameterBuilder[] System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefineMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo, System.Reflection.MethodInfo)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.PropertyBuilder System.Reflection.Emit.TypeBuilder.DefineProperty(System.String, System.Reflection.PropertyAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineTypeInitializer()' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Boolean System.Reflection.Emit.TypeBuilder.IsCreated()' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Reflection.Emit.PackingSize System.Reflection.Emit.TypeBuilder.PackingSize.get()' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public void System.Reflection.Emit.TypeBuilder.SetParent(System.Type)' is non-virtual in the reference but is virtual in the implementation. -CannotMakeMemberNonVirtual : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size.get()' is non-virtual in the reference but is virtual in the implementation. -Total Issues: 117 \ No newline at end of file +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.ConstructorBuilder.InitLocals' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.ConstructorBuilder.GetILGenerator()' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.ConstructorBuilder.InitLocals.get()' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.InitLocals.set(System.Boolean)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.UnderlyingField' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.TypeInfo System.Reflection.Emit.EnumBuilder.CreateTypeInfo()' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String, System.Object)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.UnderlyingField.get()' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetConstant(System.Object)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.MethodBuilder.InitLocals' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.GenericTypeParameterBuilder[] System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.MethodBuilder.GetILGenerator()' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.MethodBuilder.InitLocals.get()' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.InitLocals.set(System.Boolean)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetSignature(System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions()' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.EnumBuilder System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String, System.Reflection.TypeAttributes, System.Type)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.ModuleBuilder.DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.ModuleBuilder.DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.MethodInfo System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PackingSize System.Reflection.Emit.TypeBuilder.PackingSize' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.TypeInfo System.Reflection.Emit.TypeBuilder.CreateTypeInfo()' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type[], System.Type[][], System.Type[][])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.EventBuilder System.Reflection.Emit.TypeBuilder.DefineEvent(System.String, System.Reflection.EventAttributes, System.Type)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineField(System.String, System.Type, System.Type[], System.Type[], System.Reflection.FieldAttributes)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.GenericTypeParameterBuilder[] System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefineMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo, System.Reflection.MethodInfo)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PropertyBuilder System.Reflection.Emit.TypeBuilder.DefineProperty(System.String, System.Reflection.PropertyAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineTypeInitializer()' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.TypeBuilder.IsCreated()' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PackingSize System.Reflection.Emit.TypeBuilder.PackingSize.get()' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetParent(System.Type)' is abstract in the reference but is not abstract in the implementation. +CannotMakeMemberAbstract : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size.get()' is abstract in the reference but is not abstract in the implementation. +Total Issues: 93 \ No newline at end of file diff --git a/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx b/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx deleted file mode 100644 index a316db756cea2..0000000000000 --- a/src/libraries/System.Reflection.Emit/src/Resources/Strings.resx +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Illegal enum value: {0}. - - - AssemblyName.Name cannot be null or an empty string. - - diff --git a/src/libraries/System.Reflection.Emit/src/System.Reflection.Emit.csproj b/src/libraries/System.Reflection.Emit/src/System.Reflection.Emit.csproj index 2592d2087fe55..8e784c9864ff8 100644 --- a/src/libraries/System.Reflection.Emit/src/System.Reflection.Emit.csproj +++ b/src/libraries/System.Reflection.Emit/src/System.Reflection.Emit.csproj @@ -2,16 +2,8 @@ true $(NetCoreAppCurrent) - - true - - - - - - diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs deleted file mode 100644 index 5b38148f61180..0000000000000 --- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs +++ /dev/null @@ -1,207 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Globalization; -using System.IO; -using System.Reflection.Metadata; -using System.Reflection.Metadata.Ecma335; -using System.Reflection.PortableExecutable; -using System.Runtime.Loader; - -namespace System.Reflection.Emit -{ - public sealed class RuntimeAssemblyBuilder : AssemblyBuilder - { - private Assembly _internalAssembly; - - // https://docs.microsoft.com/en-us/dotnet/api/system.reflection.metadata.ecma335.metadatabuilder - - // TODO: Create a new method for loading the assembly as dynamic and attached to the original load context - private sealed class ReflectionEmitLoadContext : AssemblyLoadContext - { - public ReflectionEmitLoadContext(bool isCollectible) - : base(isCollectible) - { - } - } - - [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", - Justification = "Reflection.Emit can only reference existing code.")] - private RuntimeAssemblyBuilder( - AssemblyName name, - AssemblyBuilderAccess access, - AssemblyLoadContext assemblyLoadContext, - IEnumerable? assemblyAttributes) - { - var metadata = new MetadataBuilder(); - - string? simpleName = name.Name; - if (string.IsNullOrEmpty(simpleName)) - { - throw new ArgumentException(SR.ArgumentNull_AssemblyNameName); - } - - Version? version = name.Version; - string? cultureName = name.CultureName; - byte[]? publicKey = name.GetPublicKey(); - - AssemblyFlags flags = (AssemblyFlags)name.Flags; - -#pragma warning disable SYSLIB0037 // AssemblyName.HashAlgorithm is obsolete - AssemblyHashAlgorithm hashAlgorithm = (AssemblyHashAlgorithm)name.HashAlgorithm; -#pragma warning restore - - metadata.AddAssembly( - metadata.GetOrAddString(simpleName), - version: (version != null) ? version : new Version(0, 0, 0, 0), - culture: (cultureName != null) ? metadata.GetOrAddString(cultureName) : default, - publicKey: (publicKey != null) ? metadata.GetOrAddBlob(publicKey) : default, - flags: flags, - hashAlgorithm: hashAlgorithm); - - metadata.AddModule( - 0, - metadata.GetOrAddString("RefEmit_InMemoryManifestModule"), - metadata.GetOrAddGuid(Guid.NewGuid()), - default(GuidHandle), - default(GuidHandle)); - - if (assemblyAttributes != null) - { - foreach (CustomAttributeBuilder assemblyAttribute in assemblyAttributes) - { - SetCustomAttribute(assemblyAttribute); - } - } - - var pe = new ManagedPEBuilder( - new PEHeaderBuilder(imageCharacteristics: Characteristics.ExecutableImage), - new MetadataRootBuilder(metadata), - new BlobBuilder()); - - var peBlob = new BlobBuilder(); - pe.Serialize(peBlob); - - var ms = new MemoryStream(); - peBlob.WriteContentTo(ms); - - ms.Position = 0; - - // TODO: Create a new method for loading the assembly as dynamic and attached to the original load context - assemblyLoadContext = new ReflectionEmitLoadContext(isCollectible: access == AssemblyBuilderAccess.RunAndCollect); - - _internalAssembly = assemblyLoadContext.LoadFromStream(ms); - } - - public static AssemblyBuilder DefineDynamicAssembly( - AssemblyName name!!, - AssemblyBuilderAccess access, - IEnumerable? assemblyAttributes, - Assembly? callingAssembly) - { - ArgumentNullException.ThrowIfNull(name); - - if (access != AssemblyBuilderAccess.Run && access != AssemblyBuilderAccess.RunAndCollect) - { - throw new ArgumentException(SR.Format(SR.Arg_EnumIllegalVal, (int)access), nameof(access)); - } - - if (callingAssembly == null) - { - // Called either from interop or async delegate invocation. Rejecting because we don't - // know how to set the correct context of the new dynamic assembly. - throw new InvalidOperationException(); - } - - AssemblyLoadContext? assemblyLoadContext = - AssemblyLoadContext.CurrentContextualReflectionContext ?? AssemblyLoadContext.GetLoadContext(callingAssembly); - - if (assemblyLoadContext == null) - { - throw new InvalidOperationException(); - } - - return new RuntimeAssemblyBuilder(name, access, assemblyLoadContext, assemblyAttributes); - } - - internal Assembly InternalAssembly => _internalAssembly; - - #region Assembly overrides - public override object[] GetCustomAttributes(bool inherit) - => InternalAssembly.GetCustomAttributes(inherit); - - public override object[] GetCustomAttributes(Type attributeType, bool inherit) - => InternalAssembly.GetCustomAttributes(attributeType, inherit); - - public override bool IsDefined(Type attributeType, bool inherit) - => InternalAssembly.IsDefined(attributeType, inherit); - - public override IList GetCustomAttributesData() - => InternalAssembly.GetCustomAttributesData(); - - public override AssemblyName GetName(bool copiedName) - => InternalAssembly.GetName(copiedName); - - public override string? FullName - => InternalAssembly.FullName; - - [RequiresUnreferencedCode("Types might be removed")] - public override Type? GetType(string name, bool throwOnError, bool ignoreCase) - => InternalAssembly.GetType(name, throwOnError, ignoreCase); - - public override bool ReflectionOnly - => InternalAssembly.ReflectionOnly; - - public override Module? GetModule(string name) - => InternalAssembly.GetModule(name); - - [RequiresUnreferencedCode("Assembly references might be removed")] - public override AssemblyName[] GetReferencedAssemblies() - => InternalAssembly.GetReferencedAssemblies(); - - public override long HostContext - => InternalAssembly.HostContext; - - public override Module[] GetModules(bool getResourceModules) - => InternalAssembly.GetModules(getResourceModules); - - public override Module[] GetLoadedModules(bool getResourceModules) - => InternalAssembly.GetLoadedModules(getResourceModules); - - public override Assembly GetSatelliteAssembly(CultureInfo culture) - => InternalAssembly.GetSatelliteAssembly(culture, null); - - public override Assembly GetSatelliteAssembly(CultureInfo culture, Version? version) - => InternalAssembly.GetSatelliteAssembly(culture, version); - - public override bool IsCollectible - => InternalAssembly.IsCollectible; - #endregion - - public override Module ManifestModule - => throw new NotImplementedException(); // TODO _manifestModuleBuilder.InternalModule; - - public override ModuleBuilder DefineDynamicModule(string name) - { - throw new NotImplementedException(); // TODO - } - - public override ModuleBuilder? GetDynamicModule(string name) - { - throw new NotImplementedException(); // TODO - } - - public override void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute) - { - throw new NotImplementedException(); // TODO - } - - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) - { - throw new NotImplementedException(); // TODO - } - } -} diff --git a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeModuleBuilder.cs b/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeModuleBuilder.cs deleted file mode 100644 index 41c906da53ba0..0000000000000 --- a/src/libraries/System.Reflection.Emit/src/System/Reflection/Emit/RuntimeModuleBuilder.cs +++ /dev/null @@ -1,105 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Diagnostics.CodeAnalysis; -using System.Runtime.InteropServices; - -namespace System.Reflection.Emit -{ - public partial class ModuleBuilder : Module - { - internal ModuleBuilder() - { - // Prevent generating a default constructor - } - - public override Assembly Assembly - { - get - { - return default; - } - } - - [RequiresAssemblyFiles(UnknownStringMessageInRAF)] - public override string FullyQualifiedName - { - get - { - return default; - } - } - - [RequiresAssemblyFiles(UnknownStringMessageInRAF)] - public override string Name - { - get - { - return default; - } - } - - public void CreateGlobalFunctions() - { - } - - public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type underlyingType) - { - return default; - } - - public MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] requiredReturnTypeCustomModifiers, Type[] optionalReturnTypeCustomModifiers, Type[] parameterTypes, Type[][] requiredParameterTypeCustomModifiers, Type[][] optionalParameterTypeCustomModifiers) - { - return default; - } - - public FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) - { - return default; - } - - [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type returnType, Type[] parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet) - { - return default; - } - - public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type parent, PackingSize packingSize, int typesize) - { - return default; - } - - public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type parent, Type[] interfaces) - { - return default; - } - - public FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) - { - return default; - } - - public override bool Equals(object? obj) - { - return default; - } - - public MethodInfo GetArrayMethod(Type arrayClass, string methodName, CallingConventions callingConvention, Type returnType, Type[] parameterTypes) - { - return default; - } - - public override int GetHashCode() - { - return default; - } - - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - { - } - - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) - { - } - } -} diff --git a/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt b/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt index 59f5a1ad7f99f..1019db8c66ddb 100644 --- a/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt +++ b/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt @@ -5,6 +5,93 @@ CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder S CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.ConstructorBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.ConstructorBuilder.InitLocals' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.ConstructorBuilder.GetILGenerator()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.ConstructorBuilder.InitLocals.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.InitLocals.set(System.Boolean)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.EnumBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.UnderlyingField' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.TypeInfo System.Reflection.Emit.EnumBuilder.CreateTypeInfo()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String, System.Object)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.UnderlyingField.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.EventBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.FieldBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetConstant(System.Object)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.MethodBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.MethodBuilder.InitLocals' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.GenericTypeParameterBuilder[] System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.MethodBuilder.GetILGenerator()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.MethodBuilder.InitLocals.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.InitLocals.set(System.Boolean)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetSignature(System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.ModuleBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.EnumBuilder System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String, System.Reflection.TypeAttributes, System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.ModuleBuilder.DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.ModuleBuilder.DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.MethodInfo System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.PropertyBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.TypeBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PackingSize System.Reflection.Emit.TypeBuilder.PackingSize' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.TypeInfo System.Reflection.Emit.TypeBuilder.CreateTypeInfo()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.EventBuilder System.Reflection.Emit.TypeBuilder.DefineEvent(System.String, System.Reflection.EventAttributes, System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineField(System.String, System.Type, System.Type[], System.Type[], System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.GenericTypeParameterBuilder[] System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefineMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo, System.Reflection.MethodInfo)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PropertyBuilder System.Reflection.Emit.TypeBuilder.DefineProperty(System.String, System.Reflection.PropertyAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineTypeInitializer()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.TypeBuilder.IsCreated()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PackingSize System.Reflection.Emit.TypeBuilder.PackingSize.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetParent(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size.get()' is abstract in the implementation but is not abstract in the contract. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.Aes' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' in the contract but not the implementation. @@ -58,6 +145,93 @@ CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder S CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.ConstructorBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.ConstructorBuilder.InitLocals' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.ConstructorBuilder.GetILGenerator()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.ConstructorBuilder.InitLocals.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.InitLocals.set(System.Boolean)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.EnumBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.UnderlyingField' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.TypeInfo System.Reflection.Emit.EnumBuilder.CreateTypeInfo()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String, System.Object)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.UnderlyingField.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.EventBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.FieldBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetConstant(System.Object)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.MethodBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.MethodBuilder.InitLocals' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.GenericTypeParameterBuilder[] System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.MethodBuilder.GetILGenerator()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.MethodBuilder.InitLocals.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.InitLocals.set(System.Boolean)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetSignature(System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.ModuleBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.EnumBuilder System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String, System.Reflection.TypeAttributes, System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.ModuleBuilder.DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.ModuleBuilder.DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.MethodInfo System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.PropertyBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.TypeBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PackingSize System.Reflection.Emit.TypeBuilder.PackingSize' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.TypeInfo System.Reflection.Emit.TypeBuilder.CreateTypeInfo()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.EventBuilder System.Reflection.Emit.TypeBuilder.DefineEvent(System.String, System.Reflection.EventAttributes, System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineField(System.String, System.Type, System.Type[], System.Type[], System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.GenericTypeParameterBuilder[] System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefineMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo, System.Reflection.MethodInfo)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PropertyBuilder System.Reflection.Emit.TypeBuilder.DefineProperty(System.String, System.Reflection.PropertyAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineTypeInitializer()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.TypeBuilder.IsCreated()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PackingSize System.Reflection.Emit.TypeBuilder.PackingSize.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetParent(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size.get()' is abstract in the implementation but is not abstract in the contract. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.Aes' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' in the contract but not the implementation. @@ -131,12 +305,6 @@ Compat issues with assembly System.Runtime: CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.RequiresPreviewFeaturesAttribute' exists on 'System.String System.Runtime.CompilerServices.RuntimeFeature.VirtualStaticsInInterfaces' in the contract but not the implementation. CannotChangeAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' on 'System.IO.FileStream.Lock(System.Int64, System.Int64)' changed from '[UnsupportedOSPlatformAttribute("ios")]' in the contract to '[UnsupportedOSPlatformAttribute("freebsd")]' in the implementation. CannotChangeAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' on 'System.IO.FileStream.Unlock(System.Int64, System.Int64)' changed from '[UnsupportedOSPlatformAttribute("ios")]' in the contract to '[UnsupportedOSPlatformAttribute("freebsd")]' in the implementation. -Compat issues with assembly System.Reflection.Emit: -CannotMakeTypeAbstract : Type 'System.Reflection.Emit.AssemblyBuilder' is abstract in the implementation but is not abstract in the contract. -CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. -CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. -CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. -CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. Compat issues with assembly System.Runtime.Intrinsics: MembersMustExist : Member 'public System.Runtime.Intrinsics.Vector128 System.Runtime.Intrinsics.Vector128.As(System.Runtime.Intrinsics.Vector128)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'public System.Runtime.Intrinsics.Vector256 System.Runtime.Intrinsics.Vector256.As(System.Runtime.Intrinsics.Vector256)' does not exist in the implementation but it does exist in the contract. @@ -176,4 +344,4 @@ CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatfo CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.TripleDES' in the contract but not the implementation. Compat issues with assembly System.Security.Cryptography.X509Certificates: CannotChangeAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' on 'System.Security.Cryptography.X509Certificates.PublicKey.GetDSAPublicKey()' changed from '[UnsupportedOSPlatformAttribute("ios")]' in the contract to '[UnsupportedOSPlatformAttribute("browser")]' in the implementation. -Total Issues: 164 \ No newline at end of file +Total Issues: 332 \ No newline at end of file diff --git a/src/libraries/apicompat/ApiCompatBaseline.netstandard2.1.txt b/src/libraries/apicompat/ApiCompatBaseline.netstandard2.1.txt index 87684d1d3ed86..39057b5b14b2a 100644 --- a/src/libraries/apicompat/ApiCompatBaseline.netstandard2.1.txt +++ b/src/libraries/apicompat/ApiCompatBaseline.netstandard2.1.txt @@ -159,4 +159,91 @@ CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder S CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ModuleBuilder System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String)' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. -Total Issues: 160 +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.ConstructorBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.ConstructorBuilder.InitLocals' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.ConstructorBuilder.GetILGenerator()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.ConstructorBuilder.InitLocals.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.InitLocals.set(System.Boolean)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.EnumBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.UnderlyingField' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.TypeInfo System.Reflection.Emit.EnumBuilder.CreateTypeInfo()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String, System.Object)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.EnumBuilder.UnderlyingField.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.EventBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.FieldBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetConstant(System.Object)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.MethodBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.MethodBuilder.InitLocals' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.GenericTypeParameterBuilder[] System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ParameterBuilder System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32, System.Reflection.ParameterAttributes, System.String)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.MethodBuilder.GetILGenerator()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ILGenerator System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.MethodBuilder.InitLocals.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.InitLocals.set(System.Boolean)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.MethodBuilder.SetSignature(System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.ModuleBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.EnumBuilder System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String, System.Reflection.TypeAttributes, System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.ModuleBuilder.DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.ModuleBuilder.DefineType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.MethodInfo System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type, System.String, System.Reflection.CallingConventions, System.Type, System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.PropertyBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.TypeBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PackingSize System.Reflection.Emit.TypeBuilder.PackingSize' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.TypeInfo System.Reflection.Emit.TypeBuilder.CreateTypeInfo()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.EventBuilder System.Reflection.Emit.TypeBuilder.DefineEvent(System.String, System.Reflection.EventAttributes, System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineField(System.String, System.Type, System.Type[], System.Type[], System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.GenericTypeParameterBuilder[] System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String, System.Byte[], System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefineMethod(System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo, System.Reflection.MethodInfo)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Reflection.Emit.PackingSize, System.Int32)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.TypeBuilder System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String, System.Reflection.TypeAttributes, System.Type, System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.MethodBuilder System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String, System.String, System.String, System.Reflection.MethodAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][], System.Runtime.InteropServices.CallingConvention, System.Runtime.InteropServices.CharSet)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PropertyBuilder System.Reflection.Emit.TypeBuilder.DefineProperty(System.String, System.Reflection.PropertyAttributes, System.Reflection.CallingConventions, System.Type, System.Type[], System.Type[], System.Type[], System.Type[][], System.Type[][])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.ConstructorBuilder System.Reflection.Emit.TypeBuilder.DefineTypeInitializer()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.FieldBuilder System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String, System.Int32, System.Reflection.FieldAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Boolean System.Reflection.Emit.TypeBuilder.IsCreated()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PackingSize System.Reflection.Emit.TypeBuilder.PackingSize.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetParent(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size.get()' is abstract in the implementation but is not abstract in the contract. +Total Issues: 247 \ No newline at end of file From c32f0e5e1d45eb1ef79246fd0ef1349db43a5042 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Thu, 17 Nov 2022 22:37:30 -0800 Subject: [PATCH 16/36] Make GenericTypeParameterBuilder abstract --- .../Emit/GenericTypeParameterBuilder.cs | 24 +- .../System/Reflection/Emit/MethodBuilder.cs | 8 +- .../src/System/Reflection/Emit/TypeBuilder.cs | 10 +- .../src/System.Private.CoreLib.csproj | 1 - .../Emit/GenericTypeParameterBuilder.cs | 470 ------------------ .../System.Private.CoreLib.Shared.projitems | 1 + .../Emit/GenericTypeParameterBuilder.cs | 27 + .../ref/System.Reflection.Emit.cs | 18 +- .../src/MatchingRefApiCompatBaseline.txt | 16 +- ...iCompatBaseline.NetCoreAppLatestStable.txt | 14 +- .../ApiCompatBaseline.netstandard2.1.txt | 8 +- 11 files changed, 93 insertions(+), 504 deletions(-) delete mode 100644 src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs create mode 100644 src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs index 3938b9b06ac7d..1a5a097ce6cec 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs @@ -6,7 +6,7 @@ namespace System.Reflection.Emit { - public sealed class GenericTypeParameterBuilder : TypeInfo + internal sealed class RuntimeGenericTypeParameterBuilder : GenericTypeParameterBuilder { public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) { @@ -19,7 +19,7 @@ public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) #endregion #region Constructor - internal GenericTypeParameterBuilder(RuntimeTypeBuilder type) + internal RuntimeGenericTypeParameterBuilder(RuntimeTypeBuilder type) { m_type = type; } @@ -32,12 +32,12 @@ public override string ToString() } public override bool Equals(object? o) { - GenericTypeParameterBuilder? g = o as GenericTypeParameterBuilder; + if (o is RuntimeGenericTypeParameterBuilder g) + { + return ReferenceEquals(g.m_type, m_type); + } - if (g == null) - return false; - - return object.ReferenceEquals(g.m_type, m_type); + return false; } public override int GetHashCode() { return m_type.GetHashCode(); } #endregion @@ -217,27 +217,27 @@ public override Type MakeArrayType(int rank) #endregion #region Public Members - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { m_type.SetGenParamCustomAttribute(con, binaryAttribute); } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { m_type.SetGenParamCustomAttribute(customBuilder); } - public void SetBaseTypeConstraint([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint) + public override void SetBaseTypeConstraint([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint) { m_type.SetParent(baseTypeConstraint); } - public void SetInterfaceConstraints(params Type[]? interfaceConstraints) + public override void SetInterfaceConstraints(params Type[]? interfaceConstraints) { m_type.SetInterfaces(interfaceConstraints); } - public void SetGenericParameterAttributes(GenericParameterAttributes genericParameterAttributes) + public override void SetGenericParameterAttributes(GenericParameterAttributes genericParameterAttributes) { m_type.SetGenParamAttributes(genericParameterAttributes); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs index 97b0da7e7b114..f3bb649e6ad49 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs @@ -50,7 +50,7 @@ internal sealed class RuntimeMethodBuilder : MethodBuilder private Type[][]? m_parameterTypeOptionalCustomModifiers; // Generics - private GenericTypeParameterBuilder[]? m_inst; + private RuntimeGenericTypeParameterBuilder[]? m_inst; private bool m_bIsGenMethDef; #endregion @@ -533,9 +533,9 @@ public override GenericTypeParameterBuilder[] DefineGenericParameters(params str throw new InvalidOperationException(SR.InvalidOperation_MethodBuilderBaked); m_bIsGenMethDef = true; - m_inst = new GenericTypeParameterBuilder[names.Length]; + m_inst = new RuntimeGenericTypeParameterBuilder[names.Length]; for (int i = 0; i < names.Length; i++) - m_inst[i] = new GenericTypeParameterBuilder(new RuntimeTypeBuilder(names[i], i, this)); + m_inst[i] = new RuntimeGenericTypeParameterBuilder(new RuntimeTypeBuilder(names[i], i, this)); return m_inst; } @@ -606,7 +606,7 @@ private int GetTokenNoLock() m_token = token; if (m_inst != null) - foreach (GenericTypeParameterBuilder tb in m_inst) + foreach (RuntimeGenericTypeParameterBuilder tb in m_inst) if (!tb.m_type.IsCreated()) tb.m_type.CreateType(); RuntimeTypeBuilder.SetMethodImpl(new QCallModule(ref module), token, m_dwMethodImplFlags); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index d1598d01a1fb8..a104c39d7ce04 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -422,7 +422,7 @@ internal static unsafe void SetConstantValue(RuntimeModuleBuilder module, int tk private RuntimeType m_bakedRuntimeType = null!; private readonly int m_genParamPos; - private GenericTypeParameterBuilder[]? m_inst; + private RuntimeGenericTypeParameterBuilder[]? m_inst; private readonly bool m_bIsGenParam; private readonly RuntimeMethodBuilder? m_declMeth; private readonly RuntimeTypeBuilder? m_genTypeDef; @@ -1162,9 +1162,9 @@ public override GenericTypeParameterBuilder[] DefineGenericParameters(params str if (m_inst != null) throw new InvalidOperationException(); - m_inst = new GenericTypeParameterBuilder[names.Length]; + m_inst = new RuntimeGenericTypeParameterBuilder[names.Length]; for (int i = 0; i < names.Length; i++) - m_inst[i] = new GenericTypeParameterBuilder(new RuntimeTypeBuilder(names[i], i, this)); + m_inst[i] = new RuntimeGenericTypeParameterBuilder(new RuntimeTypeBuilder(names[i], i, this)); return m_inst; } @@ -1755,7 +1755,7 @@ private EventBuilder DefineEventNoLock(string name, EventAttributes attributes, if (m_inst != null) { - foreach (GenericTypeParameterBuilder tb in m_inst) + foreach (RuntimeGenericTypeParameterBuilder tb in m_inst) { tb.m_type.CreateType(); } @@ -1932,7 +1932,7 @@ internal int TypeToken } } - public override void SetCustomAttribute(ConstructorInfo con!!, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj index 46494f720bc07..27d253f019ac2 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj @@ -128,7 +128,6 @@ - diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs b/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs deleted file mode 100644 index ea0284c4d0dfb..0000000000000 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs +++ /dev/null @@ -1,470 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Diagnostics.CodeAnalysis; - -namespace System.Reflection.Emit -{ - public sealed partial class GenericTypeParameterBuilder : TypeInfo - { - internal GenericTypeParameterBuilder() - { - // Prevent generating a default constructor - } - - public override Assembly Assembly - { - get - { - return default; - } - } - - public override string AssemblyQualifiedName - { - get - { - return default; - } - } - - public override Type BaseType - { - get - { - return default; - } - } - - public override bool ContainsGenericParameters - { - get - { - return default; - } - } - - public override MethodBase DeclaringMethod - { - get - { - return default; - } - } - - public override Type DeclaringType - { - get - { - return default; - } - } - - public override string FullName - { - get - { - return default; - } - } - - public override GenericParameterAttributes GenericParameterAttributes - { - get - { - return default; - } - } - - public override int GenericParameterPosition - { - get - { - return default; - } - } - - public override Guid GUID - { - get - { - return default; - } - } - - public override bool IsConstructedGenericType - { - get - { - return default; - } - } - - public override bool IsGenericParameter - { - get - { - return default; - } - } - - public override bool IsGenericType - { - get - { - return default; - } - } - - public override bool IsGenericTypeDefinition - { - get - { - return default; - } - } - - public override Module Module - { - get - { - return default; - } - } - - public override string Name - { - get - { - return default; - } - } - - public override string Namespace - { - get - { - return default; - } - } - - public override Type ReflectedType - { - get - { - return default; - } - } - - public override RuntimeTypeHandle TypeHandle - { - get - { - return default; - } - } - - public override Type UnderlyingSystemType - { - get - { - return default; - } - } - - public override bool Equals(object? o) - { - return default; - } - - protected override TypeAttributes GetAttributeFlagsImpl() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] - protected override ConstructorInfo GetConstructorImpl(BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors)] - public override ConstructorInfo[] GetConstructors(BindingFlags bindingAttr) - { - return default; - } - - public override object[] GetCustomAttributes(bool inherit) - { - return default; - } - - public override object[] GetCustomAttributes(Type attributeType, bool inherit) - { - return default; - } - - public override Type GetElementType() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] - public override EventInfo GetEvent(string name, BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents)] - public override EventInfo[] GetEvents() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] - public override EventInfo[] GetEvents(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] - public override FieldInfo GetField(string name, BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] - public override FieldInfo[] GetFields(BindingFlags bindingAttr) - { - return default; - } - - public override Type[] GetGenericArguments() - { - return default; - } - - public override Type GetGenericTypeDefinition() - { - return default; - } - - public override int GetHashCode() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] - [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] - public override Type GetInterface(string name, bool ignoreCase) - { - return default; - } - - public override InterfaceMapping GetInterfaceMap([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] Type interfaceType) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.Interfaces)] - public override Type[] GetInterfaces() - { - return default; - } - - [DynamicallyAccessedMembers(GetAllMembers)] - public override MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(GetAllMembers)] - public override MemberInfo[] GetMembers(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] - protected override MethodInfo GetMethodImpl(string name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] - public override MethodInfo[] GetMethods(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] - public override Type GetNestedType(string name, BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes)] - public override Type[] GetNestedTypes(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] - public override PropertyInfo[] GetProperties(BindingFlags bindingAttr) - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] - protected override PropertyInfo GetPropertyImpl(string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers) - { - return default; - } - - protected override bool HasElementTypeImpl() - { - return default; - } - - [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public override object? InvokeMember(string name, BindingFlags invokeAttr, Binder? binder, object? target, object?[]? args, ParameterModifier[]? modifiers, Globalization.CultureInfo? culture, string[]? namedParameters) - { - return default; - } - - protected override bool IsArrayImpl() - { - return default; - } - - public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) - { - return default; - } - - public override bool IsAssignableFrom([NotNullWhen(true)] Type? c) - { - return default; - } - - protected override bool IsByRefImpl() - { - return default; - } - - public override bool IsByRefLike - { - get - { - return default; - } - } - - protected override bool IsCOMObjectImpl() - { - return default; - } - - public override bool IsDefined(Type attributeType, bool inherit) - { - return default; - } - - protected override bool IsPointerImpl() - { - return default; - } - - protected override bool IsPrimitiveImpl() - { - return default; - } - - public override bool IsSubclassOf(Type c) - { - return default; - } - - public override bool IsTypeDefinition - { - get - { - return default; - } - } - - public override bool IsSZArray - { - get - { - return default; - } - } - - public override bool IsVariableBoundArray - { - get - { - return default; - } - } - - protected override bool IsValueTypeImpl() - { - return default; - } - - [RequiresDynamicCode("The code for an array of the specified type might not be available.")] - public override Type MakeArrayType() - { - return default; - } - - [RequiresDynamicCode("The code for an array of the specified type might not be available.")] - public override Type MakeArrayType(int rank) - { - return default; - } - - public override Type MakeByRefType() - { - return default; - } - - [RequiresDynamicCode("The native code for this instantiation might not be available at runtime.")] - [RequiresUnreferencedCode("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] - public override Type MakeGenericType(params Type[] typeArguments) - { - return default; - } - - public override Type MakePointerType() - { - return default; - } - - public void SetBaseTypeConstraint([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type baseTypeConstraint) - { - } - - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - { - } - - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) - { - } - - public void SetGenericParameterAttributes(GenericParameterAttributes genericParameterAttributes) - { - } - - public void SetInterfaceConstraints(params Type[] interfaceConstraints) - { - } - - public override string ToString() - { - return default; - } - } -} diff --git a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems index ad5f920ecc13a..b1f53e133f996 100644 --- a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems +++ b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems @@ -599,6 +599,7 @@ + diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs new file mode 100644 index 0000000000000..9b157b14ef0f0 --- /dev/null +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs @@ -0,0 +1,27 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Text; + +namespace System.Reflection.Emit +{ + public abstract partial class GenericTypeParameterBuilder : TypeInfo + { + protected GenericTypeParameterBuilder() + { + } + + public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) => SetCustomAttribute(con, binaryAttribute); + + public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) => SetCustomAttribute(customBuilder); + + public virtual void SetBaseTypeConstraint([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint) => SetBaseTypeConstraint(baseTypeConstraint); + + public virtual void SetInterfaceConstraints(params Type[]? interfaceConstraints) => SetInterfaceConstraints(interfaceConstraints); + + public virtual void SetGenericParameterAttributes(GenericParameterAttributes genericParameterAttributes) => SetGenericParameterAttributes(genericParameterAttributes); + } +} diff --git a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs index d28800de0e7d5..c81db84321a2d 100644 --- a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs +++ b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs @@ -205,9 +205,9 @@ protected FieldBuilder() { } public abstract void SetOffset(int iOffset); public override void SetValue(object? obj, object? val, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, System.Globalization.CultureInfo? culture) { } } - public sealed partial class GenericTypeParameterBuilder : System.Reflection.TypeInfo + public abstract partial class GenericTypeParameterBuilder : System.Reflection.TypeInfo { - internal GenericTypeParameterBuilder() { } + protected GenericTypeParameterBuilder() { } public override System.Reflection.Assembly Assembly { get { throw null; } } public override string? AssemblyQualifiedName { get { throw null; } } public override System.Type? BaseType { get { throw null; } } @@ -298,11 +298,11 @@ internal GenericTypeParameterBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] public override System.Type MakeGenericType(params System.Type[] typeArguments) { throw null; } public override System.Type MakePointerType() { throw null; } - public void SetBaseTypeConstraint([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? baseTypeConstraint) { } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } - public void SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes genericParameterAttributes) { } - public void SetInterfaceConstraints(params System.Type[]? interfaceConstraints) { } + public abstract void SetBaseTypeConstraint([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? baseTypeConstraint); + public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public abstract void SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes genericParameterAttributes); + public abstract void SetInterfaceConstraints(params System.Type[]? interfaceConstraints); public override string ToString() { throw null; } } public abstract partial class MethodBuilder : System.Reflection.MethodInfo @@ -422,14 +422,14 @@ protected ModuleBuilder() { } public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public abstract int GetTypeToken(Type type, bool getGenericDefinition = true); + /*public abstract int GetTypeToken(Type type, bool getGenericDefinition = true); public abstract int GetFieldToken(FieldInfo field); public abstract int GetConstructorToken(ConstructorInfo con); public abstract int GetSignatureToken(SignatureHelper sigHelper); public abstract int GetStringConstant(string str); public abstract ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor); public abstract FieldInfo GetField(Type type, FieldInfo field); - public abstract MethodInfo GetMethod(Type type, MethodInfo method); + public abstract MethodInfo GetMethod(Type type, MethodInfo method);*/ } public abstract partial class PropertyBuilder : System.Reflection.PropertyInfo { diff --git a/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt b/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt index 3edd1338d4a88..17b3e66a2e24a 100644 --- a/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt +++ b/src/libraries/System.Reflection.Emit/src/MatchingRefApiCompatBaseline.txt @@ -83,4 +83,18 @@ CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilde CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the reference but is not abstract in the implementation. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetParent(System.Type)' is abstract in the reference but is not abstract in the implementation. CannotMakeMemberAbstract : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size.get()' is abstract in the reference but is not abstract in the implementation. -Total Issues: 93 \ No newline at end of file +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.GenericTypeParameterBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetInterfaceConstraints(System.Type[])' is abstract in the implementation but is not abstract in the contract. +CannotAddAbstractMembers : Member 'public System.Reflection.ConstructorInfo System.Reflection.Emit.ModuleBuilder.GetConstructor(System.Type, System.Reflection.ConstructorInfo)' is abstract in the implementation but is missing in the contract. +CannotAddAbstractMembers : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo)' is abstract in the implementation but is missing in the contract. +CannotAddAbstractMembers : Member 'public System.Reflection.FieldInfo System.Reflection.Emit.ModuleBuilder.GetField(System.Type, System.Reflection.FieldInfo)' is abstract in the implementation but is missing in the contract. +CannotAddAbstractMembers : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo)' is abstract in the implementation but is missing in the contract. +CannotAddAbstractMembers : Member 'public System.Reflection.MethodInfo System.Reflection.Emit.ModuleBuilder.GetMethod(System.Type, System.Reflection.MethodInfo)' is abstract in the implementation but is missing in the contract. +CannotAddAbstractMembers : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper)' is abstract in the implementation but is missing in the contract. +CannotAddAbstractMembers : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String)' is abstract in the implementation but is missing in the contract. +CannotAddAbstractMembers : Member 'public System.Int32 System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type, System.Boolean)' is abstract in the implementation but is missing in the contract. +Total Issues: 98 \ No newline at end of file diff --git a/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt b/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt index 1019db8c66ddb..d61bd90bf5e12 100644 --- a/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt +++ b/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.txt @@ -92,6 +92,12 @@ CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilde CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetParent(System.Type)' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size.get()' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.GenericTypeParameterBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetInterfaceConstraints(System.Type[])' is abstract in the implementation but is not abstract in the contract. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.Aes' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeFormatter' in the contract but not the implementation. @@ -231,6 +237,12 @@ CannotMakeMemberAbstract : Member 'public System.Reflection.Emit.PackingSize Sys CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetParent(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.GenericTypeParameterBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetInterfaceConstraints(System.Type[])' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size.get()' is abstract in the implementation but is not abstract in the contract. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.Aes' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.AsymmetricKeyExchangeDeformatter' in the contract but not the implementation. @@ -344,4 +356,4 @@ CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatfo CannotRemoveAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' exists on 'System.Security.Cryptography.TripleDES' in the contract but not the implementation. Compat issues with assembly System.Security.Cryptography.X509Certificates: CannotChangeAttribute : Attribute 'System.Runtime.Versioning.UnsupportedOSPlatformAttribute' on 'System.Security.Cryptography.X509Certificates.PublicKey.GetDSAPublicKey()' changed from '[UnsupportedOSPlatformAttribute("ios")]' in the contract to '[UnsupportedOSPlatformAttribute("browser")]' in the implementation. -Total Issues: 332 \ No newline at end of file +Total Issues: 345 \ No newline at end of file diff --git a/src/libraries/apicompat/ApiCompatBaseline.netstandard2.1.txt b/src/libraries/apicompat/ApiCompatBaseline.netstandard2.1.txt index 39057b5b14b2a..876e4e0b4b68b 100644 --- a/src/libraries/apicompat/ApiCompatBaseline.netstandard2.1.txt +++ b/src/libraries/apicompat/ApiCompatBaseline.netstandard2.1.txt @@ -246,4 +246,10 @@ CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilde CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.TypeBuilder.SetParent(System.Type)' is abstract in the implementation but is not abstract in the contract. CannotMakeMemberAbstract : Member 'public System.Int32 System.Reflection.Emit.TypeBuilder.Size.get()' is abstract in the implementation but is not abstract in the contract. -Total Issues: 247 \ No newline at end of file +CannotMakeTypeAbstract : Type 'System.Reflection.Emit.GenericTypeParameterBuilder' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo, System.Byte[])' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes)' is abstract in the implementation but is not abstract in the contract. +CannotMakeMemberAbstract : Member 'public void System.Reflection.Emit.GenericTypeParameterBuilder.SetInterfaceConstraints(System.Type[])' is abstract in the implementation but is not abstract in the contract. +Total Issues: 253 \ No newline at end of file From 0bbcaa7c7f2f5097ce061840f2a548a7d30e9460 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Fri, 18 Nov 2022 09:47:53 -0800 Subject: [PATCH 17/36] Fix errors found after merge --- .../src/System/Reflection/Emit/TypeBuilder.cs | 2 +- .../src/System/Reflection/Emit/DynamicMethod.cs | 11 ++++------- .../src/System/Reflection/Emit/TypeBuilder.cs | 4 ++-- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index 9ea261a9b61bd..54a65b562735b 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -1683,7 +1683,7 @@ public override TypeInfo CreateTypeInfo() } [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - internal TypeInfo CreateTypeInfoImpl() + internal TypeInfo? CreateTypeInfoImpl() { lock (SyncRoot) { diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs index ea697790082f8..c049ba97f0434 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs @@ -5,6 +5,7 @@ using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Runtime.CompilerServices; +using System.Runtime.Loader; using System.Text; namespace System.Reflection.Emit @@ -193,12 +194,8 @@ private static Module GetDynamicMethodsModule() AssemblyName assemblyName = new AssemblyName("Anonymously Hosted DynamicMethods Assembly"); - AssemblyBuilder assembly = AssemblyBuilder.InternalDefineDynamicAssembly( - assemblyName, - AssemblyBuilderAccess.Run, - typeof(object).Assembly, - null, - null); + var assembly = new RuntimeAssemblyBuilder(new AssemblyName("Anonymously Hosted DynamicMethods Assembly"), + AssemblyBuilderAccess.Run, AssemblyLoadContext.Default, null); // this always gets the internal module. s_anonymouslyHostedDynamicMethodsModule = assembly.ManifestModule!; @@ -262,7 +259,7 @@ private void Init(string name, Debug.Assert(m == null || owner == null, "m and owner cannot both be set"); if (m != null) - _module = ModuleBuilder.GetRuntimeModuleFromModule(m); // this returns the underlying module for all RuntimeModule and ModuleBuilder objects. + _module = RuntimeModuleBuilder.GetRuntimeModuleFromModule(m); // this returns the underlying module for all RuntimeModule and ModuleBuilder objects. else { if (owner?.UnderlyingSystemType is RuntimeType rtOwner) diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index 891f4245f38e7..7f0899c55996d 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -24,11 +24,11 @@ public virtual void AddInterfaceImplementation([DynamicallyAccessedMembers(Dynam => AddInterfaceImplementation(interfaceType); [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public Type? CreateType() + public Type CreateType() => CreateTypeInfo(); [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public virtual TypeInfo? CreateTypeInfo() + public virtual TypeInfo CreateTypeInfo() => CreateTypeInfo(); public ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes) From 9b96074b9f3d03a5878509176b92298b7566f242 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Fri, 18 Nov 2022 14:17:49 -0800 Subject: [PATCH 18/36] Fix app compat issue --- .../CompatibilitySuppressions.xml | 564 ++++++++++++++++++ .../src/CompatibilitySuppressions.xml | 564 ++++++++++++++++++ 2 files changed, 1128 insertions(+) diff --git a/src/coreclr/System.Private.CoreLib/CompatibilitySuppressions.xml b/src/coreclr/System.Private.CoreLib/CompatibilitySuppressions.xml index 67b36e1e9b462..f4e4104f28fa7 100644 --- a/src/coreclr/System.Private.CoreLib/CompatibilitySuppressions.xml +++ b/src/coreclr/System.Private.CoreLib/CompatibilitySuppressions.xml @@ -24,6 +24,570 @@ ref/net7.0/System.Private.CoreLib.dll lib/net7.0/System.Private.CoreLib.dll + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetConstructor(System.Type,System.Reflection.ConstructorInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type,System.Boolean) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.get_InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.set_InitLocals(System.Boolean) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.CreateTypeInfo + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String,System.Object) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.get_UnderlyingField + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetConstant(System.Object) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetInterfaceConstraints(System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.get_InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.GetILGenerator + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.set_InitLocals(System.Boolean) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetSignature(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String,System.Reflection.TypeAttributes,System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.CreateTypeInfo + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineEvent(System.String,System.Reflection.EventAttributes,System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineField(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo,System.Reflection.MethodInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineProperty(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineTypeInitializer + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.get_PackingSize + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.get_Size + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.IsCreated + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.SetParent(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.ConstructorBuilder.InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.EnumBuilder.UnderlyingField + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.MethodBuilder.InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.TypeBuilder.PackingSize + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.TypeBuilder.Size + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + CP0014 M:System.Runtime.InteropServices.Marshal.CreateWrapperOfType(System.Object,System.Type)->object?:[T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute] diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/CompatibilitySuppressions.xml b/src/coreclr/nativeaot/System.Private.CoreLib/src/CompatibilitySuppressions.xml index 85821f1324037..2503aaf2bb621 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/CompatibilitySuppressions.xml +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/CompatibilitySuppressions.xml @@ -1452,6 +1452,42 @@ ref/net7.0/System.Private.CoreLib.dll lib/net7.0/System.Private.CoreLib.dll + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetConstructor(System.Type,System.Reflection.ConstructorInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type,System.Boolean) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + CP0002 M:System.Reflection.MethodBase.get_MetadataDefinitionMethod @@ -1470,6 +1506,534 @@ ref/net7.0/System.Private.CoreLib.dll lib/net7.0/System.Private.CoreLib.dll + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.get_InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.set_InitLocals(System.Boolean) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.CreateTypeInfo + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String,System.Object) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.get_UnderlyingField + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetConstant(System.Object) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetInterfaceConstraints(System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.get_InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.GetILGenerator + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.set_InitLocals(System.Boolean) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetSignature(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String,System.Reflection.TypeAttributes,System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.CreateTypeInfo + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineEvent(System.String,System.Reflection.EventAttributes,System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineField(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo,System.Reflection.MethodInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineProperty(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineTypeInitializer + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.get_PackingSize + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.get_Size + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.IsCreated + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.SetParent(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.ConstructorBuilder.InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.EnumBuilder.UnderlyingField + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.MethodBuilder.InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.TypeBuilder.PackingSize + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.TypeBuilder.Size + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + CP0014 M:System.Runtime.CompilerServices.RuntimeHelpers.GetObjectValue(System.Object)->object?:[T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute] From 9017148bbd4aa8698144ea74bee16a003e21884b Mon Sep 17 00:00:00 2001 From: Viktor Hofer Date: Tue, 22 Nov 2022 10:52:44 +0100 Subject: [PATCH 19/36] Move suppressions into the common file --- .../src/CompatibilitySuppressions.xml | 564 ------------------ .../src/CompatibilitySuppressions.xml | 564 ++++++++++++++++++ 2 files changed, 564 insertions(+), 564 deletions(-) diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/CompatibilitySuppressions.xml b/src/coreclr/nativeaot/System.Private.CoreLib/src/CompatibilitySuppressions.xml index 9163c015b65ee..9fbb68467bfff 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/CompatibilitySuppressions.xml +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/CompatibilitySuppressions.xml @@ -1428,42 +1428,6 @@ ref/net7.0/System.Private.CoreLib.dll lib/net7.0/System.Private.CoreLib.dll - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetConstructor(System.Type,System.Reflection.ConstructorInfo) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type,System.Boolean) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - CP0002 M:System.Reflection.MethodBase.get_MetadataDefinitionMethod @@ -1482,534 +1446,6 @@ ref/net7.0/System.Private.CoreLib.dll lib/net7.0/System.Private.CoreLib.dll - - CP0013 - M:System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.get_InitLocals - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.set_InitLocals(System.Boolean) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.CreateTypeInfo - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String,System.Object) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.get_UnderlyingField - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.FieldBuilder.SetConstant(System.Object) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetInterfaceConstraints(System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.get_InitLocals - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.GetILGenerator - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.set_InitLocals(System.Boolean) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetSignature(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String,System.Reflection.TypeAttributes,System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.CreateTypeInfo - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineEvent(System.String,System.Reflection.EventAttributes,System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineField(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo,System.Reflection.MethodInfo) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineProperty(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineTypeInitializer - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.get_PackingSize - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.get_Size - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.IsCreated - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.SetParent(System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.ConstructorBuilder.InitLocals - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.EnumBuilder.UnderlyingField - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.MethodBuilder.InitLocals - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.TypeBuilder.PackingSize - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.TypeBuilder.Size - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - CP0014 M:System.Runtime.CompilerServices.RuntimeHelpers.GetObjectValue(System.Object)->object?:[T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute] diff --git a/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml b/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml index 47274281ae677..d0f7ef78cae81 100644 --- a/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml +++ b/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml @@ -25,6 +25,570 @@ ref/net7.0/System.Private.CoreLib.dll lib/net7.0/System.Private.CoreLib.dll + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetConstructor(System.Type,System.Reflection.ConstructorInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type,System.Boolean) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.get_InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.set_InitLocals(System.Boolean) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.CreateTypeInfo + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String,System.Object) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.get_UnderlyingField + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetConstant(System.Object) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetInterfaceConstraints(System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.get_InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.GetILGenerator + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.set_InitLocals(System.Boolean) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetSignature(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String,System.Reflection.TypeAttributes,System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.CreateTypeInfo + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineEvent(System.String,System.Reflection.EventAttributes,System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineField(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo,System.Reflection.MethodInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineProperty(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineTypeInitializer + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.get_PackingSize + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.get_Size + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.IsCreated + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.SetParent(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.ConstructorBuilder.InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.EnumBuilder.UnderlyingField + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.MethodBuilder.InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.TypeBuilder.PackingSize + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.TypeBuilder.Size + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + CP0014 M:System.Runtime.InteropServices.Marshal.CreateWrapperOfType(System.Object,System.Type)->object?:[T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute] From a8bf9f232e5e00289c5167b4b4414b0299d5a789 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Fri, 9 Dec 2022 00:18:01 -0800 Subject: [PATCH 20/36] Update mono implementations --- .../System/Reflection/Emit/DynamicMethod.cs | 2 +- .../System/Reflection/Emit/FieldBuilder.cs | 2 +- .../CompatibilitySuppressions.xml | 564 ++++++++++++++++++ .../Reflection/Emit/AssemblyBuilder.Mono.cs | 78 +-- .../Emit/ConstructorBuilder.Mono.cs | 32 +- .../Emit/ConstructorOnTypeBuilderInst.cs | 4 +- .../Reflection/Emit/EnumBuilder.Mono.cs | 26 +- .../Reflection/Emit/EventBuilder.Mono.cs | 18 +- .../Reflection/Emit/EventOnTypeBuilderInst.cs | 4 +- .../Reflection/Emit/FieldBuilder.Mono.cs | 26 +- .../Emit/GenericTypeParameterBuilder.cs | 16 +- .../Reflection/Emit/MethodBuilder.Mono.cs | 54 +- .../Reflection/Emit/ModuleBuilder.Mono.cs | 114 ++-- .../Reflection/Emit/ParameterBuilder.Mono.cs | 2 +- .../Reflection/Emit/PropertyBuilder.Mono.cs | 18 +- .../System/Reflection/Emit/SignatureHelper.cs | 2 +- .../Reflection/Emit/TypeBuilder.Mono.cs | 160 +++-- .../Emit/TypeBuilderInstantiation.cs | 2 +- 18 files changed, 841 insertions(+), 283 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs index c049ba97f0434..d3138ce450577 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/DynamicMethod.cs @@ -194,7 +194,7 @@ private static Module GetDynamicMethodsModule() AssemblyName assemblyName = new AssemblyName("Anonymously Hosted DynamicMethods Assembly"); - var assembly = new RuntimeAssemblyBuilder(new AssemblyName("Anonymously Hosted DynamicMethods Assembly"), + var assembly = RuntimeAssemblyBuilder.InternalDefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run, AssemblyLoadContext.Default, null); // this always gets the internal module. diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs index 1a178ed73ed86..1e02ac734de71 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs @@ -9,7 +9,7 @@ protected FieldBuilder() { } - public virtual void SetConstant(object defaultValue) + public virtual void SetConstant(object? defaultValue) => SetConstant(defaultValue); public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) diff --git a/src/mono/System.Private.CoreLib/CompatibilitySuppressions.xml b/src/mono/System.Private.CoreLib/CompatibilitySuppressions.xml index 877a8ab153e5a..5c2bab8cc62e6 100644 --- a/src/mono/System.Private.CoreLib/CompatibilitySuppressions.xml +++ b/src/mono/System.Private.CoreLib/CompatibilitySuppressions.xml @@ -24,6 +24,570 @@ ref/net7.0/System.Private.CoreLib.dll lib/net7.0/System.Private.CoreLib.dll + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetConstructor(System.Type,System.Reflection.ConstructorInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0002 + M:System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type,System.Boolean) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.get_InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.set_InitLocals(System.Boolean) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.CreateTypeInfo + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String,System.Object) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.get_UnderlyingField + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetConstant(System.Object) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.GenericTypeParameterBuilder.SetInterfaceConstraints(System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.get_InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.GetILGenerator + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.set_InitLocals(System.Boolean) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.MethodBuilder.SetSignature(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String,System.Reflection.TypeAttributes,System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.CreateTypeInfo + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineEvent(System.String,System.Reflection.EventAttributes,System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineField(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo,System.Reflection.MethodInfo) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineProperty(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineTypeInitializer + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.get_PackingSize + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.get_Size + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.IsCreated + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + M:System.Reflection.Emit.TypeBuilder.SetParent(System.Type) + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.ConstructorBuilder.InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.EnumBuilder.UnderlyingField + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.MethodBuilder.InitLocals + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.TypeBuilder.PackingSize + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + + + CP0013 + P:System.Reflection.Emit.TypeBuilder.Size + ref/net7.0/System.Private.CoreLib.dll + lib/net7.0/System.Private.CoreLib.dll + CP0014 M:System.Runtime.CompilerServices.RuntimeHelpers.GetObjectValue(System.Object)->object?:[T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute] diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs index 7c5de218b3c3c..17e5a7fa90dbb 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs @@ -172,38 +172,63 @@ public override int GetHashCode() } [StructLayout(LayoutKind.Sequential)] - public sealed partial class AssemblyBuilder : Assembly + public partial class AssemblyBuilder + { + private UIntPtr dynamic_assembly; /* GC-tracked */ + private Module[]? loaded_modules; + + [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] + public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) + { + ArgumentNullException.ThrowIfNull(name); + + return new RuntimeAssemblyBuilder(name, access); + } + + [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] + public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access, IEnumerable? assemblyAttributes) + { + AssemblyBuilder ab = DefineDynamicAssembly(name, access); + if (assemblyAttributes != null) + { + foreach (CustomAttributeBuilder attr in assemblyAttributes) + ab.SetCustomAttribute(attr); + } + + return ab; + } + } + + internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder { // // AssemblyBuilder inherits from Assembly, but the runtime thinks its layout inherits from RuntimeAssembly // -#region Sync with RuntimeAssembly.cs and ReflectionAssembly in object-internals.h + #region Sync with RuntimeAssembly.cs and ReflectionAssembly in object-internals.h internal IntPtr _mono_assembly; - private UIntPtr dynamic_assembly; /* GC-tracked */ - private ModuleBuilder[] modules; + private RuntimeModuleBuilder[] modules; private string? name; private CustomAttributeBuilder[]? cattrs; private string? version; private string? culture; private byte[]? public_key_token; - private Module[]? loaded_modules; private uint access; #endregion private AssemblyName aname; - private ModuleBuilder manifest_module; + private RuntimeModuleBuilder manifest_module; private bool manifest_module_used; [MethodImplAttribute(MethodImplOptions.InternalCall)] - [DynamicDependency("RuntimeResolve", typeof(ModuleBuilder))] + [DynamicDependency("RuntimeResolve", typeof(RuntimeModuleBuilder))] private static extern void basic_init(AssemblyBuilder ab); [MethodImplAttribute(MethodImplOptions.InternalCall)] private static extern void UpdateNativeCustomAttributes(AssemblyBuilder ab); [DynamicDependency(nameof(access))] // Automatically keeps all previous fields too due to StructLayout - private AssemblyBuilder(AssemblyName n, AssemblyBuilderAccess access) + internal RuntimeAssemblyBuilder(AssemblyName n, AssemblyBuilderAccess access) { aname = (AssemblyName)n.Clone(); @@ -228,8 +253,8 @@ private AssemblyBuilder(AssemblyName n, AssemblyBuilderAccess access) basic_init(this); // Netcore only allows one module per assembly - manifest_module = new ModuleBuilder(this, "RefEmit_InMemoryManifestModule"); - modules = new ModuleBuilder[] { manifest_module }; + manifest_module = new RuntimeModuleBuilder(this, "RefEmit_InMemoryManifestModule"); + modules = new RuntimeModuleBuilder[] { manifest_module }; } public override bool ReflectionOnly @@ -237,28 +262,7 @@ public override bool ReflectionOnly get { return base.ReflectionOnly; } } - [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] - public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) - { - ArgumentNullException.ThrowIfNull(name); - - return new AssemblyBuilder(name, access); - } - - [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] - public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access, IEnumerable? assemblyAttributes) - { - AssemblyBuilder ab = DefineDynamicAssembly(name, access); - if (assemblyAttributes != null) - { - foreach (CustomAttributeBuilder attr in assemblyAttributes) - ab.SetCustomAttribute(attr); - } - - return ab; - } - - public ModuleBuilder DefineDynamicModule(string name) + public override ModuleBuilder DefineDynamicModule(string name) { ArgumentException.ThrowIfNullOrEmpty(name); if (name[0] == '\0') @@ -273,15 +277,13 @@ public ModuleBuilder DefineDynamicModule(string name) internal static AssemblyBuilder InternalDefineDynamicAssembly( AssemblyName name, AssemblyBuilderAccess access, - Assembly? _ /*callingAssembly*/, - AssemblyLoadContext? assemblyLoadContext, + AssemblyLoadContext? _, IEnumerable? assemblyAttributes) { - Debug.Assert(assemblyLoadContext is null); return DefineDynamicAssembly(name, access, assemblyAttributes); } - public ModuleBuilder? GetDynamicModule(string name) + public override ModuleBuilder? GetDynamicModule(string name) { ArgumentException.ThrowIfNullOrEmpty(name); @@ -295,7 +297,7 @@ internal static AssemblyBuilder InternalDefineDynamicAssembly( public override bool IsCollectible => access == (uint)AssemblyBuilderAccess.RunAndCollect; - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); @@ -315,7 +317,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) UpdateNativeCustomAttributes(this); } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.Mono.cs index d6c30ccd65a8a..6d74d022f0846 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.Mono.cs @@ -41,7 +41,7 @@ namespace System.Reflection.Emit { [StructLayout(LayoutKind.Sequential)] - public sealed partial class ConstructorBuilder : ConstructorInfo + internal sealed partial class RuntimeConstructorBuilder : ConstructorBuilder { #region Sync with MonoReflectionCtorBuilder in object-internals.h private RuntimeMethodHandle mhandle; @@ -51,7 +51,7 @@ public sealed partial class ConstructorBuilder : ConstructorInfo private MethodImplAttributes iattrs; private int table_idx; private CallingConventions call_conv; - private TypeBuilder type; + private RuntimeTypeBuilder type; internal ParameterBuilder[]? pinfo; private CustomAttributeBuilder[]? cattrs; private bool init_locals = true; @@ -62,7 +62,7 @@ public sealed partial class ConstructorBuilder : ConstructorInfo internal bool finished; [DynamicDependency(nameof(paramModOpt))] // Automatically keeps all previous fields too due to StructLayout - internal ConstructorBuilder(TypeBuilder tb, MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes, Type[][]? paramModReq, Type[][]? paramModOpt) + internal RuntimeConstructorBuilder(RuntimeTypeBuilder tb, MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes, Type[][]? paramModReq, Type[][]? paramModOpt) { attrs = attributes | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName; call_conv = callingConvention; @@ -80,7 +80,7 @@ internal ConstructorBuilder(TypeBuilder tb, MethodAttributes attributes, Calling this.paramModOpt = paramModOpt; table_idx = get_next_table_index(0x06, 1); - ((ModuleBuilder)tb.Module).RegisterToken(this, MetadataToken); + ((RuntimeModuleBuilder)tb.Module).RegisterToken(this, MetadataToken); } // FIXME: @@ -92,7 +92,7 @@ public override CallingConventions CallingConvention } } - public bool InitLocals + public override bool InitLocals { get { @@ -104,7 +104,7 @@ public bool InitLocals } } - internal TypeBuilder TypeBuilder + internal RuntimeTypeBuilder TypeBuilder { get { @@ -209,7 +209,7 @@ public override string Name } } - public ParameterBuilder DefineParameter(int iSequence, ParameterAttributes attributes, string? strParamName) + public override ParameterBuilder DefineParameter(int iSequence, ParameterAttributes attributes, string? strParamName) { // The 0th ParameterBuilder does not correspond to an // actual parameter, but .NETFramework lets you define @@ -240,12 +240,12 @@ public override object[] GetCustomAttributes(Type attributeType, bool inherit) throw not_supported(); } - public ILGenerator GetILGenerator() + public override ILGenerator GetILGenerator() { return GetILGenerator(64); } - public ILGenerator GetILGenerator(int streamSize) + public override ILGenerator GetILGenerator(int streamSize) { if (finished) throw new InvalidOperationException(); @@ -253,11 +253,11 @@ public ILGenerator GetILGenerator(int streamSize) return ilgen; if (!(((attrs & (MethodAttributes.Abstract | MethodAttributes.PinvokeImpl)) == 0) && ((iattrs & (MethodImplAttributes.Runtime | MethodImplAttributes.InternalCall)) == 0))) throw new InvalidOperationException(); - ilgen = new ILGenerator(type.Module, ((ModuleBuilder)type.Module).GetTokenGenerator(), streamSize); + ilgen = new ILGenerator(type.Module, ((RuntimeModuleBuilder)type.Module).GetTokenGenerator(), streamSize); return ilgen; } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); @@ -285,7 +285,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); @@ -293,7 +293,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); } - public void SetImplementationFlags(MethodImplAttributes attributes) + public override void SetImplementationFlags(MethodImplAttributes attributes) { if (type.is_created) throw not_after_created(); @@ -330,16 +330,16 @@ internal void fixup() internal void ResolveUserTypes() { - TypeBuilder.ResolveUserTypes(parameters); + RuntimeTypeBuilder.ResolveUserTypes(parameters); if (paramModReq != null) { foreach (Type[] types in paramModReq) - TypeBuilder.ResolveUserTypes(types); + RuntimeTypeBuilder.ResolveUserTypes(types); } if (paramModOpt != null) { foreach (Type[] types in paramModOpt) - TypeBuilder.ResolveUserTypes(types); + RuntimeTypeBuilder.ResolveUserTypes(types); } } diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorOnTypeBuilderInst.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorOnTypeBuilderInst.cs index 860a7b1f90686..ba4ffe2403d50 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorOnTypeBuilderInst.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorOnTypeBuilderInst.cs @@ -123,7 +123,7 @@ public override ParameterInfo[] GetParameters() internal override ParameterInfo[] GetParametersInternal() { ParameterInfo[] res; - if (cb is ConstructorBuilder cbuilder) + if (cb is RuntimeConstructorBuilder cbuilder) { res = new ParameterInfo[cbuilder.parameters!.Length]; for (int i = 0; i < cbuilder.parameters.Length; i++) @@ -147,7 +147,7 @@ internal override ParameterInfo[] GetParametersInternal() internal override Type[] GetParameterTypes() { - if (cb is ConstructorBuilder builder) + if (cb is RuntimeConstructorBuilder builder) { return builder.parameters!; } diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs index 5132cb09718b0..cd325bbc7feb3 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs @@ -41,23 +41,23 @@ namespace System.Reflection.Emit { - public sealed partial class EnumBuilder : TypeInfo + internal sealed partial class RuntimeEnumBuilder : EnumBuilder { [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - private TypeBuilder _tb; + private RuntimeTypeBuilder _tb; private FieldBuilder _underlyingField; private Type _underlyingType; [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2064:UnrecognizedReflectionPattern", Justification = "Reflection.Emit is not subject to trimming")] - internal EnumBuilder(ModuleBuilder mb, string name, TypeAttributes visibility, Type underlyingType) + internal RuntimeEnumBuilder(RuntimeModuleBuilder mb, string name, TypeAttributes visibility, Type underlyingType) { if ((visibility & ~TypeAttributes.VisibilityMask) != 0) throw new ArgumentException(SR.Argument_ShouldOnlySetVisibilityFlags, nameof(name)); if ((visibility & TypeAttributes.VisibilityMask) >= TypeAttributes.NestedPublic && (visibility & TypeAttributes.VisibilityMask) <= TypeAttributes.NestedFamORAssem) throw new ArgumentException(); - _tb = new TypeBuilder(mb, name, (visibility | TypeAttributes.Sealed), + _tb = new RuntimeTypeBuilder(mb, name, (visibility | TypeAttributes.Sealed), typeof(Enum), null, PackingSize.Unspecified, 0, null); _underlyingType = underlyingType; _underlyingField = _tb.DefineField("value__", underlyingType, @@ -65,7 +65,7 @@ internal EnumBuilder(ModuleBuilder mb, string name, TypeAttributes visibility, T setup_enum_type(_tb); } - internal TypeBuilder GetTypeBuilder() + internal RuntimeTypeBuilder GetTypeBuilder() { return _tb; } @@ -176,7 +176,7 @@ internal int TypeToken } } - public FieldBuilder UnderlyingField + public override FieldBuilder UnderlyingField { get { @@ -193,13 +193,7 @@ public override Type UnderlyingSystemType } [return: DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes.All)] - public Type? CreateType() - { - return _tb.CreateType(); - } - - [return: DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes.All)] - public TypeInfo? CreateTypeInfo() + public override TypeInfo? CreateTypeInfo() { return _tb.CreateTypeInfo(); } @@ -216,7 +210,7 @@ public override Type GetEnumUnderlyingType() [MethodImplAttribute(MethodImplOptions.InternalCall)] private extern void setup_enum_type(Type t); - public FieldBuilder DefineLiteral(string literalName, object? literalValue) + public override FieldBuilder DefineLiteral(string literalName, object? literalValue) { Type fieldType = this; FieldBuilder fieldBuilder = _tb.DefineField(literalName, @@ -454,12 +448,12 @@ public override Type MakePointerType() return new PointerType(this); } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { _tb.SetCustomAttribute(customBuilder); } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); } diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.Mono.cs index 65fedfb5c6023..082e3aa544b8a 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.Mono.cs @@ -40,12 +40,12 @@ namespace System.Reflection.Emit { [StructLayout(LayoutKind.Sequential)] - public sealed partial class EventBuilder + internal sealed partial class RuntimeEventBuilder : EventBuilder { #region Sync with MonoReflectionEventBuilder in object-internals.h internal string name; private Type type; - private TypeBuilder typeb; + private RuntimeTypeBuilder typeb; private CustomAttributeBuilder[]? cattrs; internal MethodBuilder? add_method; internal MethodBuilder? remove_method; @@ -56,7 +56,7 @@ public sealed partial class EventBuilder #endregion [DynamicDependency(nameof(table_idx))] // Automatically keeps all previous fields too due to StructLayout - internal EventBuilder(TypeBuilder tb, string eventName, EventAttributes eventAttrs, Type eventType) + internal RuntimeEventBuilder(RuntimeTypeBuilder tb, string eventName, EventAttributes eventAttrs, Type eventType) { name = eventName; attrs = eventAttrs; @@ -70,7 +70,7 @@ internal int get_next_table_index(int table, int count) return typeb.get_next_table_index(table, count); } - public void AddOtherMethod(MethodBuilder mdBuilder) + public override void AddOtherMethod(MethodBuilder mdBuilder) { ArgumentNullException.ThrowIfNull(mdBuilder); RejectIfCreated(); @@ -87,26 +87,26 @@ public void AddOtherMethod(MethodBuilder mdBuilder) other_methods[other_methods.Length - 1] = mdBuilder; } - public void SetAddOnMethod(MethodBuilder mdBuilder) + public override void SetAddOnMethod(MethodBuilder mdBuilder) { ArgumentNullException.ThrowIfNull(mdBuilder); RejectIfCreated(); add_method = mdBuilder; } - public void SetRaiseMethod(MethodBuilder mdBuilder) + public override void SetRaiseMethod(MethodBuilder mdBuilder) { ArgumentNullException.ThrowIfNull(mdBuilder); RejectIfCreated(); raise_method = mdBuilder; } - public void SetRemoveOnMethod(MethodBuilder mdBuilder) + public override void SetRemoveOnMethod(MethodBuilder mdBuilder) { ArgumentNullException.ThrowIfNull(mdBuilder); RejectIfCreated(); remove_method = mdBuilder; } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); RejectIfCreated(); @@ -130,7 +130,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EventOnTypeBuilderInst.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EventOnTypeBuilderInst.cs index 1db909be6479e..86daf33c63387 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EventOnTypeBuilderInst.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EventOnTypeBuilderInst.cs @@ -43,10 +43,10 @@ namespace System.Reflection.Emit internal sealed class EventOnTypeBuilderInst : EventInfo { private TypeBuilderInstantiation instantiation; - private EventBuilder? event_builder; + private RuntimeEventBuilder? event_builder; private EventInfo? event_info; - internal EventOnTypeBuilderInst(TypeBuilderInstantiation instantiation, EventBuilder evt) + internal EventOnTypeBuilderInst(TypeBuilderInstantiation instantiation, RuntimeEventBuilder evt) { this.instantiation = instantiation; this.event_builder = evt; diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.Mono.cs index b113b088551b3..aee96999b1853 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.Mono.cs @@ -41,7 +41,7 @@ namespace System.Reflection.Emit { [StructLayout(LayoutKind.Sequential)] - public sealed partial class FieldBuilder : FieldInfo + internal sealed partial class RuntimeFieldBuilder : FieldBuilder { #region Sync with MonoReflectionFieldBuilder in object-internals.h private FieldAttributes attrs; @@ -49,7 +49,7 @@ public sealed partial class FieldBuilder : FieldInfo private string name; private object? def_value; private int offset; - internal TypeBuilder typeb; + internal RuntimeTypeBuilder typeb; private byte[]? rva_data; private CustomAttributeBuilder[]? cattrs; private UnmanagedMarshal? marshal_info; @@ -59,7 +59,7 @@ public sealed partial class FieldBuilder : FieldInfo #endregion [DynamicDependency(nameof(modOpt))] // Automatically keeps all previous fields too due to StructLayout - internal FieldBuilder(TypeBuilder tb, string fieldName, Type type, FieldAttributes attributes, Type[]? modReq, Type[]? modOpt) + internal RuntimeFieldBuilder(RuntimeTypeBuilder tb, string fieldName, Type type, FieldAttributes attributes, Type[]? modReq, Type[]? modOpt) { ArgumentNullException.ThrowIfNull(type); @@ -71,7 +71,7 @@ internal FieldBuilder(TypeBuilder tb, string fieldName, Type type, FieldAttribut offset = -1; typeb = tb; - ((ModuleBuilder)tb.Module).RegisterToken(this, MetadataToken); + ((RuntimeModuleBuilder)tb.Module).RegisterToken(this, MetadataToken); } public override FieldAttributes Attributes @@ -133,7 +133,7 @@ public override object[] GetCustomAttributes(Type attributeType, bool inherit) throw CreateNotSupportedException(); } - public override int MetadataToken { get { return ((ModuleBuilder)typeb.Module).GetToken(this); } } + public override int MetadataToken { get { return ((RuntimeModuleBuilder)typeb.Module).GetToken(this); } } public override object? GetValue(object? obj) { @@ -165,7 +165,7 @@ internal static PackingSize RVADataPackingSize(int size) return PackingSize.Size1; } - public void SetConstant(object? defaultValue) + public override void SetConstant(object? defaultValue) { RejectIfCreated(); @@ -174,7 +174,7 @@ public void SetConstant(object? defaultValue) def_value = defaultValue; } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { RejectIfCreated(); @@ -221,13 +221,13 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { RejectIfCreated(); SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); } - public void SetOffset(int iOffset) + public override void SetOffset(int iOffset) { RejectIfCreated(); if (iOffset < 0) @@ -253,11 +253,11 @@ private void RejectIfCreated() internal void ResolveUserTypes() { - type = TypeBuilder.ResolveUserType(type); - TypeBuilder.ResolveUserTypes(modReq); - TypeBuilder.ResolveUserTypes(modOpt); + type = RuntimeTypeBuilder.ResolveUserType(type); + RuntimeTypeBuilder.ResolveUserTypes(modReq); + RuntimeTypeBuilder.ResolveUserTypes(modOpt); if (marshal_info != null) - marshal_info.marshaltyperef = TypeBuilder.ResolveUserType(marshal_info.marshaltyperef); + marshal_info.marshaltyperef = RuntimeTypeBuilder.ResolveUserType(marshal_info.marshaltyperef); } internal FieldInfo RuntimeResolve() diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs index 694a49755b3f6..efbcaa709a873 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs @@ -39,11 +39,11 @@ namespace System.Reflection.Emit { [ComVisible(true)] [StructLayout(LayoutKind.Sequential)] - public sealed class GenericTypeParameterBuilder : TypeInfo + internal sealed class RuntimeGenericTypeParameterBuilder : GenericTypeParameterBuilder { #region Sync with MonoReflectionGenericParam in object-internals.h private TypeBuilder tbuilder; - private MethodBuilder? mbuilder; + private RuntimeMethodBuilder? mbuilder; private string name; private int index; private Type? base_type; @@ -53,7 +53,7 @@ public sealed class GenericTypeParameterBuilder : TypeInfo #endregion [DynamicDependency(nameof(attrs))] // Automatically keeps all previous fields too due to StructLayout - internal GenericTypeParameterBuilder(TypeBuilder tbuilder, MethodBuilder? mbuilder, string name, int index) + internal RuntimeGenericTypeParameterBuilder(TypeBuilder tbuilder, RuntimeMethodBuilder? mbuilder, string name, int index) { this.tbuilder = tbuilder; this.mbuilder = mbuilder; @@ -61,17 +61,17 @@ internal GenericTypeParameterBuilder(TypeBuilder tbuilder, MethodBuilder? mbuild this.index = index; } - public void SetBaseTypeConstraint([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint) + public override void SetBaseTypeConstraint([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint) { this.base_type = baseTypeConstraint ?? typeof(object); } - public void SetInterfaceConstraints(params Type[]? interfaceConstraints) + public override void SetInterfaceConstraints(params Type[]? interfaceConstraints) { this.iface_constraints = interfaceConstraints; } - public void SetGenericParameterAttributes(GenericParameterAttributes genericParameterAttributes) + public override void SetGenericParameterAttributes(GenericParameterAttributes genericParameterAttributes) { this.attrs = genericParameterAttributes; } @@ -424,7 +424,7 @@ public override MethodBase? DeclaringMethod get { return mbuilder; } } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); @@ -443,7 +443,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) } // FIXME: "unverified implementation" - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); } diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.Mono.cs index e5b8fbeab3f6f..c5f625db27272 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.Mono.cs @@ -41,7 +41,7 @@ namespace System.Reflection.Emit { [StructLayout(LayoutKind.Sequential)] - public sealed partial class MethodBuilder : MethodInfo + internal sealed partial class RuntimeMethodBuilder : MethodBuilder { #region Sync with MonoReflectionMethodBuilder in object-internals.h private RuntimeMethodHandle mhandle; @@ -53,7 +53,7 @@ public sealed partial class MethodBuilder : MethodInfo private int table_idx; private byte[]? code; private ILGenerator? ilgen; - private TypeBuilder type; + private RuntimeTypeBuilder type; internal ParameterBuilder[]? pinfo; private CustomAttributeBuilder[]? cattrs; private MethodInfo[]? override_methods; @@ -65,7 +65,7 @@ public sealed partial class MethodBuilder : MethodInfo private CallingConventions call_conv; private bool init_locals = true; private IntPtr generic_container; - internal GenericTypeParameterBuilder[]? generic_params; + internal RuntimeGenericTypeParameterBuilder[]? generic_params; private Type[]? returnModReq; private Type[]? returnModOpt; private Type[][]? paramModReq; @@ -75,7 +75,7 @@ public sealed partial class MethodBuilder : MethodInfo private RuntimeMethodInfo? created; [DynamicDependency(nameof(paramModOpt))] // Automatically keeps all previous fields too due to StructLayout - internal MethodBuilder(TypeBuilder tb, string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnModReq, Type[]? returnModOpt, Type[]? parameterTypes, Type[][]? paramModReq, Type[][]? paramModOpt) + internal RuntimeMethodBuilder(RuntimeTypeBuilder tb, string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnModReq, Type[]? returnModOpt, Type[]? parameterTypes, Type[][]? paramModReq, Type[][]? paramModOpt) { this.name = name; this.attrs = attributes; @@ -101,10 +101,10 @@ internal MethodBuilder(TypeBuilder tb, string name, MethodAttributes attributes, type = tb; table_idx = get_next_table_index(0x06, 1); - ((ModuleBuilder)tb.Module).RegisterToken(this, MetadataToken); + ((RuntimeModuleBuilder)tb.Module).RegisterToken(this, MetadataToken); } - internal MethodBuilder(TypeBuilder tb, string name, MethodAttributes attributes, + internal RuntimeMethodBuilder(RuntimeTypeBuilder tb, string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnModReq, Type[]? returnModOpt, Type[]? parameterTypes, Type[][]? paramModReq, Type[][]? paramModOpt, string dllName, string entryName, CallingConvention nativeCConv, CharSet nativeCharset) : this(tb, name, attributes, callingConvention, returnType, returnModReq, returnModOpt, parameterTypes, paramModReq, paramModOpt) @@ -120,13 +120,13 @@ public override bool ContainsGenericParameters get { throw new NotSupportedException(); } } - public bool InitLocals + public override bool InitLocals { get { return init_locals; } set { init_locals = value; } } - internal TypeBuilder TypeBuilder + internal RuntimeTypeBuilder TypeBuilder { get { return type; } } @@ -310,12 +310,12 @@ public override object[] GetCustomAttributes(Type attributeType, bool inherit) throw NotSupported(); } - public ILGenerator GetILGenerator() + public override ILGenerator GetILGenerator() { return GetILGenerator(64); } - public ILGenerator GetILGenerator(int size) + public override ILGenerator GetILGenerator(int size) { if (((iattrs & MethodImplAttributes.CodeTypeMask) != MethodImplAttributes.IL) || @@ -324,11 +324,11 @@ public ILGenerator GetILGenerator(int size) throw new InvalidOperationException("Method body should not exist."); if (ilgen != null) return ilgen; - ilgen = new ILGenerator(type.Module, ((ModuleBuilder)type.Module).GetTokenGenerator(), size); + ilgen = new ILGenerator(type.Module, ((RuntimeModuleBuilder)type.Module).GetTokenGenerator(), size); return ilgen; } - public ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string strParamName) + public override ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string strParamName) { RejectIfCreated(); @@ -371,23 +371,23 @@ internal void fixup() internal void ResolveUserTypes() { - rtype = TypeBuilder.ResolveUserType(rtype); - TypeBuilder.ResolveUserTypes(parameters); - TypeBuilder.ResolveUserTypes(returnModReq); - TypeBuilder.ResolveUserTypes(returnModOpt); + rtype = RuntimeTypeBuilder.ResolveUserType(rtype); + RuntimeTypeBuilder.ResolveUserTypes(parameters); + RuntimeTypeBuilder.ResolveUserTypes(returnModReq); + RuntimeTypeBuilder.ResolveUserTypes(returnModOpt); if (paramModReq != null) { foreach (Type[] types in paramModReq) - TypeBuilder.ResolveUserTypes(types); + RuntimeTypeBuilder.ResolveUserTypes(types); } if (paramModOpt != null) { foreach (Type[] types in paramModOpt) - TypeBuilder.ResolveUserTypes(types); + RuntimeTypeBuilder.ResolveUserTypes(types); } } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); @@ -475,14 +475,14 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); } - public void SetImplementationFlags(MethodImplAttributes attributes) + public override void SetImplementationFlags(MethodImplAttributes attributes) { RejectIfCreated(); iattrs = attributes; @@ -591,30 +591,30 @@ public override Type[] GetGenericArguments() return result; } - public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + public override GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) { ArgumentNullException.ThrowIfNull(names); if (names.Length == 0) throw new ArgumentException(SR.Arg_EmptyArray, nameof(names)); type.check_not_created(); - generic_params = new GenericTypeParameterBuilder[names.Length]; + generic_params = new RuntimeGenericTypeParameterBuilder[names.Length]; for (int i = 0; i < names.Length; i++) { string item = names[i]; if (item == null) throw new ArgumentNullException(nameof(names)); - generic_params[i] = new GenericTypeParameterBuilder(type, this, item, i); + generic_params[i] = new RuntimeGenericTypeParameterBuilder(type, this, item, i); } return generic_params; } - public void SetReturnType(Type? returnType) + public override void SetReturnType(Type? returnType) { rtype = returnType; } - public void SetParameters(params Type[]? parameterTypes) + public override void SetParameters(params Type[]? parameterTypes) { if (parameterTypes != null) { @@ -627,7 +627,7 @@ public void SetParameters(params Type[]? parameterTypes) } } - public void SetSignature(Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) + public override void SetSignature(Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { SetReturnType(returnType); SetParameters(parameterTypes); diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs index 67b975b658a57..f035972c61c5c 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs @@ -44,7 +44,7 @@ namespace System.Reflection.Emit { [StructLayout(LayoutKind.Sequential)] - public partial class ModuleBuilder : Module + internal sealed partial class RuntimeModuleBuilder : ModuleBuilder { #region Sync with MonoReflectionModuleBuilder in object-internals.h @@ -60,10 +60,10 @@ public partial class ModuleBuilder : Module private UIntPtr dynamic_image; /* GC-tracked */ private int num_types; - private TypeBuilder[]? types; + private RuntimeTypeBuilder[]? types; private CustomAttributeBuilder[]? cattrs; private int table_idx; - internal AssemblyBuilder assemblyb; + internal RuntimeAssemblyBuilder assemblyb; private object[]? global_methods; private object[]? global_fields; private bool is_main; @@ -76,7 +76,7 @@ public partial class ModuleBuilder : Module private TypeBuilder? global_type; private bool global_type_created; // name_cache keys are display names - private Dictionary name_cache; + private Dictionary name_cache; private Dictionary us_string_cache; private ModuleBuilderTokenGenerator? token_gen; @@ -87,14 +87,14 @@ public partial class ModuleBuilder : Module private static extern void set_wrappers_type(ModuleBuilder mb, Type? ab); [DynamicDependency(nameof(table_indexes))] // Automatically keeps all previous fields too due to StructLayout - internal ModuleBuilder(AssemblyBuilder assb, string name) + internal RuntimeModuleBuilder(RuntimeAssemblyBuilder assb, string name) { this.name = this.scopename = name; this.fqname = name; this.assembly = this.assemblyb = assb; guid = Guid.NewGuid().ToByteArray(); table_idx = get_next_table_index(0x00, 1); - name_cache = new Dictionary(); + name_cache = new Dictionary(); us_string_cache = new Dictionary(512); this.global_type_created = false; @@ -102,7 +102,7 @@ internal ModuleBuilder(AssemblyBuilder assb, string name) CreateGlobalType(); - TypeBuilder tb = new TypeBuilder(this, TypeAttributes.Abstract, 0xFFFFFF); /*last valid token*/ + RuntimeTypeBuilder tb = new RuntimeTypeBuilder(this, TypeAttributes.Abstract, 0xFFFFFF); /*last valid token*/ Type? type = tb.CreateTypeInfo(); set_wrappers_type(this, type); } @@ -120,7 +120,7 @@ public override string FullyQualifiedName } } - public void CreateGlobalFunctions() + public override void CreateGlobalFunctions() { if (global_type_created) throw new InvalidOperationException("global methods already created"); @@ -131,18 +131,18 @@ public void CreateGlobalFunctions() } } - public FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) + public override FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) { ArgumentNullException.ThrowIfNull(data); FieldAttributes maskedAttributes = attributes & ~FieldAttributes.ReservedMask; - FieldBuilder fb = DefineDataImpl(name, data.Length, maskedAttributes | FieldAttributes.HasFieldRVA); + RuntimeFieldBuilder fb = (RuntimeFieldBuilder)DefineDataImpl(name, data.Length, maskedAttributes | FieldAttributes.HasFieldRVA); fb.SetRVAData(data); return fb; } - public FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) + public override FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) { return DefineDataImpl(name, size, attributes & ~FieldAttributes.ReservedMask); } @@ -165,7 +165,7 @@ private FieldBuilder DefineDataImpl(string name, int size, FieldAttributes attri { TypeBuilder tb = DefineType(typeName, TypeAttributes.Public | TypeAttributes.ExplicitLayout | TypeAttributes.Sealed, - typeof(ValueType), null, FieldBuilder.RVADataPackingSize(size), size); + typeof(ValueType), null, RuntimeFieldBuilder.RVADataPackingSize(size), size); tb.CreateType(); datablobtype = tb; } @@ -200,7 +200,7 @@ private void addGlobalMethod(MethodBuilder mb) } } - public MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? requiredReturnTypeCustomModifiers, Type[]? optionalReturnTypeCustomModifiers, Type[]? parameterTypes, Type[][]? requiredParameterTypeCustomModifiers, Type[][]? optionalParameterTypeCustomModifiers) + public override MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? requiredReturnTypeCustomModifiers, Type[]? optionalReturnTypeCustomModifiers, Type[]? parameterTypes, Type[][]? requiredParameterTypeCustomModifiers, Type[][]? optionalParameterTypeCustomModifiers) { ArgumentNullException.ThrowIfNull(name); if ((attributes & MethodAttributes.Static) == 0) @@ -215,7 +215,7 @@ public MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes } [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet) + public override MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet) { ArgumentNullException.ThrowIfNull(name); if ((attributes & MethodAttributes.Static) == 0) @@ -229,20 +229,20 @@ public MethodBuilder DefinePInvokeMethod(string name, string dllName, string ent return mb; } - private void AddType(TypeBuilder tb) + private void AddType(RuntimeTypeBuilder tb) { if (types != null) { if (types.Length == num_types) { - TypeBuilder[] new_types = new TypeBuilder[types.Length * 2]; + RuntimeTypeBuilder[] new_types = new RuntimeTypeBuilder[types.Length * 2]; Array.Copy(types, new_types, num_types); types = new_types; } } else { - types = new TypeBuilder[1]; + types = new RuntimeTypeBuilder[1]; } types[num_types] = tb; num_types++; @@ -254,7 +254,7 @@ private TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAcc ITypeIdentifier ident = TypeIdentifiers.FromInternal(name); if (name_cache.ContainsKey(ident)) throw new ArgumentException("Duplicate type name within an assembly."); - TypeBuilder res = new TypeBuilder(this, name, attr, parent, interfaces, packingSize, typesize, null); + RuntimeTypeBuilder res = new RuntimeTypeBuilder(this, name, attr, parent, interfaces, packingSize, typesize, null); AddType(res); name_cache.Add(ident, res); @@ -262,41 +262,41 @@ private TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAcc return res; } - internal void RegisterTypeName(TypeBuilder tb, ITypeName name) + internal void RegisterTypeName(RuntimeTypeBuilder tb, ITypeName name) { name_cache.Add(name, tb); } - internal TypeBuilder? GetRegisteredType(ITypeName name) + internal RuntimeTypeBuilder? GetRegisteredType(ITypeName name) { - TypeBuilder? result; + RuntimeTypeBuilder? result; name_cache.TryGetValue(name, out result); return result; } - public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) + public override TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) { return DefineType(name, attr, parent, interfaces, PackingSize.Unspecified, TypeBuilder.UnspecifiedTypeSize); } - public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packingSize, int typesize) + public override TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packingSize, int typesize) { return DefineType(name, attr, parent, null, packingSize, typesize); } - public MethodInfo GetArrayMethod(Type arrayClass, string methodName, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes) + public override MethodInfo GetArrayMethod(Type arrayClass, string methodName, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes) { return new MonoArrayMethod(arrayClass, methodName, callingConvention, returnType!, parameterTypes!); // FIXME: nulls should be allowed } - public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type underlyingType) + public override EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type underlyingType) { ITypeIdentifier ident = TypeIdentifiers.FromInternal(name); if (name_cache.ContainsKey(ident)) throw new ArgumentException("Duplicate type name within an assembly."); - EnumBuilder eb = new EnumBuilder(this, name, visibility, underlyingType); - TypeBuilder res = eb.GetTypeBuilder(); + RuntimeEnumBuilder eb = new RuntimeEnumBuilder(this, name, visibility, underlyingType); + RuntimeTypeBuilder res = eb.GetTypeBuilder(); AddType(res); name_cache.Add(ident, res); return eb; @@ -314,7 +314,7 @@ public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type under return GetType(className, false, ignoreCase); } - private static TypeBuilder? search_in_array(TypeBuilder[] arr, int validElementsInArray, ITypeName className) + private static RuntimeTypeBuilder? search_in_array(RuntimeTypeBuilder[] arr, int validElementsInArray, ITypeName className) { int i; for (i = 0; i < validElementsInArray; ++i) @@ -327,7 +327,7 @@ public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type under return null; } - private static TypeBuilder? search_nested_in_array(TypeBuilder[] arr, int validElementsInArray, ITypeName className) + private static RuntimeTypeBuilder? search_nested_in_array(RuntimeTypeBuilder[] arr, int validElementsInArray, ITypeName className) { int i; for (i = 0; i < validElementsInArray; ++i) @@ -338,9 +338,9 @@ public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type under return null; } - private static TypeBuilder? GetMaybeNested(TypeBuilder t, IEnumerable nested) + private static RuntimeTypeBuilder? GetMaybeNested(RuntimeTypeBuilder t, IEnumerable nested) { - TypeBuilder? result = t; + RuntimeTypeBuilder? result = t; foreach (ITypeName pname in nested) { @@ -358,7 +358,7 @@ public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type under { ArgumentException.ThrowIfNullOrEmpty(className); - TypeBuilder? result = null; + RuntimeTypeBuilder? result = null; if (types == null && throwOnError) throw new TypeLoadException(className); @@ -384,9 +384,8 @@ public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type under if (result != null && (ts.HasModifiers || ts.IsByRef)) { Type mt = result; - if (result is TypeBuilder) + if (result is RuntimeTypeBuilder tb) { - var tb = result as TypeBuilder; if (tb.is_created) mt = tb.CreateType()!; } @@ -407,7 +406,7 @@ public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type under } if (ts.IsByRef) mt = mt.MakeByRefType(); - result = mt as TypeBuilder; + result = mt as RuntimeTypeBuilder; if (result == null) return mt; } @@ -433,7 +432,7 @@ internal int get_next_table_index(int table, int count) return index; } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); if (cattrs != null) @@ -450,7 +449,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); } @@ -493,14 +492,14 @@ internal int GetArrayMethodToken(Type arrayClass, string methodName, CallingConv return GetMethodToken(GetArrayMethod(arrayClass, methodName, callingConvention, returnType, parameterTypes)); } - internal static int GetConstructorToken(ConstructorInfo con) + public override int GetConstructorToken(ConstructorInfo con) { ArgumentNullException.ThrowIfNull(con); return con.MetadataToken; } - internal static int GetFieldToken(FieldInfo field) + public override int GetFieldToken(FieldInfo field) { ArgumentNullException.ThrowIfNull(field); @@ -524,19 +523,19 @@ internal int GetSignatureToken(byte[] sigBytes, int sigLength) throw new NotImplementedException(); } - internal int GetSignatureToken(SignatureHelper sigHelper) + public override int GetSignatureToken(SignatureHelper sigHelper) { ArgumentNullException.ThrowIfNull(sigHelper); return GetToken(sigHelper); } - internal int GetStringConstant(string str) + public override int GetStringConstant(string str) { ArgumentNullException.ThrowIfNull(str); return GetToken(str); } - internal static int GetTypeToken(Type type) + public override int GetTypeToken(Type type, bool getGenericDefinition = true) { ArgumentNullException.ThrowIfNull(type); if (type.IsByRef) @@ -625,21 +624,21 @@ private int GetPseudoToken(MemberInfo member, bool create_open_instance) else token = typeref_tokengen--; } - else if (member is EnumBuilder eb) + else if (member is RuntimeEnumBuilder eb) { token = GetPseudoToken(eb.GetTypeBuilder(), create_open_instance); dict[member] = token; // n.b. don't register with the runtime, the TypeBuilder already did it. return token; } - else if (member is ConstructorBuilder cb) + else if (member is RuntimeConstructorBuilder cb) { if (member.Module == this && !cb.TypeBuilder.ContainsGenericParameters) token = methoddef_tokengen--; else token = memberref_tokengen--; } - else if (member is MethodBuilder mb) + else if (member is RuntimeMethodBuilder mb) { if (member.Module == this && !mb.TypeBuilder.ContainsGenericParameters && !mb.IsGenericMethodDefinition) token = methoddef_tokengen--; @@ -715,13 +714,13 @@ internal int GetToken(SignatureHelper helper) // Called from the runtime to return the corresponding finished reflection object internal static object RuntimeResolve(object obj) { - if (obj is MethodBuilder mb) + if (obj is RuntimeMethodBuilder mb) return mb.RuntimeResolve(); - if (obj is ConstructorBuilder cb) + if (obj is RuntimeConstructorBuilder cb) return cb.RuntimeResolve(); - if (obj is FieldBuilder fb) + if (obj is RuntimeFieldBuilder fb) return fb.RuntimeResolve(); - if (obj is GenericTypeParameterBuilder gtpb) + if (obj is RuntimeGenericTypeParameterBuilder gtpb) return gtpb.RuntimeResolve(); if (obj is FieldOnTypeBuilderInst fotbi) return fotbi.RuntimeResolve(); @@ -752,7 +751,7 @@ internal bool IsMain internal void CreateGlobalType() { - global_type ??= new TypeBuilder(this, 0, 1, true); + global_type ??= new RuntimeTypeBuilder(this, 0, 1, true); } public override Assembly Assembly @@ -784,7 +783,7 @@ public override bool IsResource() return false; } - internal ModuleBuilder InternalModule => this; + internal RuntimeModuleBuilder InternalModule => this; internal IntPtr GetUnderlyingNativeHandle() { return _impl; } @@ -929,14 +928,23 @@ public override int MetadataToken return RuntimeModule.get_MetadataToken(this); } } + + public override ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) + => RuntimeTypeBuilder.GetConstructor(type, constructor); + + public override FieldInfo GetField(Type type, FieldInfo field) + => RuntimeTypeBuilder.GetField(type, field); + + public override MethodInfo GetMethod(Type type, MethodInfo method) + => RuntimeTypeBuilder.GetMethod(type, method); } internal sealed class ModuleBuilderTokenGenerator : ITokenGenerator { - private ModuleBuilder mb; + private RuntimeModuleBuilder mb; - public ModuleBuilderTokenGenerator(ModuleBuilder mb) + public ModuleBuilderTokenGenerator(RuntimeModuleBuilder mb) { this.mb = mb; } diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.Mono.cs index ee427cb98959b..d634f330a21bb 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.Mono.cs @@ -96,7 +96,7 @@ public virtual void SetConstant(object? defaultValue) { if (position > 0) { - TypeBuilder.SetConstantValue(methodb.GetParameterType(position - 1), + RuntimeTypeBuilder.SetConstantValue(methodb.GetParameterType(position - 1), defaultValue, ref defaultValue); } diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.Mono.cs index 041784bdce33e..947dfbdc8a077 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.Mono.cs @@ -41,7 +41,7 @@ namespace System.Reflection.Emit { [StructLayout(LayoutKind.Sequential)] - public sealed partial class PropertyBuilder : PropertyInfo + internal sealed partial class RuntimePropertyBuilder : PropertyBuilder { #region Sync with MonoReflectionPropertyBuilder in object-internals.h private PropertyAttributes attrs; @@ -53,7 +53,7 @@ public sealed partial class PropertyBuilder : PropertyInfo private MethodBuilder? set_method; private MethodBuilder? get_method; private int table_idx; - internal TypeBuilder typeb; + internal RuntimeTypeBuilder typeb; private Type[]? returnModReq; private Type[]? returnModOpt; private Type[][]? paramModReq; @@ -61,7 +61,7 @@ public sealed partial class PropertyBuilder : PropertyInfo private CallingConventions callingConvention; #endregion - internal PropertyBuilder(TypeBuilder tb, string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[]? returnModReq, Type[]? returnModOpt, Type[]? parameterTypes, Type[][]? paramModReq, Type[][]? paramModOpt) + internal RuntimePropertyBuilder(RuntimeTypeBuilder tb, string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[]? returnModReq, Type[]? returnModOpt, Type[]? parameterTypes, Type[][]? paramModReq, Type[][]? paramModOpt) { this.name = name; this.attrs = attributes; @@ -109,7 +109,7 @@ public override Type ReflectedType get { return typeb; } } - public void AddOtherMethod(MethodBuilder mdBuilder) + public override void AddOtherMethod(MethodBuilder mdBuilder) { ArgumentNullException.ThrowIfNull(mdBuilder); typeb.check_not_created(); @@ -153,13 +153,13 @@ public override bool IsDefined(Type attributeType, bool inherit) { throw not_supported(); } - public void SetConstant(object? defaultValue) + public override void SetConstant(object? defaultValue) { typeb.check_not_created(); def_value = defaultValue; } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); typeb.check_not_created(); @@ -184,19 +184,19 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); } - public void SetGetMethod(MethodBuilder mdBuilder) + public override void SetGetMethod(MethodBuilder mdBuilder) { typeb.check_not_created(); ArgumentNullException.ThrowIfNull(mdBuilder); get_method = mdBuilder; } - public void SetSetMethod(MethodBuilder mdBuilder) + public override void SetSetMethod(MethodBuilder mdBuilder) { ArgumentNullException.ThrowIfNull(mdBuilder); set_method = mdBuilder; diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs index 45c734ef396a1..add46a336f8d5 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs @@ -370,7 +370,7 @@ public override int GetHashCode() public byte[] GetSignature() { - TypeBuilder.ResolveUserTypes(arguments); + RuntimeTypeBuilder.ResolveUserTypes(arguments); return type switch { diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs index 1615a94d9d4f5..1b497f37fc4f9 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs @@ -45,7 +45,7 @@ namespace System.Reflection.Emit { [StructLayout(LayoutKind.Sequential)] - public sealed partial class TypeBuilder : TypeInfo + internal sealed partial class RuntimeTypeBuilder : TypeBuilder { #region Sync with MonoReflectionTypeBuilder in object-internals.h private string tname; // name in internal form @@ -57,17 +57,17 @@ public sealed partial class TypeBuilder : TypeInfo private Type? nesting_type; internal Type[]? interfaces; internal int num_methods; - internal MethodBuilder[]? methods; - internal ConstructorBuilder[]? ctors; + internal RuntimeMethodBuilder[]? methods; + internal RuntimeConstructorBuilder[]? ctors; internal PropertyBuilder[]? properties; internal int num_fields; - internal FieldBuilder[]? fields; + internal RuntimeFieldBuilder[]? fields; internal EventBuilder[]? events; private CustomAttributeBuilder[]? cattrs; - internal TypeBuilder[]? subtypes; + internal RuntimeTypeBuilder[]? subtypes; internal TypeAttributes attrs; private int table_idx; - private ModuleBuilder pmodule; + private RuntimeModuleBuilder pmodule; private int class_size; private PackingSize packing_size; private IntPtr generic_container; @@ -92,7 +92,7 @@ protected override TypeAttributes GetAttributeFlagsImpl() [DynamicDependency(nameof(state))] // Automatically keeps all previous fields too due to StructLayout [DynamicDependency(nameof(IsAssignableToInternal))] // Used from reflection.c: mono_reflection_call_is_assignable_to - internal TypeBuilder(ModuleBuilder mb, TypeAttributes attr, int table_idx, bool is_hidden_global_type = false) + internal RuntimeTypeBuilder(RuntimeModuleBuilder mb, TypeAttributes attr, int table_idx, bool is_hidden_global_type = false) { this.is_hidden_global_type = is_hidden_global_type; this.parent = null; @@ -110,7 +110,7 @@ internal TypeBuilder(ModuleBuilder mb, TypeAttributes attr, int table_idx, bool [DynamicDependency(nameof(state))] // Automatically keeps all previous fields too due to StructLayout [DynamicDependency(nameof(IsAssignableToInternal))] // Used from reflection.c: mono_reflection_call_is_assignable_to - internal TypeBuilder(ModuleBuilder mb, string fullname, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]Type? parent, Type[]? interfaces, PackingSize packing_size, int type_size, Type? nesting_type) + internal RuntimeTypeBuilder(RuntimeModuleBuilder mb, string fullname, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]Type? parent, Type[]? interfaces, PackingSize packing_size, int type_size, Type? nesting_type) { this.is_hidden_global_type = false; int sep_index; @@ -255,12 +255,12 @@ public override string? Namespace get { return nspace; } } - public PackingSize PackingSize + public override PackingSize PackingSize { get { return packing_size; } } - public int Size + public override int Size { get { return class_size; } } @@ -270,7 +270,7 @@ public override Type? ReflectedType get { return nesting_type; } } - public void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) + public override void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) { ArgumentNullException.ThrowIfNull(interfaceType); @@ -397,53 +397,53 @@ private TypeBuilder DefineNestedType(string name, TypeAttributes attr, [Dynamica } } - TypeBuilder res = new TypeBuilder(pmodule, name, attr, parent, interfaces, packSize, typeSize, this); + RuntimeTypeBuilder res = new RuntimeTypeBuilder(pmodule, name, attr, parent, interfaces, packSize, typeSize, this); res.fullname = res.GetFullName(); pmodule.RegisterTypeName(res, res.fullname); if (subtypes != null) { - TypeBuilder[] new_types = new TypeBuilder[subtypes.Length + 1]; + RuntimeTypeBuilder[] new_types = new RuntimeTypeBuilder[subtypes.Length + 1]; Array.Copy(subtypes, new_types, subtypes.Length); new_types[subtypes.Length] = res; subtypes = new_types; } else { - subtypes = new TypeBuilder[1]; + subtypes = new RuntimeTypeBuilder[1]; subtypes[0] = res; } return res; } - public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) + public override TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) { return DefineNestedType(name, attr, parent, interfaces, PackingSize.Unspecified, UnspecifiedTypeSize); } - public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packSize, + public override TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packSize, int typeSize) { return DefineNestedType(name, attr, parent, null, packSize, typeSize); } - public ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers) + public override ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers) { check_not_created(); if (IsInterface && (attributes & MethodAttributes.Static) == 0) throw new InvalidOperationException(); - ConstructorBuilder cb = new ConstructorBuilder(this, attributes, + RuntimeConstructorBuilder cb = new RuntimeConstructorBuilder(this, attributes, callingConvention, parameterTypes, requiredCustomModifiers, optionalCustomModifiers); if (ctors != null) { - ConstructorBuilder[] new_ctors = new ConstructorBuilder[ctors.Length + 1]; + RuntimeConstructorBuilder[] new_ctors = new RuntimeConstructorBuilder[ctors.Length + 1]; Array.Copy(ctors, new_ctors, ctors.Length); new_ctors[ctors.Length] = cb; ctors = new_ctors; } else { - ctors = new ConstructorBuilder[1]; + ctors = new RuntimeConstructorBuilder[1]; ctors[0] = cb; } return cb; @@ -451,7 +451,7 @@ public ConstructorBuilder DefineConstructor(MethodAttributes attributes, Calling [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2075:UnrecognizedReflectionPattern", Justification = "Reflection.Emit is not subject to trimming")] - public ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes) + public override ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes) { Type parent_type, old_parent_type; @@ -483,7 +483,7 @@ public ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes) + " explicitly defined."); } - ConstructorBuilder cb = DefineConstructor(attributes, + RuntimeConstructorBuilder cb = (RuntimeConstructorBuilder)DefineConstructor(attributes, CallingConventions.Standard, EmptyTypes); ILGenerator ig = cb.GetILGenerator(); ig.Emit(OpCodes.Ldarg_0); @@ -493,26 +493,26 @@ public ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes) return cb; } - private void append_method(MethodBuilder mb) + private void append_method(RuntimeMethodBuilder mb) { if (methods != null) { if (methods.Length == num_methods) { - MethodBuilder[] new_methods = new MethodBuilder[methods.Length * 2]; + RuntimeMethodBuilder[] new_methods = new RuntimeMethodBuilder[methods.Length * 2]; Array.Copy(methods, new_methods, num_methods); methods = new_methods; } } else { - methods = new MethodBuilder[1]; + methods = new RuntimeMethodBuilder[1]; } methods[num_methods] = mb; num_methods++; } - public MethodBuilder DefineMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) + public override MethodBuilder DefineMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { check_name(nameof(name), name); check_not_created(); @@ -523,7 +523,7 @@ public MethodBuilder DefineMethod(string name, MethodAttributes attributes, Call throw new ArgumentException("Interface method must be abstract and virtual."); returnType ??= typeof(void); - MethodBuilder res = new MethodBuilder(this, name, attributes, + RuntimeMethodBuilder res = new RuntimeMethodBuilder(this, name, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, parameterTypes, @@ -534,7 +534,7 @@ public MethodBuilder DefineMethod(string name, MethodAttributes attributes, Call } [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public MethodBuilder DefinePInvokeMethod( + public override MethodBuilder DefinePInvokeMethod( string name, string dllName, string entryName, MethodAttributes attributes, @@ -557,8 +557,8 @@ public MethodBuilder DefinePInvokeMethod( throw new ArgumentException("PInvoke methods cannot exist on interfaces."); check_not_created(); - MethodBuilder res - = new MethodBuilder( + RuntimeMethodBuilder res + = new RuntimeMethodBuilder( this, name, attributes, @@ -577,7 +577,7 @@ MethodBuilder res return res; } - public void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) + public override void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) { ArgumentNullException.ThrowIfNull(methodInfoBody); ArgumentNullException.ThrowIfNull(methodInfoDeclaration); @@ -585,25 +585,25 @@ public void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInf if (methodInfoBody.DeclaringType != this) throw new ArgumentException("method body must belong to this type"); - if (methodInfoBody is MethodBuilder mb) + if (methodInfoBody is RuntimeMethodBuilder mb) { mb.set_override(methodInfoDeclaration); } } - public FieldBuilder DefineField(string fieldName, Type type, Type[]? requiredCustomModifiers, Type[]? optionalCustomModifiers, FieldAttributes attributes) + public override FieldBuilder DefineField(string fieldName, Type type, Type[]? requiredCustomModifiers, Type[]? optionalCustomModifiers, FieldAttributes attributes) { check_name(nameof(fieldName), fieldName); if (type == typeof(void)) throw new ArgumentException("Bad field type in defining field."); check_not_created(); - FieldBuilder res = new FieldBuilder(this, fieldName, type, attributes, requiredCustomModifiers, optionalCustomModifiers); + RuntimeFieldBuilder res = new RuntimeFieldBuilder(this, fieldName, type, attributes, requiredCustomModifiers, optionalCustomModifiers); if (fields != null) { if (fields.Length == num_fields) { - FieldBuilder[] new_fields = new FieldBuilder[fields.Length * 2]; + RuntimeFieldBuilder[] new_fields = new RuntimeFieldBuilder[fields.Length * 2]; Array.Copy(fields, new_fields, num_fields); fields = new_fields; } @@ -612,7 +612,7 @@ public FieldBuilder DefineField(string fieldName, Type type, Type[]? requiredCus } else { - fields = new FieldBuilder[1]; + fields = new RuntimeFieldBuilder[1]; fields[0] = res; num_fields++; } @@ -626,7 +626,7 @@ public FieldBuilder DefineField(string fieldName, Type type, Type[]? requiredCus return res; } - public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) + public override PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { check_name(nameof(name), name); if (parameterTypes != null) @@ -635,7 +635,7 @@ public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes throw new ArgumentNullException(nameof(parameterTypes)); check_not_created(); - PropertyBuilder res = new PropertyBuilder(this, name, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); + RuntimePropertyBuilder res = new RuntimePropertyBuilder(this, name, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); if (properties != null) { @@ -644,12 +644,12 @@ public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes } else { - properties = new PropertyBuilder[1] { res }; + properties = new RuntimePropertyBuilder[1] { res }; } return res; } - public ConstructorBuilder DefineTypeInitializer() + public override ConstructorBuilder DefineTypeInitializer() { return DefineConstructor(MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.SpecialName | @@ -693,26 +693,16 @@ private bool has_ctor_method() return false; } - // We require emitted types to have all members on their bases to be accessible. - // This is basically an identity function for `this`. - [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public Type CreateType() - { - Type? type = CreateTypeInfo(); - Debug.Assert(type != null); - return type; - } - // We require emitted types to have all members on their bases to be accessible. // This is basically an identity function for `this`. [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2083:UnrecognizedReflectionPattern", Justification = "Reflection.Emit is not subject to trimming")] [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public TypeInfo? CreateTypeInfo() + public override TypeInfo CreateTypeInfo() { /* handle nesting_type */ if (createTypeCalled) - return created; + return created!; if (!IsInterface && (parent == null) && (this != typeof(object)) && (FullName != "")) { @@ -728,9 +718,9 @@ public Type CreateType() if (fb == null) continue; Type ft = fb.FieldType; - if (!fb.IsStatic && (ft is TypeBuilder builder) && ft.IsValueType && (ft != this) && is_nested_in(ft)) + if (!fb.IsStatic && (ft is RuntimeTypeBuilder builder) && ft.IsValueType && (ft != this) && is_nested_in(ft)) { - TypeBuilder tb = builder; + RuntimeTypeBuilder tb = builder; if (!tb.is_created) { throw new NotImplementedException(); @@ -776,7 +766,7 @@ public Type CreateType() throw new BadImageFormatException(); if (!iface.IsInterface) throw new TypeLoadException(); - if (iface is TypeBuilder builder && !builder.is_created) + if (iface is RuntimeTypeBuilder builder && !builder.is_created) throw new TypeLoadException(); } } @@ -786,7 +776,7 @@ public Type CreateType() bool is_concrete = !IsAbstract; for (int i = 0; i < num_methods; ++i) { - MethodBuilder mb = (MethodBuilder)(methods[i]); + RuntimeMethodBuilder mb = (RuntimeMethodBuilder)(methods[i]); if (is_concrete && mb.IsAbstract) throw new InvalidOperationException("Type is concrete but has abstract method " + mb); mb.check_override(); @@ -796,7 +786,7 @@ public Type CreateType() if (ctors != null) { - foreach (ConstructorBuilder ctor in ctors) + foreach (RuntimeConstructorBuilder ctor in ctors) ctor.fixup(); } @@ -806,7 +796,7 @@ public Type CreateType() if (is_hidden_global_type) { - return null; + return null!; } if (created != null) @@ -822,21 +812,21 @@ private void ResolveUserTypes() ResolveUserTypes(interfaces); if (fields != null) { - foreach (FieldBuilder fb in fields) + foreach (RuntimeFieldBuilder fb in fields) { fb?.ResolveUserTypes(); } } if (methods != null) { - foreach (MethodBuilder mb in methods) + foreach (RuntimeMethodBuilder mb in methods) { mb?.ResolveUserTypes(); } } if (ctors != null) { - foreach (ConstructorBuilder cb in ctors) + foreach (RuntimeConstructorBuilder cb in ctors) { cb?.ResolveUserTypes(); } @@ -1153,7 +1143,7 @@ public override MethodInfo[] GetMethods(BindingFlags bindingAttr) if (subtypes == null) return null; - foreach (TypeBuilder t in subtypes) + foreach (RuntimeTypeBuilder t in subtypes) { if (!t.is_created) continue; @@ -1185,7 +1175,7 @@ public override Type[] GetNestedTypes(BindingFlags bindingAttr) if (subtypes == null) return EmptyTypes; - foreach (TypeBuilder t in subtypes) + foreach (RuntimeTypeBuilder t in subtypes) { match = false; if ((t.attrs & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPublic) @@ -1320,7 +1310,7 @@ public override Type MakeGenericType(params Type[] typeArguments) Type[] copy = new Type[typeArguments.Length]; typeArguments.CopyTo(copy, 0); - return AssemblyBuilder.MakeGenericType(this, copy); + return RuntimeAssemblyBuilder.MakeGenericType(this, copy); } public override Type MakePointerType() @@ -1337,7 +1327,7 @@ public override RuntimeTypeHandle TypeHandle } } - public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); @@ -1357,7 +1347,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) _ => throw new Exception("Error in customattr"), // we should ignore it since it can be any value anyway... }; - Type ctor_type = customBuilder.Ctor is ConstructorBuilder builder ? builder.parameters![0] : customBuilder.Ctor.GetParametersInternal()[0].ParameterType; + Type ctor_type = customBuilder.Ctor is RuntimeConstructorBuilder builder ? builder.parameters![0] : customBuilder.Ctor.GetParametersInternal()[0].ParameterType; int pos = 6; if (ctor_type.FullName == "System.Int16") pos = 4; @@ -1460,43 +1450,43 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) { SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); } - public EventBuilder DefineEvent(string name, EventAttributes attributes, Type eventtype) + public override EventBuilder DefineEvent(string name, EventAttributes attributes, Type eventtype) { check_name(nameof(name), name); ArgumentNullException.ThrowIfNull(eventtype); check_not_created(); - EventBuilder res = new EventBuilder(this, name, attributes, eventtype); + RuntimeEventBuilder res = new RuntimeEventBuilder(this, name, attributes, eventtype); if (events != null) { - EventBuilder[] new_events = new EventBuilder[events.Length + 1]; + RuntimeEventBuilder[] new_events = new RuntimeEventBuilder[events.Length + 1]; Array.Copy(events, new_events, events.Length); new_events[events.Length] = res; events = new_events; } else { - events = new EventBuilder[1]; + events = new RuntimeEventBuilder[1]; events[0] = res; } return res; } - public FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) + public override FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) { ArgumentNullException.ThrowIfNull(data); - FieldBuilder res = DefineUninitializedData(name, data.Length, attributes); + RuntimeFieldBuilder res = (RuntimeFieldBuilder)DefineUninitializedData(name, data.Length, attributes); res.SetRVAData(data); return res; } - public FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) + public override FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) { ArgumentException.ThrowIfNullOrEmpty(name); if ((size <= 0) || (size > 0x3f0000)) @@ -1510,7 +1500,7 @@ public FieldBuilder DefineUninitializedData(string name, int size, FieldAttribut { TypeBuilder tb = DefineNestedType(typeName, TypeAttributes.NestedPrivate | TypeAttributes.ExplicitLayout | TypeAttributes.Sealed, - typeof(ValueType), null, FieldBuilder.RVADataPackingSize(size), size); + typeof(ValueType), null, RuntimeFieldBuilder.RVADataPackingSize(size), size); tb.CreateType(); datablobtype = tb; } @@ -1521,7 +1511,7 @@ public FieldBuilder DefineUninitializedData(string name, int size, FieldAttribut [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2074:UnrecognizedReflectionPattern", Justification = "Linker doesn't analyze ResolveUserType but it's an identity function")] - public void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) + public override void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) { check_not_created(); @@ -1644,7 +1634,7 @@ internal bool IsAssignableToInternal([NotNullWhen(true)] Type? c) return c.IsAssignableFrom(parent); } - public bool IsCreated() + public override bool IsCreated() { return is_created; } @@ -1716,19 +1706,19 @@ public override MethodBase? DeclaringMethod } } - public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + public override GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) { ArgumentNullException.ThrowIfNull(names); if (names.Length == 0) throw new ArgumentException(SR.Arg_EmptyArray, nameof(names)); - generic_params = new GenericTypeParameterBuilder[names.Length]; + generic_params = new RuntimeGenericTypeParameterBuilder[names.Length]; for (int i = 0; i < names.Length; i++) { string item = names[i]; ArgumentNullException.ThrowIfNull(item, nameof(names)); - generic_params[i] = new GenericTypeParameterBuilder(this, null, item, i); + generic_params[i] = new RuntimeGenericTypeParameterBuilder(this, null, item, i); } return generic_params; @@ -1738,7 +1728,7 @@ public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] nam Justification = "Linker thinks Type.GetConstructor(ConstructorInfo) is one of the public APIs because it doesn't analyze method signatures. We already have ConstructorInfo.")] [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", Justification = "Type.MakeGenericType is used to create a typical instantiation")] - public static ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) + public static new ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) { if (!IsValidGetMethodType(type)) throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); @@ -1785,7 +1775,7 @@ private static bool IsValidGetMethodType(Type type) [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", Justification = "Type.MakeGenericType is used to create a typical instantiation")] - public static MethodInfo GetMethod(Type type, MethodInfo method) + public static new MethodInfo GetMethod(Type type, MethodInfo method) { if (!IsValidGetMethodType(type)) throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); @@ -1811,7 +1801,7 @@ public static MethodInfo GetMethod(Type type, MethodInfo method) [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", Justification = "Type.MakeGenericType is used to create a typical instantiation")] - public static FieldInfo GetField(Type type, FieldInfo field) + public static new FieldInfo GetField(Type type, FieldInfo field) { if (!IsValidGetMethodType(type)) throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); @@ -1895,7 +1885,7 @@ internal static bool SetConstantValue(Type destType, object? value, ref object? // The above behaviors might not be the most consistent but we have to live with them. Type? underlyingType; - if (destType is EnumBuilder enumBldr) + if (destType is RuntimeEnumBuilder enumBldr) { underlyingType = enumBldr.GetEnumUnderlyingType(); @@ -1905,7 +1895,7 @@ internal static bool SetConstantValue(Type destType, object? value, ref object? type == underlyingType)) throw_argument_ConstantDoesntMatch(); } - else if (destType is TypeBuilder typeBldr) + else if (destType is RuntimeTypeBuilder typeBldr) { underlyingType = typeBldr.underlying_type; diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilderInstantiation.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilderInstantiation.cs index 3cc5d84c03005..abf9999b10fae 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilderInstantiation.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilderInstantiation.cs @@ -102,7 +102,7 @@ internal bool IsCreated { get { - return generic_type is TypeBuilder tb ? tb.is_created : true; + return generic_type is RuntimeTypeBuilder tb ? tb.is_created : true; } } From 0383fc689c45517abebfe508db021ab47a38de50 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Fri, 9 Dec 2022 11:15:04 -0800 Subject: [PATCH 21/36] Handle API compat warnings --- .../src/CompatibilitySuppressions.xml | 376 ++++++------ .../System.Private.CoreLib.Shared.projitems | 2 +- .../CompatibilitySuppressions.xml | 564 ------------------ 3 files changed, 189 insertions(+), 753 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml b/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml index b76343ce3939d..8a68fcd70f1d1 100644 --- a/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml +++ b/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml @@ -20,566 +20,566 @@ CP0002 M:System.Reflection.Emit.ModuleBuilder.GetConstructor(System.Type,System.Reflection.ConstructorInfo) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0002 M:System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0002 M:System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0002 M:System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0002 M:System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0002 M:System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type,System.Boolean) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ConstructorBuilder.get_InitLocals - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ConstructorBuilder.set_InitLocals(System.Boolean) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.EnumBuilder.CreateTypeInfo - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String,System.Object) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.EnumBuilder.get_UnderlyingField - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.FieldBuilder.SetConstant(System.Object) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.GenericTypeParameterBuilder.SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.GenericTypeParameterBuilder.SetInterfaceConstraints(System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.MethodBuilder.get_InitLocals - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.MethodBuilder.GetILGenerator - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.MethodBuilder.set_InitLocals(System.Boolean) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.MethodBuilder.SetSignature(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String,System.Reflection.TypeAttributes,System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.CreateTypeInfo - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineEvent(System.String,System.Reflection.EventAttributes,System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineField(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo,System.Reflection.MethodInfo) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineProperty(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineTypeInitializer - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.get_PackingSize - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.get_Size - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.IsCreated - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 M:System.Reflection.Emit.TypeBuilder.SetParent(System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 P:System.Reflection.Emit.ConstructorBuilder.InitLocals - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 P:System.Reflection.Emit.EnumBuilder.UnderlyingField - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 P:System.Reflection.Emit.MethodBuilder.InitLocals - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 P:System.Reflection.Emit.TypeBuilder.PackingSize - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0013 P:System.Reflection.Emit.TypeBuilder.Size - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll + ref/net8.0/System.Private.CoreLib.dll + lib/net8.0/System.Private.CoreLib.dll CP0014 diff --git a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems index 9e0a8d2d7adc9..053685c218702 100644 --- a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems +++ b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems @@ -635,7 +635,7 @@ - + diff --git a/src/mono/System.Private.CoreLib/CompatibilitySuppressions.xml b/src/mono/System.Private.CoreLib/CompatibilitySuppressions.xml index 9e527265b51e1..6836172aa2e68 100644 --- a/src/mono/System.Private.CoreLib/CompatibilitySuppressions.xml +++ b/src/mono/System.Private.CoreLib/CompatibilitySuppressions.xml @@ -1,569 +1,5 @@  - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetConstructor(System.Type,System.Reflection.ConstructorInfo) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type,System.Boolean) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.get_InitLocals - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.set_InitLocals(System.Boolean) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.CreateTypeInfo - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String,System.Object) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.get_UnderlyingField - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.FieldBuilder.SetConstant(System.Object) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetInterfaceConstraints(System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.get_InitLocals - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.GetILGenerator - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.set_InitLocals(System.Boolean) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetSignature(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String,System.Reflection.TypeAttributes,System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.CreateTypeInfo - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineEvent(System.String,System.Reflection.EventAttributes,System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineField(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo,System.Reflection.MethodInfo) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineProperty(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineTypeInitializer - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.get_PackingSize - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.get_Size - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.IsCreated - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.SetParent(System.Type) - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.ConstructorBuilder.InitLocals - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.EnumBuilder.UnderlyingField - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.MethodBuilder.InitLocals - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.TypeBuilder.PackingSize - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.TypeBuilder.Size - ref/net7.0/System.Private.CoreLib.dll - lib/net7.0/System.Private.CoreLib.dll - CP0014 M:System.Runtime.CompilerServices.RuntimeHelpers.GetObjectValue(System.Object)->object?:[T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute] From b656b0119c2860116d6f581e69dd41e36203b13d Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Mon, 12 Dec 2022 10:56:03 -0800 Subject: [PATCH 22/36] Fix some failures --- .../src/System/Reflection/Emit/EnumBuilder.cs | 2 +- .../src/System/Reflection/Emit/TypeBuilder.cs | 4 ++-- .../src/System/Reflection/Emit/EnumBuilder.cs | 4 ++-- .../System/Reflection/Emit/AssemblyBuilder.Mono.cs | 13 +++++++------ .../src/System/Reflection/Emit/EnumBuilder.Mono.cs | 4 +++- 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs index 9f6b054ba64a9..e0422b7039389 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs @@ -39,7 +39,7 @@ public override FieldBuilder DefineLiteral(string literalName, object? literalVa } [return: DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes.All)] - public override TypeInfo? CreateTypeInfo() + public override TypeInfo CreateTypeInfo() { return m_typeBuilder.CreateTypeInfo(); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index 54a65b562735b..dd3b0dcb2e478 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -1678,8 +1678,8 @@ private EventBuilder DefineEventNoLock(string name, EventAttributes attributes, public override TypeInfo CreateTypeInfo() { TypeInfo? typeInfo = CreateTypeInfoImpl(); - Debug.Assert(typeInfo != null); - return typeInfo; + Debug.Assert(m_isHiddenGlobalType || typeInfo != null); + return typeInfo!; } [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs index 03645421c2da4..99bb2c5472ec5 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs @@ -15,11 +15,11 @@ public virtual FieldBuilder UnderlyingField => UnderlyingField; [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public Type? CreateType() + public Type CreateType() => CreateTypeInfo(); [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public virtual TypeInfo? CreateTypeInfo() + public virtual TypeInfo CreateTypeInfo() => CreateTypeInfo(); public virtual FieldBuilder DefineLiteral(string literalName, object literalValue) diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs index df1a846b595da..de28010a2ce8f 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs @@ -174,9 +174,6 @@ public override int GetHashCode() [StructLayout(LayoutKind.Sequential)] public partial class AssemblyBuilder { - private UIntPtr dynamic_assembly; /* GC-tracked */ - private Module[]? loaded_modules; - [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyBuilderAccess access) { @@ -204,15 +201,19 @@ internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder // // AssemblyBuilder inherits from Assembly, but the runtime thinks its layout inherits from RuntimeAssembly // - #region Sync with RuntimeAssembly.cs and ReflectionAssembly in object-internals.h +#region Sync with RuntimeAssembly.cs and ReflectionAssembly in object-internals.h internal IntPtr _mono_assembly; +#pragma warning disable CS0169, CA1823 // The field 'RuntimeAssemblyBuilder.dynamic_assembly' is never used + private UIntPtr dynamic_assembly; /* GC-tracked */ private RuntimeModuleBuilder[] modules; private string? name; private CustomAttributeBuilder[]? cattrs; private string? version; private string? culture; private byte[]? public_key_token; + private Module[]? loaded_modules; +#pragma warning restore CS0169, CA1823 // The field 'RuntimeAssemblyBuilder.loaded_modules' is never used private uint access; #endregion @@ -222,10 +223,10 @@ internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder [MethodImplAttribute(MethodImplOptions.InternalCall)] [DynamicDependency("RuntimeResolve", typeof(RuntimeModuleBuilder))] - private static extern void basic_init(AssemblyBuilder ab); + private static extern void basic_init(RuntimeAssemblyBuilder ab); [MethodImplAttribute(MethodImplOptions.InternalCall)] - private static extern void UpdateNativeCustomAttributes(AssemblyBuilder ab); + private static extern void UpdateNativeCustomAttributes(RuntimeAssemblyBuilder ab); [DynamicDependency(nameof(access))] // Automatically keeps all previous fields too due to StructLayout internal RuntimeAssemblyBuilder(AssemblyName n, AssemblyBuilderAccess access) diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs index cd325bbc7feb3..f6fc8c51339e0 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs @@ -193,7 +193,9 @@ public override Type UnderlyingSystemType } [return: DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes.All)] - public override TypeInfo? CreateTypeInfo() +#pragma warning disable CS8764 // Nullability of return type doesn't match overridden member + public override TypeInfo CreateTypeInfo() +#pragma warning restore CS8764 { return _tb.CreateTypeInfo(); } From fe0fddfe67d19404aad177c3e8b0234fcab87f26 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Tue, 13 Dec 2022 08:50:33 -0800 Subject: [PATCH 23/36] Mono updates --- .../System/Reflection/Emit/EnumBuilder.Mono.cs | 2 -- .../Reflection/Emit/ModuleBuilder.Mono.cs | 10 +++++----- src/mono/mono/metadata/icall-def.h | 18 +++++++++--------- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs index f6fc8c51339e0..ac084368ba26d 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs @@ -193,9 +193,7 @@ public override Type UnderlyingSystemType } [return: DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes.All)] -#pragma warning disable CS8764 // Nullability of return type doesn't match overridden member public override TypeInfo CreateTypeInfo() -#pragma warning restore CS8764 { return _tb.CreateTypeInfo(); } diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs index af2d612b44bc8..51a83e49a565e 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs @@ -81,10 +81,10 @@ internal sealed partial class RuntimeModuleBuilder : ModuleBuilder private ModuleBuilderTokenGenerator? token_gen; [MethodImplAttribute(MethodImplOptions.InternalCall)] - private static extern void basic_init(ModuleBuilder ab); + private static extern void basic_init(RuntimeModuleBuilder ab); [MethodImplAttribute(MethodImplOptions.InternalCall)] - private static extern void set_wrappers_type(ModuleBuilder mb, Type? ab); + private static extern void set_wrappers_type(RuntimeModuleBuilder mb, Type? ab); [DynamicDependency(nameof(table_indexes))] // Automatically keeps all previous fields too due to StructLayout internal RuntimeModuleBuilder(RuntimeAssemblyBuilder assb, string name) @@ -551,13 +551,13 @@ internal int GetTypeToken(string name) } [MethodImplAttribute(MethodImplOptions.InternalCall)] - private static extern int getUSIndex(ModuleBuilder mb, string str); + private static extern int getUSIndex(RuntimeModuleBuilder mb, string str); [MethodImplAttribute(MethodImplOptions.InternalCall)] - private static extern int getToken(ModuleBuilder mb, object obj, bool create_open_instance); + private static extern int getToken(RuntimeModuleBuilder mb, object obj, bool create_open_instance); [MethodImplAttribute(MethodImplOptions.InternalCall)] - private static extern int getMethodToken(ModuleBuilder mb, MethodBase method, + private static extern int getMethodToken(RuntimeModuleBuilder mb, MethodBase method, Type[] opt_param_types); internal int GetToken(string str) diff --git a/src/mono/mono/metadata/icall-def.h b/src/mono/mono/metadata/icall-def.h index 681f89f181858..61d15c5ba2eb8 100644 --- a/src/mono/mono/metadata/icall-def.h +++ b/src/mono/mono/metadata/icall-def.h @@ -294,10 +294,6 @@ HANDLES(MCATTR_1, "GetCustomAttributesDataInternal", ves_icall_MonoCustomAttrs_G HANDLES(MCATTR_2, "GetCustomAttributesInternal", ves_icall_MonoCustomAttrs_GetCustomAttributesInternal, MonoArray, 3, (MonoObject, MonoReflectionType, MonoBoolean)) HANDLES(MCATTR_3, "IsDefinedInternal", ves_icall_MonoCustomAttrs_IsDefinedInternal, MonoBoolean, 2, (MonoObject, MonoReflectionType)) -ICALL_TYPE(ASSEMB, "System.Reflection.Emit.AssemblyBuilder", ASSEMB_1) -HANDLES(ASSEMB_1, "UpdateNativeCustomAttributes", ves_icall_AssemblyBuilder_UpdateNativeCustomAttributes, void, 1, (MonoReflectionAssemblyBuilder)) -HANDLES(ASSEMB_2, "basic_init", ves_icall_AssemblyBuilder_basic_init, void, 1, (MonoReflectionAssemblyBuilder)) - #ifndef DISABLE_REFLECTION_EMIT ICALL_TYPE(CATTRB, "System.Reflection.Emit.CustomAttributeBuilder", CATTRB_1) HANDLES(CATTRB_1, "GetBlob", ves_icall_CustomAttributeBuilder_GetBlob, MonoArray, 7, (MonoReflectionAssembly, MonoObject, MonoArray, MonoArray, MonoArray, MonoArray, MonoArray)) @@ -306,10 +302,14 @@ HANDLES(CATTRB_1, "GetBlob", ves_icall_CustomAttributeBuilder_GetBlob, MonoArray ICALL_TYPE(DYNM, "System.Reflection.Emit.DynamicMethod", DYNM_1) HANDLES(DYNM_1, "create_dynamic_method", ves_icall_DynamicMethod_create_dynamic_method, void, 4, (MonoReflectionDynamicMethod, MonoString, guint32, guint32)) -ICALL_TYPE(ENUMB, "System.Reflection.Emit.EnumBuilder", ENUMB_1) +ICALL_TYPE(ASSEMB, "System.Reflection.Emit.RuntimeAssemblyBuilder", ASSEMB_1) +HANDLES(ASSEMB_1, "UpdateNativeCustomAttributes", ves_icall_AssemblyBuilder_UpdateNativeCustomAttributes, void, 1, (MonoReflectionAssemblyBuilder)) +HANDLES(ASSEMB_2, "basic_init", ves_icall_AssemblyBuilder_basic_init, void, 1, (MonoReflectionAssemblyBuilder)) + +ICALL_TYPE(ENUMB, "System.Reflection.Emit.RuntimeEnumBuilder", ENUMB_1) HANDLES(ENUMB_1, "setup_enum_type", ves_icall_EnumBuilder_setup_enum_type, void, 2, (MonoReflectionType, MonoReflectionType)) -ICALL_TYPE(MODULEB, "System.Reflection.Emit.ModuleBuilder", MODULEB_10) +ICALL_TYPE(MODULEB, "System.Reflection.Emit.RuntimeModuleBuilder", MODULEB_10) HANDLES(MODULEB_10, "GetRegisteredToken", ves_icall_ModuleBuilder_GetRegisteredToken, MonoObject, 2, (MonoReflectionModuleBuilder, guint32)) HANDLES(MODULEB_8, "RegisterToken", ves_icall_ModuleBuilder_RegisterToken, void, 3, (MonoReflectionModuleBuilder, MonoObject, guint32)) HANDLES(MODULEB_2, "basic_init", ves_icall_ModuleBuilder_basic_init, void, 1, (MonoReflectionModuleBuilder)) @@ -318,13 +318,13 @@ HANDLES(MODULEB_6, "getToken", ves_icall_ModuleBuilder_getToken, gint32, 3, (Mon HANDLES(MODULEB_7, "getUSIndex", ves_icall_ModuleBuilder_getUSIndex, guint32, 2, (MonoReflectionModuleBuilder, MonoString)) HANDLES(MODULEB_9, "set_wrappers_type", ves_icall_ModuleBuilder_set_wrappers_type, void, 2, (MonoReflectionModuleBuilder, MonoReflectionType)) +ICALL_TYPE(TYPEB, "System.Reflection.Emit.RuntimeTypeBuilder", TYPEB_1) +HANDLES(TYPEB_1, "create_runtime_class", ves_icall_TypeBuilder_create_runtime_class, MonoReflectionType, 1, (MonoReflectionTypeBuilder)) + ICALL_TYPE(SIGH, "System.Reflection.Emit.SignatureHelper", SIGH_1) HANDLES(SIGH_1, "get_signature_field", ves_icall_SignatureHelper_get_signature_field, MonoArray, 1, (MonoReflectionSigHelper)) HANDLES(SIGH_2, "get_signature_local", ves_icall_SignatureHelper_get_signature_local, MonoArray, 1, (MonoReflectionSigHelper)) -ICALL_TYPE(TYPEB, "System.Reflection.Emit.TypeBuilder", TYPEB_1) -HANDLES(TYPEB_1, "create_runtime_class", ves_icall_TypeBuilder_create_runtime_class, MonoReflectionType, 1, (MonoReflectionTypeBuilder)) - ICALL_TYPE(FIELDI, "System.Reflection.FieldInfo", FILEDI_1) HANDLES(FILEDI_1, "get_marshal_info", ves_icall_System_Reflection_FieldInfo_get_marshal_info, MonoReflectionMarshalAsAttribute, 1, (MonoReflectionField)) HANDLES(FILEDI_2, "internal_from_handle_type", ves_icall_System_Reflection_FieldInfo_internal_from_handle_type, MonoReflectionField, 2, (MonoClassField_ref, MonoType_ref)) From 3433e5a0e7855755b9799509fbf45402fb3553fd Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Tue, 20 Dec 2022 15:22:11 -0800 Subject: [PATCH 24/36] Mono updates --- .../src/System/Reflection/Emit/TypeBuilder.cs | 12 ++++++------ .../ref/System.Reflection.Emit.cs | 4 ++-- .../Reflection/Emit/AssemblyBuilder.Mono.cs | 12 +++++++++++- .../Emit/GenericTypeParameterBuilder.cs | 4 ++-- .../System/Reflection/Emit/ModuleBuilder.Mono.cs | 2 +- .../System/Reflection/Emit/TypeBuilder.Mono.cs | 16 ++++++++-------- 6 files changed, 30 insertions(+), 20 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index 7f0899c55996d..f62199ddacdd2 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -160,29 +160,29 @@ public virtual FieldBuilder DefineUninitializedData(string name, int size, Field public static ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) { - Module? module = type?.Module; + Module module = type.Module; if (module is not ModuleBuilder moduleBuilder) throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); - return moduleBuilder.GetConstructor(type!, constructor); + return moduleBuilder.GetConstructor(type, constructor); } public static FieldInfo GetField(Type type, FieldInfo field) { - Module? module = type?.Module; + Module module = type.Module; if (module is not ModuleBuilder moduleBuilder) throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); - return moduleBuilder.GetField(type!, field); + return moduleBuilder.GetField(type, field); } public static MethodInfo GetMethod(Type type, MethodInfo method) { - Module? module = type?.Module; + Module module = type.Module; if (module is not ModuleBuilder moduleBuilder) throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); - return moduleBuilder.GetMethod(type!, method); + return moduleBuilder.GetMethod(type, method); } public virtual bool IsCreated() diff --git a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs index e274ca41a258e..47059c46deacc 100644 --- a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs +++ b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs @@ -422,14 +422,14 @@ protected ModuleBuilder() { } public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - /*public abstract int GetTypeToken(Type type, bool getGenericDefinition = true); + public abstract int GetTypeToken(Type type, bool getGenericDefinition = true); public abstract int GetFieldToken(FieldInfo field); public abstract int GetConstructorToken(ConstructorInfo con); public abstract int GetSignatureToken(SignatureHelper sigHelper); public abstract int GetStringConstant(string str); public abstract ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor); public abstract FieldInfo GetField(Type type, FieldInfo field); - public abstract MethodInfo GetMethod(Type type, MethodInfo method);*/ + public abstract MethodInfo GetMethod(Type type, MethodInfo method); } public abstract partial class PropertyBuilder : System.Reflection.PropertyInfo { diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs index de28010a2ce8f..853d69db1f146 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs @@ -281,7 +281,17 @@ internal static AssemblyBuilder InternalDefineDynamicAssembly( AssemblyLoadContext? _, IEnumerable? assemblyAttributes) { - return DefineDynamicAssembly(name, access, assemblyAttributes); + ArgumentNullException.ThrowIfNull(name); + + AssemblyBuilder ab = new RuntimeAssemblyBuilder(name, access); + + if (assemblyAttributes != null) + { + foreach (CustomAttributeBuilder attr in assemblyAttributes) + ab.SetCustomAttribute(attr); + } + + return ab; } public override ModuleBuilder? GetDynamicModule(string name) diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs index efbcaa709a873..668c51d0e0f6b 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs @@ -42,7 +42,7 @@ namespace System.Reflection.Emit internal sealed class RuntimeGenericTypeParameterBuilder : GenericTypeParameterBuilder { #region Sync with MonoReflectionGenericParam in object-internals.h - private TypeBuilder tbuilder; + private RuntimeTypeBuilder tbuilder; private RuntimeMethodBuilder? mbuilder; private string name; private int index; @@ -53,7 +53,7 @@ internal sealed class RuntimeGenericTypeParameterBuilder : GenericTypeParameterB #endregion [DynamicDependency(nameof(attrs))] // Automatically keeps all previous fields too due to StructLayout - internal RuntimeGenericTypeParameterBuilder(TypeBuilder tbuilder, RuntimeMethodBuilder? mbuilder, string name, int index) + internal RuntimeGenericTypeParameterBuilder(RuntimeTypeBuilder tbuilder, RuntimeMethodBuilder? mbuilder, string name, int index) { this.tbuilder = tbuilder; this.mbuilder = mbuilder; diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs index 51a83e49a565e..5aa65122ddb25 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs @@ -73,7 +73,7 @@ internal sealed partial class RuntimeModuleBuilder : ModuleBuilder #endregion private byte[] guid; - private TypeBuilder? global_type; + private RuntimeTypeBuilder? global_type; private bool global_type_created; // name_cache keys are display names private Dictionary name_cache; diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs index b7011686c599e..a2168c0a238cc 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs @@ -59,10 +59,10 @@ internal sealed partial class RuntimeTypeBuilder : TypeBuilder internal int num_methods; internal RuntimeMethodBuilder[]? methods; internal RuntimeConstructorBuilder[]? ctors; - internal PropertyBuilder[]? properties; + internal RuntimePropertyBuilder[]? properties; internal int num_fields; internal RuntimeFieldBuilder[]? fields; - internal EventBuilder[]? events; + internal RuntimeEventBuilder[]? events; private CustomAttributeBuilder[]? cattrs; internal RuntimeTypeBuilder[]? subtypes; internal TypeAttributes attrs; @@ -71,7 +71,7 @@ internal sealed partial class RuntimeTypeBuilder : TypeBuilder private int class_size; private PackingSize packing_size; private IntPtr generic_container; - private GenericTypeParameterBuilder[]? generic_params; + private RuntimeGenericTypeParameterBuilder[]? generic_params; [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] private TypeInfo? created; @@ -316,7 +316,7 @@ public override void AddInterfaceImplementation([DynamicallyAccessedMembers(Dyna ConstructorBuilder? found = null; int count = 0; - foreach (ConstructorBuilder cb in ctors) + foreach (RuntimeConstructorBuilder cb in ctors) { if (callConvention != CallingConventions.Any && cb.CallingConvention != callConvention) continue; @@ -710,7 +710,7 @@ public override TypeInfo CreateTypeInfo() // value type. if (fields != null) { - foreach (FieldBuilder fb in fields) + foreach (RuntimeFieldBuilder fb in fields) { if (fb == null) continue; @@ -865,7 +865,7 @@ internal void GenerateDebugInfo (ISymbolWriter symbolWriter) } if (ctors != null) { - foreach (ConstructorBuilder ctor in ctors) + foreach (RuntimeConstructorBuilder ctor in ctors) ctor.GenerateDebugInfo (symbolWriter); } @@ -891,11 +891,11 @@ internal ConstructorInfo[] GetConstructorsInternal(BindingFlags bindingAttr) { if (ctors == null) return Array.Empty(); - List result = new List(); + List result = new List(); bool match; MethodAttributes mattrs; - foreach (ConstructorBuilder c in ctors) + foreach (RuntimeConstructorBuilder c in ctors) { match = false; mattrs = c.Attributes; From 902f55090977bd2dd6a7bfd870c522a131bfbe56 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Tue, 20 Dec 2022 17:37:16 -0800 Subject: [PATCH 25/36] Suppress unused variable warning --- .../src/System/Reflection/Emit/AssemblyBuilder.Mono.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs index 18114c196b114..52e5416dffdb7 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs @@ -203,9 +203,9 @@ internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder // #region Sync with RuntimeAssembly.cs and ReflectionAssembly in object-internals.h internal IntPtr _mono_assembly; +#pragma warning disable CS0169, CA1823 // The field 'RuntimeAssemblyBuilder.dynamic_assembly' is never used private LoaderAllocator? m_keepalive; -#pragma warning disable CS0169, CA1823 // The field 'RuntimeAssemblyBuilder.dynamic_assembly' is never used private UIntPtr dynamic_assembly; /* GC-tracked */ private RuntimeModuleBuilder[] modules; private string? name; From a6f202e1bd65aff96779babe0bf8fcd49de30795 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Wed, 28 Dec 2022 15:20:45 -0800 Subject: [PATCH 26/36] Mono failure fixes --- .../Reflection/Emit/AssemblyBuilder.Mono.cs | 18 ++++---------- .../Reflection/Emit/TypeBuilder.Mono.cs | 4 ++-- src/mono/mono/metadata/custom-attrs.c | 12 +++++----- src/mono/mono/metadata/dynamic-image.c | 2 +- src/mono/mono/metadata/object-internals.h | 14 +++++------ src/mono/mono/metadata/reflection.c | 16 ++++++------- src/mono/mono/metadata/sre.c | 24 +++++++++---------- 7 files changed, 40 insertions(+), 50 deletions(-) diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs index 52e5416dffdb7..20c6f5963fa7e 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs @@ -171,7 +171,6 @@ public override int GetHashCode() } } - [StructLayout(LayoutKind.Sequential)] public partial class AssemblyBuilder { [RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] @@ -196,6 +195,7 @@ public static AssemblyBuilder DefineDynamicAssembly(AssemblyName name, AssemblyB } } + [StructLayout(LayoutKind.Sequential)] internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder { // @@ -203,7 +203,7 @@ internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder // #region Sync with RuntimeAssembly.cs and ReflectionAssembly in object-internals.h internal IntPtr _mono_assembly; -#pragma warning disable CS0169, CA1823 // The field 'RuntimeAssemblyBuilder.dynamic_assembly' is never used +//#pragma warning disable CS0169, CA1823 // The field 'RuntimeAssemblyBuilder.dynamic_assembly' is never used private LoaderAllocator? m_keepalive; private UIntPtr dynamic_assembly; /* GC-tracked */ @@ -214,7 +214,7 @@ internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder private string? culture; private byte[]? public_key_token; private Module[]? loaded_modules; -#pragma warning restore CS0169, CA1823 // The field 'RuntimeAssemblyBuilder.loaded_modules' is never used +//#pragma warning restore CS0169, CA1823 // The field 'RuntimeAssemblyBuilder.loaded_modules' is never used private uint access; #endregion @@ -282,17 +282,7 @@ internal static AssemblyBuilder InternalDefineDynamicAssembly( AssemblyLoadContext? _, IEnumerable? assemblyAttributes) { - ArgumentNullException.ThrowIfNull(name); - - AssemblyBuilder ab = new RuntimeAssemblyBuilder(name, access); - - if (assemblyAttributes != null) - { - foreach (CustomAttributeBuilder attr in assemblyAttributes) - ab.SetCustomAttribute(attr); - } - - return ab; + return DefineDynamicAssembly(name, access, assemblyAttributes); } public override ModuleBuilder? GetDynamicModule(string name) diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs index a2168c0a238cc..d59e8c67a47ab 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs @@ -773,7 +773,7 @@ public override TypeInfo CreateTypeInfo() bool is_concrete = !IsAbstract; for (int i = 0; i < num_methods; ++i) { - RuntimeMethodBuilder mb = (RuntimeMethodBuilder)(methods[i]); + RuntimeMethodBuilder mb = (methods[i]); if (is_concrete && mb.IsAbstract) throw new InvalidOperationException("Type is concrete but has abstract method " + mb); mb.check_override(); @@ -891,7 +891,7 @@ internal ConstructorInfo[] GetConstructorsInternal(BindingFlags bindingAttr) { if (ctors == null) return Array.Empty(); - List result = new List(); + List result = new List(); bool match; MethodAttributes mattrs; diff --git a/src/mono/mono/metadata/custom-attrs.c b/src/mono/mono/metadata/custom-attrs.c index 46d8f54b94dec..77b0458dcdfba 100644 --- a/src/mono/mono/metadata/custom-attrs.c +++ b/src/mono/mono/metadata/custom-attrs.c @@ -2453,33 +2453,33 @@ mono_reflection_get_custom_attrs_info_checked (MonoObjectHandle obj, MonoError * g_free (type_name); goto leave; } - } else if (strcmp ("AssemblyBuilder", klass_name) == 0) { + } else if (strcmp ("RuntimeAssemblyBuilder", klass_name) == 0) { MonoReflectionAssemblyBuilderHandle assemblyb = MONO_HANDLE_CAST (MonoReflectionAssemblyBuilder, obj); MonoReflectionAssemblyHandle assembly = MONO_HANDLE_CAST (MonoReflectionAssembly, assemblyb); MonoArrayHandle cattrs = MONO_HANDLE_NEW_GET (MonoArray, assemblyb, cattrs); MonoImage * image = MONO_HANDLE_GETVAL (assembly, assembly)->image; g_assert (image); cinfo = mono_custom_attrs_from_builders_handle (NULL, image, cattrs); - } else if (strcmp ("TypeBuilder", klass_name) == 0) { + } else if (strcmp ("RuntimeTypeBuilder", klass_name) == 0) { MonoReflectionTypeBuilderHandle tb = MONO_HANDLE_CAST (MonoReflectionTypeBuilder, obj); MonoReflectionModuleBuilderHandle module = MONO_HANDLE_NEW_GET (MonoReflectionModuleBuilder, tb, module); MonoDynamicImage *dynamic_image = MONO_HANDLE_GETVAL (module, dynamic_image); MonoArrayHandle cattrs = MONO_HANDLE_NEW_GET (MonoArray, tb, cattrs); cinfo = mono_custom_attrs_from_builders_handle (NULL, &dynamic_image->image, cattrs); - } else if (strcmp ("ModuleBuilder", klass_name) == 0) { + } else if (strcmp ("RuntimeModuleBuilder", klass_name) == 0) { MonoReflectionModuleBuilderHandle mb = MONO_HANDLE_CAST (MonoReflectionModuleBuilder, obj); MonoDynamicImage *dynamic_image = MONO_HANDLE_GETVAL (mb, dynamic_image); MonoArrayHandle cattrs = MONO_HANDLE_NEW_GET (MonoArray, mb, cattrs); cinfo = mono_custom_attrs_from_builders_handle (NULL, &dynamic_image->image, cattrs); - } else if (strcmp ("ConstructorBuilder", klass_name) == 0) { + } else if (strcmp ("RuntimeConstructorBuilder", klass_name) == 0) { mono_error_set_not_supported (error, ""); goto leave; - } else if (strcmp ("MethodBuilder", klass_name) == 0) { + } else if (strcmp ("RuntimeMethodBuilder", klass_name) == 0) { MonoReflectionMethodBuilderHandle mb = MONO_HANDLE_CAST (MonoReflectionMethodBuilder, obj); MonoMethod *mhandle = MONO_HANDLE_GETVAL (mb, mhandle); MonoArrayHandle cattrs = MONO_HANDLE_NEW_GET (MonoArray, mb, cattrs); cinfo = mono_custom_attrs_from_builders_handle (NULL, m_class_get_image (mhandle->klass), cattrs); - } else if (strcmp ("FieldBuilder", klass_name) == 0) { + } else if (strcmp ("RuntimeFieldBuilder", klass_name) == 0) { MonoReflectionFieldBuilderHandle fb = MONO_HANDLE_CAST (MonoReflectionFieldBuilder, obj); MonoReflectionTypeBuilderHandle tb = MONO_HANDLE_CAST (MonoReflectionTypeBuilder, MONO_HANDLE_NEW_GET (MonoReflectionType, fb, typeb)); MonoReflectionModuleBuilderHandle mb = MONO_HANDLE_NEW_GET (MonoReflectionModuleBuilder, tb, module); diff --git a/src/mono/mono/metadata/dynamic-image.c b/src/mono/mono/metadata/dynamic-image.c index 8ada324045597..16b82be23ffe3 100644 --- a/src/mono/mono/metadata/dynamic-image.c +++ b/src/mono/mono/metadata/dynamic-image.c @@ -148,7 +148,7 @@ mono_dynamic_image_register_token (MonoDynamicImage *assembly, guint32 token, Mo MONO_REQ_GC_UNSAFE_MODE; g_assert (!MONO_HANDLE_IS_NULL (obj)); - g_assert (strcmp (m_class_get_name (mono_handle_class (obj)), "EnumBuilder")); + g_assert (strcmp (m_class_get_name (mono_handle_class (obj)), "RuntimeEnumBuilder")); dynamic_image_lock (assembly); MonoObject *prev = (MonoObject *)mono_g_hash_table_lookup (assembly->tokens, GUINT_TO_POINTER (token)); if (prev) { diff --git a/src/mono/mono/metadata/object-internals.h b/src/mono/mono/metadata/object-internals.h index 119d54ffd800c..6357b3e1fdd00 100644 --- a/src/mono/mono/metadata/object-internals.h +++ b/src/mono/mono/metadata/object-internals.h @@ -1059,7 +1059,7 @@ typedef struct { MonoArray *param_modopt; } MonoReflectionCtorBuilder; -/* Safely access System.Reflection.Emit.ConstructorBuilder from native code */ +/* Safely access System.Reflection.Emit.RuntimeConstructorBuilder from native code */ TYPED_HANDLE_DECL (MonoReflectionCtorBuilder); typedef struct { @@ -1092,7 +1092,7 @@ typedef struct { MonoArray *param_modopt; } MonoReflectionMethodBuilder; -/* Safely access System.Reflection.Emit.MethodBuilder from native code */ +/* Safely access System.Reflection.Emit.RuntimeMethodBuilder from native code */ TYPED_HANDLE_DECL (MonoReflectionMethodBuilder); typedef struct { @@ -1122,7 +1122,7 @@ typedef struct { guint32 access; } MonoReflectionAssemblyBuilder; -/* Safely access System.Reflection.Emit.AssemblyBuilder from native code */ +/* Safely access System.Reflection.Emit.RuntimeAssemblyBuilder from native code */ TYPED_HANDLE_DECL (MonoReflectionAssemblyBuilder); typedef struct { @@ -1141,7 +1141,7 @@ typedef struct { MonoArray *modopt; } MonoReflectionFieldBuilder; -/* Safely access System.Reflection.Emit.FieldBuilder from native code */ +/* Safely access System.Reflection.Emit.RuntimeFieldBuilder from native code */ TYPED_HANDLE_DECL (MonoReflectionFieldBuilder); typedef struct { @@ -1192,7 +1192,7 @@ typedef struct { MonoArray *table_indexes; } MonoReflectionModuleBuilder; -/* Safely acess System.Reflection.Emit.ModuleBuilder from native code */ +/* Safely acess System.Reflection.Emit.RuntimeModuleBuilder from native code */ TYPED_HANDLE_DECL (MonoReflectionModuleBuilder); typedef enum { @@ -1258,7 +1258,7 @@ typedef struct { guint32 attrs; } MonoReflectionGenericParam; -/* Safely access System.Reflection.Emit.GenericTypeParameterBuilder from native code */ +/* Safely access System.Reflection.Emit.RuntimeGenericTypeParameterBuilder from native code */ TYPED_HANDLE_DECL (MonoReflectionGenericParam); typedef struct { @@ -1266,7 +1266,7 @@ typedef struct { MonoReflectionTypeBuilder *tb; } MonoReflectionEnumBuilder; -/* Safely access System.Reflection.Emit.EnumBuilder from native code */ +/* Safely access System.Reflection.Emit.RuntimeEnumBuilder from native code */ TYPED_HANDLE_DECL (MonoReflectionEnumBuilder); typedef struct _MonoReflectionGenericClass MonoReflectionGenericClass; diff --git a/src/mono/mono/metadata/reflection.c b/src/mono/mono/metadata/reflection.c index 487a31f4ec317..c56703d0e9aee 100644 --- a/src/mono/mono/metadata/reflection.c +++ b/src/mono/mono/metadata/reflection.c @@ -69,7 +69,7 @@ static GENERATE_GET_CLASS_WITH_CACHE (missing, "System.Reflection", "Missing"); static GENERATE_GET_CLASS_WITH_CACHE (method_body, "System.Reflection", "RuntimeMethodBody"); static GENERATE_GET_CLASS_WITH_CACHE (local_variable_info, "System.Reflection", "RuntimeLocalVariableInfo"); static GENERATE_GET_CLASS_WITH_CACHE (exception_handling_clause, "System.Reflection", "RuntimeExceptionHandlingClause"); -static GENERATE_GET_CLASS_WITH_CACHE (type_builder, "System.Reflection.Emit", "TypeBuilder"); +static GENERATE_GET_CLASS_WITH_CACHE (type_builder, "System.Reflection.Emit", "RuntimeTypeBuilder"); static GENERATE_GET_CLASS_WITH_CACHE (dbnull, "System", "DBNull"); @@ -2493,17 +2493,17 @@ mono_reflection_get_token_checked (MonoObjectHandle obj, MonoError *error) MonoClass *klass = mono_handle_class (obj); const char *klass_name = m_class_get_name (klass); - if (strcmp (klass_name, "MethodBuilder") == 0) { + if (strcmp (klass_name, "RuntimeMethodBuilder") == 0) { MonoReflectionMethodBuilderHandle mb = MONO_HANDLE_CAST (MonoReflectionMethodBuilder, obj); token = MONO_HANDLE_GETVAL (mb, table_idx) | MONO_TOKEN_METHOD_DEF; - } else if (strcmp (klass_name, "ConstructorBuilder") == 0) { + } else if (strcmp (klass_name, "RuntimeConstructorBuilder") == 0) { MonoReflectionCtorBuilderHandle mb = MONO_HANDLE_CAST (MonoReflectionCtorBuilder, obj); token = MONO_HANDLE_GETVAL (mb, table_idx) | MONO_TOKEN_METHOD_DEF; - } else if (strcmp (klass_name, "FieldBuilder") == 0) { + } else if (strcmp (klass_name, "RuntimeFieldBuilder") == 0) { g_assert_not_reached (); - } else if (strcmp (klass_name, "TypeBuilder") == 0) { + } else if (strcmp (klass_name, "RuntimeTypeBuilder") == 0) { MonoReflectionTypeBuilderHandle tb = MONO_HANDLE_CAST (MonoReflectionTypeBuilder, obj); token = MONO_HANDLE_GETVAL (tb, table_idx) | MONO_TOKEN_TYPE_DEF; } else if (strcmp (klass_name, "RuntimeType") == 0) { @@ -2551,7 +2551,7 @@ mono_reflection_get_token_checked (MonoObjectHandle obj, MonoError *error) MonoMethod *method = MONO_HANDLE_GETVAL (MONO_HANDLE_CAST (MonoReflectionMethod, member_impl), method); token = mono_method_get_param_token (method, position); - } else if (strcmp (klass_name, "RuntimeModule") == 0 || strcmp (klass_name, "ModuleBuilder") == 0) { + } else if (strcmp (klass_name, "RuntimeModule") == 0 || strcmp (klass_name, "RuntimeModuleBuilder") == 0) { MonoReflectionModuleHandle m = MONO_HANDLE_CAST (MonoReflectionModule, obj); token = MONO_HANDLE_GETVAL (m, token); @@ -2713,7 +2713,7 @@ MonoReflectionMethodHandle ves_icall_RuntimeMethodInfo_MakeGenericMethod_impl (MonoReflectionMethodHandle rmethod, MonoArrayHandle types, MonoError *error) { error_init (error); - g_assert (0 != strcmp (m_class_get_name (mono_handle_class (rmethod)), "MethodBuilder")); + g_assert (0 != strcmp (m_class_get_name (mono_handle_class (rmethod)), "RuntimeMethodBuilder")); MonoMethod *method = MONO_HANDLE_GETVAL (rmethod, method); MonoMethod *imethod = reflection_bind_generic_method_parameters (method, types, error); @@ -3185,7 +3185,7 @@ mono_reflection_call_is_assignable_to (MonoClass *klass, MonoClass *oklass, Mono * need a TypeBuilder so use mono_class_get_ref_info (klass). */ g_assert (mono_class_has_ref_info (klass)); - g_assert (!strcmp (m_class_get_name (mono_object_class (&mono_class_get_ref_info_raw (klass)->type.object)), "TypeBuilder")); /* FIXME use handles */ + g_assert (!strcmp (m_class_get_name (mono_object_class (&mono_class_get_ref_info_raw (klass)->type.object)), "RuntimeTypeBuilder")); /* FIXME use handles */ params [0] = mono_type_get_object_checked (m_class_get_byval_arg (oklass), error); return_val_if_nok (error, FALSE); diff --git a/src/mono/mono/metadata/sre.c b/src/mono/mono/metadata/sre.c index 36a58f012a6e9..3eb4212905811 100644 --- a/src/mono/mono/metadata/sre.c +++ b/src/mono/mono/metadata/sre.c @@ -66,7 +66,7 @@ dyn_methods_unlock (void) static GENERATE_GET_CLASS_WITH_CACHE (marshal_as_attribute, "System.Runtime.InteropServices", "MarshalAsAttribute"); #ifndef DISABLE_REFLECTION_EMIT -static GENERATE_GET_CLASS_WITH_CACHE (module_builder, "System.Reflection.Emit", "ModuleBuilder"); +static GENERATE_GET_CLASS_WITH_CACHE (module_builder, "System.Reflection.Emit", "RuntimeModuleBuilder"); #endif static char* string_to_utf8_image_raw (MonoImage *image, MonoString *s, MonoError *error); @@ -1022,7 +1022,7 @@ mono_image_create_method_token (MonoDynamicImage *assembly, MonoObjectHandle obj g_assert (!MONO_HANDLE_IS_NULL (opt_param_types) && (mono_method_signature_internal (method)->sentinelpos >= 0)); token = create_method_token (assembly, method, opt_param_types, error); goto_if_nok (error, fail); - } else if (strcmp (klass->name, "MethodBuilder") == 0) { + } else if (strcmp (klass->name, "RuntimeMethodBuilder") == 0) { g_assert_not_reached (); } else { g_error ("requested method token for %s\n", klass->name); @@ -1473,37 +1473,37 @@ is_sre_generic_instance (MonoClass *klass) static gboolean is_sre_type_builder (MonoClass *klass) { - check_corlib_type_cached (klass, "System.Reflection.Emit", "TypeBuilder"); + check_corlib_type_cached (klass, "System.Reflection.Emit", "RuntimeTypeBuilder"); } static gboolean is_sre_method_builder (MonoClass *klass) { - check_corlib_type_cached (klass, "System.Reflection.Emit", "MethodBuilder"); + check_corlib_type_cached (klass, "System.Reflection.Emit", "RuntimeMethodBuilder"); } gboolean mono_is_sre_ctor_builder (MonoClass *klass) { - check_corlib_type_cached (klass, "System.Reflection.Emit", "ConstructorBuilder"); + check_corlib_type_cached (klass, "System.Reflection.Emit", "RuntimeConstructorBuilder"); } static gboolean is_sre_field_builder (MonoClass *klass) { - check_corlib_type_cached (klass, "System.Reflection.Emit", "FieldBuilder"); + check_corlib_type_cached (klass, "System.Reflection.Emit", "RuntimeFieldBuilder"); } static gboolean is_sre_gparam_builder (MonoClass *klass) { - check_corlib_type_cached (klass, "System.Reflection.Emit", "GenericTypeParameterBuilder"); + check_corlib_type_cached (klass, "System.Reflection.Emit", "RuntimeGenericTypeParameterBuilder"); } static gboolean is_sre_enum_builder (MonoClass *klass) { - check_corlib_type_cached (klass, "System.Reflection.Emit", "EnumBuilder"); + check_corlib_type_cached (klass, "System.Reflection.Emit", "RuntimeEnumBuilder"); } gboolean @@ -1872,7 +1872,7 @@ get_prop_name_and_type (MonoObject *prop, char **name, MonoType **type, MonoErro { error_init (error); MonoClass *klass = mono_object_class (prop); - if (strcmp (klass->name, "PropertyBuilder") == 0) { + if (strcmp (klass->name, "RuntimePropertyBuilder") == 0) { MonoReflectionPropertyBuilder *pb = (MonoReflectionPropertyBuilder *)prop; *name = mono_string_to_utf8_checked_internal (pb->name, error); return_if_nok (error); @@ -1892,7 +1892,7 @@ get_field_name_and_type (MonoObject *field, char **name, MonoType **type, MonoEr { error_init (error); MonoClass *klass = mono_object_class (field); - if (strcmp (klass->name, "FieldBuilder") == 0) { + if (strcmp (klass->name, "RuntimeFieldBuilder") == 0) { MonoReflectionFieldBuilder *fb = (MonoReflectionFieldBuilder *)field; *name = mono_string_to_utf8_checked_internal (fb->name, error); return_if_nok (error); @@ -3413,7 +3413,7 @@ mono_reflection_get_dynamic_overrides (MonoClass *klass, MonoMethod ***overrides return; tb = mono_class_get_ref_info_raw (klass); /* FIXME use handles */ - g_assert (strcmp (mono_object_class (tb)->name, "TypeBuilder") == 0); + g_assert (strcmp (mono_object_class (tb)->name, "RuntimeTypeBuilder") == 0); onum = 0; if (tb->methods) { @@ -4194,7 +4194,7 @@ mono_reflection_resolve_object (MonoImage *image, MonoObject *obj, MonoClass **h } *handle_class = mono_defaults.fieldhandle_class; g_assert (result); - } else if (strcmp (oklass->name, "TypeBuilder") == 0) { + } else if (strcmp (oklass->name, "RuntimeTypeBuilder") == 0) { MonoReflectionTypeBuilderHandle tb = MONO_HANDLE_NEW (MonoReflectionTypeBuilder, (MonoReflectionTypeBuilder*)obj); MonoType *type = mono_reflection_type_get_handle (&MONO_HANDLE_RAW (tb)->type, error); goto_if_nok (error, return_null); From ceb72307397341541b2917037990478995ad3b87 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Wed, 28 Dec 2022 19:00:34 -0800 Subject: [PATCH 27/36] Check ModuleBuilder from generic arguments --- .../src/Resources/Strings.resx | 58 +++++++++---------- .../src/System/Reflection/Emit/TypeBuilder.cs | 39 +++++++++++++ .../Reflection/Emit/AssemblyBuilder.Mono.cs | 2 - 3 files changed, 68 insertions(+), 31 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx b/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx index f9c3ff8b7e8f3..96b4e8a0be101 100644 --- a/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx +++ b/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx @@ -1,17 +1,17 @@  - @@ -1328,7 +1328,7 @@ Type must be a runtime Type object. - 'type' must contain a TypeBuilder as a generic argument. + 'type' must be or must contain a TypeBuilder as a generic argument. Type passed in must be derived from System.Attribute or System.Attribute itself. @@ -3986,4 +3986,4 @@ The value may not contain directory separator characters. - + \ No newline at end of file diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index f62199ddacdd2..6b955fe595e71 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -162,7 +162,20 @@ public static ConstructorInfo GetConstructor(Type type, ConstructorInfo construc { Module module = type.Module; if (module is not ModuleBuilder moduleBuilder) + { + if (type.IsGenericType) + { + foreach (Type t in type.GetGenericArguments()) + { + if (t.Module is ModuleBuilder mb) + { + return mb.GetConstructor(type, constructor); + } + } + } + throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); + } return moduleBuilder.GetConstructor(type, constructor); } @@ -171,7 +184,20 @@ public static FieldInfo GetField(Type type, FieldInfo field) { Module module = type.Module; if (module is not ModuleBuilder moduleBuilder) + { + if (type.IsGenericType) + { + foreach (Type t in type.GetGenericArguments()) + { + if (t.Module is ModuleBuilder mb) + { + return mb.GetField(type, field); + } + } + } + throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); + } return moduleBuilder.GetField(type, field); } @@ -180,7 +206,20 @@ public static MethodInfo GetMethod(Type type, MethodInfo method) { Module module = type.Module; if (module is not ModuleBuilder moduleBuilder) + { + if (type.IsGenericType) + { + foreach (Type t in type.GetGenericArguments()) + { + if (t.Module is ModuleBuilder mb) + { + return mb.GetMethod(type, method); + } + } + } + throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); + } return moduleBuilder.GetMethod(type, method); } diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs index 20c6f5963fa7e..8d020c891f016 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs @@ -203,7 +203,6 @@ internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder // #region Sync with RuntimeAssembly.cs and ReflectionAssembly in object-internals.h internal IntPtr _mono_assembly; -//#pragma warning disable CS0169, CA1823 // The field 'RuntimeAssemblyBuilder.dynamic_assembly' is never used private LoaderAllocator? m_keepalive; private UIntPtr dynamic_assembly; /* GC-tracked */ @@ -214,7 +213,6 @@ internal sealed partial class RuntimeAssemblyBuilder : AssemblyBuilder private string? culture; private byte[]? public_key_token; private Module[]? loaded_modules; -//#pragma warning restore CS0169, CA1823 // The field 'RuntimeAssemblyBuilder.loaded_modules' is never used private uint access; #endregion From 9de878320d41e1b9d131ae69837d5061f4a1e5ce Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Wed, 28 Dec 2022 19:02:47 -0800 Subject: [PATCH 28/36] Update src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs Co-authored-by: Jan Kotas --- .../src/System/Reflection/Emit/TypeBuilder.Mono.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs index d59e8c67a47ab..0ee01f72096bb 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs @@ -773,7 +773,7 @@ public override TypeInfo CreateTypeInfo() bool is_concrete = !IsAbstract; for (int i = 0; i < num_methods; ++i) { - RuntimeMethodBuilder mb = (methods[i]); + RuntimeMethodBuilder mb = methods[i]; if (is_concrete && mb.IsAbstract) throw new InvalidOperationException("Type is concrete but has abstract method " + mb); mb.check_override(); From 9f074784573c864e8815c20bc021b9d28cb67b1c Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Thu, 29 Dec 2022 13:35:04 -0800 Subject: [PATCH 29/36] Keep runtime old behavior for TypeBuilder static methods --- .../src/System/Reflection/Emit/TypeBuilder.cs | 100 ++++----- .../src/System/Reflection/Emit/TypeBuilder.cs | 68 +----- .../Reflection/Emit/TypeBuilder.Mono.cs | 205 +++++++++--------- 3 files changed, 156 insertions(+), 217 deletions(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index dd3b0dcb2e478..34b30a5e90959 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -10,57 +10,12 @@ namespace System.Reflection.Emit { - internal sealed partial class RuntimeTypeBuilder : TypeBuilder + public abstract partial class TypeBuilder { - public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) - { - if (typeInfo == null) return false; - return IsAssignableFrom(typeInfo.AsType()); - } - - #region Declarations - private sealed class CustAttr - { - private readonly ConstructorInfo? m_con; - private readonly byte[]? m_binaryAttribute; - private readonly CustomAttributeBuilder? m_customBuilder; - - public CustAttr(ConstructorInfo con, byte[] binaryAttribute) - { - ArgumentNullException.ThrowIfNull(con); - ArgumentNullException.ThrowIfNull(binaryAttribute); - - m_con = con; - m_binaryAttribute = binaryAttribute; - } - - public CustAttr(CustomAttributeBuilder customBuilder) - { - ArgumentNullException.ThrowIfNull(customBuilder); - - m_customBuilder = customBuilder; - } - - public void Bake(RuntimeModuleBuilder module, int token) - { - if (m_customBuilder == null) - { - Debug.Assert(m_con != null); - DefineCustomAttribute(module, token, module.GetConstructorToken(m_con), - m_binaryAttribute); - } - else - { - m_customBuilder.CreateCustomAttribute(module, token); - } - } - } - #endregion - #region Public Static Methods [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", Justification = "MakeGenericType is only called on a TypeBuilder which is not subject to trimming")] - public static new MethodInfo GetMethod(Type type, MethodInfo method) + public static MethodInfo GetMethod(Type type, MethodInfo method) { if (type is not TypeBuilder && type is not TypeBuilderInstantiation) throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); @@ -95,7 +50,7 @@ public void Bake(RuntimeModuleBuilder module, int token) [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", Justification = "MakeGenericType is only called on a TypeBuilder which is not subject to trimming")] - public static new ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) + public static ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) { if (type is not TypeBuilder && type is not TypeBuilderInstantiation) throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); @@ -118,7 +73,7 @@ public void Bake(RuntimeModuleBuilder module, int token) [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", Justification = "MakeGenericType is only called on a TypeBuilder which is not subject to trimming")] - public static new FieldInfo GetField(Type type, FieldInfo field) + public static FieldInfo GetField(Type type, FieldInfo field) { if (type is not TypeBuilder and not TypeBuilderInstantiation) throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); @@ -139,6 +94,53 @@ public void Bake(RuntimeModuleBuilder module, int token) return FieldOnTypeBuilderInstantiation.GetField(field, typeBuilderInstantiation); } #endregion + } + internal sealed partial class RuntimeTypeBuilder : TypeBuilder + { + public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) + { + if (typeInfo == null) return false; + return IsAssignableFrom(typeInfo.AsType()); + } + + #region Declarations + private sealed class CustAttr + { + private readonly ConstructorInfo? m_con; + private readonly byte[]? m_binaryAttribute; + private readonly CustomAttributeBuilder? m_customBuilder; + + public CustAttr(ConstructorInfo con, byte[] binaryAttribute) + { + ArgumentNullException.ThrowIfNull(con); + ArgumentNullException.ThrowIfNull(binaryAttribute); + + m_con = con; + m_binaryAttribute = binaryAttribute; + } + + public CustAttr(CustomAttributeBuilder customBuilder) + { + ArgumentNullException.ThrowIfNull(customBuilder); + + m_customBuilder = customBuilder; + } + + public void Bake(RuntimeModuleBuilder module, int token) + { + if (m_customBuilder == null) + { + Debug.Assert(m_con != null); + DefineCustomAttribute(module, token, module.GetConstructorToken(m_con), + m_binaryAttribute); + } + else + { + m_customBuilder.CreateCustomAttribute(module, token); + } + } + } + #endregion #region Private Static FCalls [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "TypeBuilder_SetParentType")] diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index 6b955fe595e71..74fecbaa2fb1d 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -6,7 +6,7 @@ namespace System.Reflection.Emit { - public abstract class TypeBuilder : TypeInfo + public abstract partial class TypeBuilder : TypeInfo { protected TypeBuilder() { @@ -158,72 +158,6 @@ public virtual ConstructorBuilder DefineTypeInitializer() public virtual FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) => DefineUninitializedData(name, size, attributes); - public static ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) - { - Module module = type.Module; - if (module is not ModuleBuilder moduleBuilder) - { - if (type.IsGenericType) - { - foreach (Type t in type.GetGenericArguments()) - { - if (t.Module is ModuleBuilder mb) - { - return mb.GetConstructor(type, constructor); - } - } - } - - throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); - } - - return moduleBuilder.GetConstructor(type, constructor); - } - - public static FieldInfo GetField(Type type, FieldInfo field) - { - Module module = type.Module; - if (module is not ModuleBuilder moduleBuilder) - { - if (type.IsGenericType) - { - foreach (Type t in type.GetGenericArguments()) - { - if (t.Module is ModuleBuilder mb) - { - return mb.GetField(type, field); - } - } - } - - throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); - } - - return moduleBuilder.GetField(type, field); - } - - public static MethodInfo GetMethod(Type type, MethodInfo method) - { - Module module = type.Module; - if (module is not ModuleBuilder moduleBuilder) - { - if (type.IsGenericType) - { - foreach (Type t in type.GetGenericArguments()) - { - if (t.Module is ModuleBuilder mb) - { - return mb.GetMethod(type, method); - } - } - } - - throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); - } - - return moduleBuilder.GetMethod(type, method); - } - public virtual bool IsCreated() => IsCreated(); diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs index d59e8c67a47ab..18e26e6244354 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs @@ -44,6 +44,110 @@ namespace System.Reflection.Emit { + public abstract partial class TypeBuilder + { + [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2070:UnrecognizedReflectionPattern", + Justification = "Linker thinks Type.GetConstructor(ConstructorInfo) is one of the public APIs because it doesn't analyze method signatures. We already have ConstructorInfo.")] + [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", + Justification = "Type.MakeGenericType is used to create a typical instantiation")] + public static ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) + { + if (!IsValidGetMethodType(type)) + throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); + + if (type is TypeBuilder && type.ContainsGenericParameters) + type = type.MakeGenericType(type.GetGenericArguments()); + + if (!constructor.DeclaringType!.IsGenericTypeDefinition) + throw new ArgumentException(SR.Argument_ConstructorNeedGenericDeclaringType, nameof(constructor)); + + if (constructor.DeclaringType != type.GetGenericTypeDefinition()) + throw new ArgumentException(SR.Argument_InvalidConstructorDeclaringType, nameof(type)); + + ConstructorInfo res = type.GetConstructor(constructor); + if (res == null) + throw new ArgumentException("constructor not found"); + + return res; + } + + private static bool IsValidGetMethodType(Type type) + { + if (type == null) + return false; + + if (type is TypeBuilder || type is TypeBuilderInstantiation) + return true; + /*GetMethod() must work with TypeBuilders after CreateType() was called.*/ + if (type.Module is ModuleBuilder) + return true; + if (type.IsGenericParameter) + return false; + + Type[] inst = type.GetGenericArguments(); + if (inst == null) + return false; + for (int i = 0; i < inst.Length; ++i) + { + if (IsValidGetMethodType(inst[i])) + return true; + } + return false; + } + + [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", + Justification = "Type.MakeGenericType is used to create a typical instantiation")] + public static MethodInfo GetMethod(Type type, MethodInfo method) + { + if (!IsValidGetMethodType(type)) + throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); + + if (type is TypeBuilder && type.ContainsGenericParameters) + type = type.MakeGenericType(type.GetGenericArguments()); + + if (method.IsGenericMethod && !method.IsGenericMethodDefinition) + throw new ArgumentException(SR.Argument_NeedGenericMethodDefinition, nameof(method)); + + if (!method.DeclaringType!.IsGenericTypeDefinition) + throw new ArgumentException(SR.Argument_MethodNeedGenericDeclaringType, nameof(method)); + + if (method.DeclaringType != type.GetGenericTypeDefinition()) + throw new ArgumentException(SR.Argument_InvalidMethodDeclaringType, nameof(type)); + + MethodInfo res = type.GetMethod(method); + if (res == null) + throw new ArgumentException(string.Format("method {0} not found in type {1}", method.Name, type)); + + return res; + } + + [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", + Justification = "Type.MakeGenericType is used to create a typical instantiation")] + public static FieldInfo GetField(Type type, FieldInfo field) + { + if (!IsValidGetMethodType(type)) + throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); + + if (type is TypeBuilder && type.ContainsGenericParameters) + type = type.MakeGenericType(type.GetGenericArguments()); + + if (!field.DeclaringType!.IsGenericTypeDefinition) + throw new ArgumentException(SR.Argument_FieldNeedGenericDeclaringType, nameof(field)); + + if (field.DeclaringType != type.GetGenericTypeDefinition()) + throw new ArgumentException(SR.Argument_InvalidFieldDeclaringType, nameof(type)); + + if (field is FieldOnTypeBuilderInst) + throw new ArgumentException("The specified field must be declared on a generic type definition.", nameof(field)); + + FieldInfo res = type.GetField(field); + if (res == null) + throw new System.Exception("field not found"); + else + return res; + } + } + [StructLayout(LayoutKind.Sequential)] internal sealed partial class RuntimeTypeBuilder : TypeBuilder { @@ -1721,107 +1825,6 @@ public override GenericTypeParameterBuilder[] DefineGenericParameters(params str return generic_params; } - [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2070:UnrecognizedReflectionPattern", - Justification = "Linker thinks Type.GetConstructor(ConstructorInfo) is one of the public APIs because it doesn't analyze method signatures. We already have ConstructorInfo.")] - [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", - Justification = "Type.MakeGenericType is used to create a typical instantiation")] - public static new ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) - { - if (!IsValidGetMethodType(type)) - throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); - - if (type is TypeBuilder && type.ContainsGenericParameters) - type = type.MakeGenericType(type.GetGenericArguments()); - - if (!constructor.DeclaringType!.IsGenericTypeDefinition) - throw new ArgumentException(SR.Argument_ConstructorNeedGenericDeclaringType, nameof(constructor)); - - if (constructor.DeclaringType != type.GetGenericTypeDefinition()) - throw new ArgumentException(SR.Argument_InvalidConstructorDeclaringType, nameof(type)); - - ConstructorInfo res = type.GetConstructor(constructor); - if (res == null) - throw new ArgumentException("constructor not found"); - - return res; - } - - private static bool IsValidGetMethodType(Type type) - { - if (type == null) - return false; - - if (type is TypeBuilder || type is TypeBuilderInstantiation) - return true; - /*GetMethod() must work with TypeBuilders after CreateType() was called.*/ - if (type.Module is ModuleBuilder) - return true; - if (type.IsGenericParameter) - return false; - - Type[] inst = type.GetGenericArguments(); - if (inst == null) - return false; - for (int i = 0; i < inst.Length; ++i) - { - if (IsValidGetMethodType(inst[i])) - return true; - } - return false; - } - - [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", - Justification = "Type.MakeGenericType is used to create a typical instantiation")] - public static new MethodInfo GetMethod(Type type, MethodInfo method) - { - if (!IsValidGetMethodType(type)) - throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); - - if (type is TypeBuilder && type.ContainsGenericParameters) - type = type.MakeGenericType(type.GetGenericArguments()); - - if (method.IsGenericMethod && !method.IsGenericMethodDefinition) - throw new ArgumentException(SR.Argument_NeedGenericMethodDefinition, nameof(method)); - - if (!method.DeclaringType!.IsGenericTypeDefinition) - throw new ArgumentException(SR.Argument_MethodNeedGenericDeclaringType, nameof(method)); - - if (method.DeclaringType != type.GetGenericTypeDefinition()) - throw new ArgumentException(SR.Argument_InvalidMethodDeclaringType, nameof(type)); - - MethodInfo res = type.GetMethod(method); - if (res == null) - throw new ArgumentException(string.Format("method {0} not found in type {1}", method.Name, type)); - - return res; - } - - [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2055:UnrecognizedReflectionPattern", - Justification = "Type.MakeGenericType is used to create a typical instantiation")] - public static new FieldInfo GetField(Type type, FieldInfo field) - { - if (!IsValidGetMethodType(type)) - throw new ArgumentException(SR.Argument_MustBeTypeBuilder, nameof(type)); - - if (type is TypeBuilder && type.ContainsGenericParameters) - type = type.MakeGenericType(type.GetGenericArguments()); - - if (!field.DeclaringType!.IsGenericTypeDefinition) - throw new ArgumentException(SR.Argument_FieldNeedGenericDeclaringType, nameof(field)); - - if (field.DeclaringType != type.GetGenericTypeDefinition()) - throw new ArgumentException(SR.Argument_InvalidFieldDeclaringType, nameof(type)); - - if (field is FieldOnTypeBuilderInst) - throw new ArgumentException("The specified field must be declared on a generic type definition.", nameof(field)); - - FieldInfo res = type.GetField(field); - if (res == null) - throw new System.Exception("field not found"); - else - return res; - } - internal override bool IsUserType { get From 6c1e9ed9e49faf0e66db08604ba2361ebf60a577 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Tue, 3 Jan 2023 09:40:25 -0800 Subject: [PATCH 30/36] Remove/revert some unwanted changes --- .../src/System/Reflection/Emit/EnumBuilder.cs | 2 +- .../System/Reflection/Emit/EventBuilder.cs | 11 ++-- .../System/Reflection/Emit/FieldBuilder.cs | 4 +- .../src/System/Reflection/Emit/ILGenerator.cs | 6 +-- .../System/Reflection/Emit/MethodBuilder.cs | 14 ++--- .../System/Reflection/Emit/ModuleBuilder.cs | 25 +++------ .../System/Reflection/Emit/SignatureHelper.cs | 11 ++-- .../src/System/Reflection/Emit/TypeBuilder.cs | 11 ++-- .../src/CompatibilitySuppressions.xml | 6 --- .../src/Resources/Strings.resx | 54 +++++++++---------- .../System/Reflection/Emit/AssemblyBuilder.cs | 3 -- .../Reflection/Emit/ConstructorBuilder.cs | 2 - .../Emit/GenericTypeParameterBuilder.cs | 3 -- .../System/Reflection/Emit/ModuleBuilder.cs | 4 -- .../ref/System.Reflection.Emit.cs | 4 -- .../Reflection/Emit/ModuleBuilder.Mono.cs | 9 ---- 16 files changed, 61 insertions(+), 108 deletions(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs index e0422b7039389..272f1910b052a 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs @@ -34,7 +34,7 @@ public override FieldBuilder DefineLiteral(string literalName, object? literalVa literalName, this, FieldAttributes.Public | FieldAttributes.Static | FieldAttributes.Literal); - ((RuntimeFieldBuilder)fieldBuilder).SetConstant(literalValue); + fieldBuilder.SetConstant(literalValue); return fieldBuilder; } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs index f1c2a658c46f0..8a5bf8db44efc 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs @@ -22,14 +22,13 @@ namespace System.Reflection.Emit // internal sealed class RuntimeEventBuilder : EventBuilder { - // Constructs a EventBuilder. + // Constructs a RuntimeEventBuilder. // internal RuntimeEventBuilder( - RuntimeModuleBuilder mod, // the module containing this EventBuilder - string name, // Event name - EventAttributes attr, // event attribute such as Public, Private, and Protected defined above - // int eventType, // event type - RuntimeTypeBuilder type, // containing type + RuntimeModuleBuilder mod, // the module containing this EventBuilder + string name, // Event name + EventAttributes attr, // event attribute such as Public, Private, and Protected defined above + RuntimeTypeBuilder type, // containing type int evToken) { m_name = name; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs index 01d040f69901b..51bc0548e111f 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs @@ -159,10 +159,10 @@ public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttrib ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); - m_typeBuilder.ThrowIfCreated(); - RuntimeModuleBuilder moduleBuilder = (RuntimeModuleBuilder)m_typeBuilder.Module; + m_typeBuilder.ThrowIfCreated(); + RuntimeTypeBuilder.DefineCustomAttribute(moduleBuilder, m_fieldTok, moduleBuilder.GetConstructorToken(con), binaryAttribute); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs index 8e00a42006dab..c1918e7471385 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs @@ -1297,8 +1297,7 @@ public virtual LocalBuilder DeclareLocal(Type localType, bool pinned) // Declare a local of type "local". The current active lexical scope // will be the scope that local will live. - RuntimeMethodBuilder? methodBuilder = m_methodBuilder as RuntimeMethodBuilder; - if (methodBuilder == null) + if (m_methodBuilder is not RuntimeMethodBuilder methodBuilder) throw new NotSupportedException(); if (methodBuilder.IsTypeCreated()) @@ -1327,8 +1326,7 @@ public virtual void UsingNamespace(string usingNamespace) ArgumentException.ThrowIfNullOrEmpty(usingNamespace); - RuntimeMethodBuilder? methodBuilder = m_methodBuilder as RuntimeMethodBuilder; - if (methodBuilder == null) + if (m_methodBuilder is not RuntimeMethodBuilder methodBuilder) throw new NotSupportedException(); int index = methodBuilder.GetILGenerator().m_ScopeTree.GetCurrentActiveScopeIndex(); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs index 3311fbc8715b7..56de8e7fa89fd 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs @@ -146,7 +146,7 @@ internal void CreateMethodBodyHelper(ILGenerator il) int[] type; int numCatch; int start, end; - RuntimeModuleBuilder dynMod = (RuntimeModuleBuilder)m_module; + RuntimeModuleBuilder dynMod = m_module; m_containingType.ThrowIfCreated(); @@ -360,21 +360,21 @@ internal RuntimeModuleBuilder GetModuleBuilder() #region Object Overrides public override bool Equals(object? obj) { - if (!(obj is RuntimeMethodBuilder)) + if (obj is not RuntimeMethodBuilder rmBuilder) { return false; } - if (!m_strName.Equals(((RuntimeMethodBuilder)obj).m_strName)) + if (!m_strName.Equals(rmBuilder.m_strName)) { return false; } - if (m_iAttributes != (((RuntimeMethodBuilder)obj).m_iAttributes)) + if (m_iAttributes != rmBuilder.m_iAttributes) { return false; } - SignatureHelper thatSig = ((RuntimeMethodBuilder)obj).GetMethodSignature(); + SignatureHelper thatSig = rmBuilder.GetMethodSignature(); if (thatSig.Equals(GetMethodSignature())) { return true; @@ -727,7 +727,7 @@ public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttrib ThrowIfGeneric(); RuntimeTypeBuilder.DefineCustomAttribute(m_module, MetadataToken, - ((RuntimeModuleBuilder)m_module).GetConstructorToken(con), + m_module.GetConstructorToken(con), binaryAttribute); if (IsKnownCA(con)) @@ -740,7 +740,7 @@ public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) ThrowIfGeneric(); - customBuilder.CreateCustomAttribute((RuntimeModuleBuilder)m_module, MetadataToken); + customBuilder.CreateCustomAttribute(m_module, MetadataToken); if (IsKnownCA(customBuilder.m_con)) ParseCA(customBuilder.m_con); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index eb2367d727944..7059f71ebfff2 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -297,8 +297,7 @@ public override int GetConstructorToken(ConstructorInfo con) internal static RuntimeModule GetRuntimeModuleFromModule(Module? m) { - RuntimeModuleBuilder? mb = m as RuntimeModuleBuilder; - if (mb != null) + if (m is RuntimeModuleBuilder mb) { return mb.InternalModule; } @@ -526,10 +525,9 @@ internal Type[] GetTypesNoLock() foreach (Type builder in _typeBuilderDict.Values) { - RuntimeEnumBuilder? enumBldr = builder as RuntimeEnumBuilder; RuntimeTypeBuilder tmpTypeBldr; - if (enumBldr != null) + if (builder is RuntimeEnumBuilder enumBldr) tmpTypeBldr = enumBldr.m_typeBuilder; else tmpTypeBldr = (RuntimeTypeBuilder)builder; @@ -786,9 +784,9 @@ public override EnumBuilder DefineEnum(string name, TypeAttributes visibility, T #region Define Global Method [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public override MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, - CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes, - CallingConvention nativeCallConv, CharSet nativeCharSet) + public override MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, + MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, + Type[]? parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet) { lock (SyncRoot) { @@ -936,8 +934,7 @@ private int GetTypeTokenWorkerNoLock(Type type, bool getGenericDefinition) // no need to do anything additional other than defining the TypeRef Token RuntimeTypeBuilder? typeBuilder; - RuntimeEnumBuilder? enumBuilder = type as RuntimeEnumBuilder; - typeBuilder = enumBuilder != null ? enumBuilder.m_typeBuilder : type as RuntimeTypeBuilder; + typeBuilder = type is RuntimeEnumBuilder enumBuilder ? enumBuilder.m_typeBuilder : type as RuntimeTypeBuilder; if (typeBuilder != null) { @@ -1325,15 +1322,5 @@ public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) #endregion #endregion - - public override ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) - => RuntimeTypeBuilder.GetConstructor(type, constructor); - - public override FieldInfo GetField(Type type, FieldInfo field) - => RuntimeTypeBuilder.GetField(type, field); - - public override MethodInfo GetMethod(Type type, MethodInfo method) - => RuntimeTypeBuilder.GetMethod(type, method); - } } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs index 891575d3059b0..3f0036edcaac0 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs @@ -343,9 +343,8 @@ private void AddOneArgTypeHelperWorker(Type clsArgument, bool lastWasGenericInst foreach (Type t in args) AddOneArgTypeHelper(t); } - else if (clsArgument is RuntimeTypeBuilder) + else if (clsArgument is RuntimeTypeBuilder clsBuilder) { - RuntimeTypeBuilder clsBuilder = (RuntimeTypeBuilder)clsArgument; int tkType; if (clsBuilder.Module.Equals(m_module)) @@ -366,14 +365,14 @@ private void AddOneArgTypeHelperWorker(Type clsArgument, bool lastWasGenericInst InternalAddTypeToken(tkType, CorElementType.ELEMENT_TYPE_CLASS); } } - else if (clsArgument is RuntimeEnumBuilder) + else if (clsArgument is RuntimeEnumBuilder reBuilder) { - RuntimeTypeBuilder clsBuilder = ((RuntimeEnumBuilder)clsArgument).m_typeBuilder; + RuntimeTypeBuilder rtBuilder = reBuilder.m_typeBuilder; int tkType; - if (clsBuilder.Module.Equals(m_module)) + if (rtBuilder.Module.Equals(m_module)) { - tkType = clsBuilder.TypeToken; + tkType = rtBuilder.TypeToken; } else { diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index 34b30a5e90959..ba80ee0dc776a 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -95,6 +95,7 @@ public static FieldInfo GetField(Type type, FieldInfo field) } #endregion } + internal sealed partial class RuntimeTypeBuilder : TypeBuilder { public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) @@ -1416,8 +1417,8 @@ private ConstructorBuilder DefineDefaultConstructorNoLock(MethodAttributes attri { Type? genericTypeDefinition = m_typeParent.GetGenericTypeDefinition(); - if (genericTypeDefinition is TypeBuilder) - genericTypeDefinition = ((RuntimeTypeBuilder)genericTypeDefinition).m_bakedRuntimeType; + if (genericTypeDefinition is RuntimeTypeBuilder rtBuilder) + genericTypeDefinition = rtBuilder.m_bakedRuntimeType; if (genericTypeDefinition == null) throw new NotSupportedException(SR.NotSupported_DynamicModule); @@ -1581,6 +1582,7 @@ private FieldBuilder DefineUninitializedDataNoLock(string name, int size, FieldA #endregion #region Define Properties and Events + public override PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) @@ -1948,15 +1950,14 @@ public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttrib ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); - DefineCustomAttribute(m_module, m_tdType, ((RuntimeModuleBuilder)m_module).GetConstructorToken(con), - binaryAttribute); + DefineCustomAttribute(m_module, m_tdType, m_module.GetConstructorToken(con), binaryAttribute); } public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); - customBuilder.CreateCustomAttribute((RuntimeModuleBuilder)m_module, m_tdType); + customBuilder.CreateCustomAttribute(m_module, m_tdType); } #endregion diff --git a/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml b/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml index 8a68fcd70f1d1..af14801e8c1a4 100644 --- a/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml +++ b/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml @@ -17,12 +17,6 @@ CP0002 F:System.Resources.ResourceSet.Reader - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetConstructor(System.Type,System.Reflection.ConstructorInfo) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - CP0002 M:System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo) diff --git a/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx b/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx index 96b4e8a0be101..54bbee83be5f2 100644 --- a/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx +++ b/src/libraries/System.Private.CoreLib/src/Resources/Strings.resx @@ -1,17 +1,17 @@  - diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index f69d1024004fb..3aa860782a11c 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -1,11 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; -using System.Runtime.Loader; -using System.Threading; namespace System.Reflection.Emit { diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs index 4162f2b99119e..19ba0012c8a15 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Globalization; - namespace System.Reflection.Emit { public abstract class ConstructorBuilder : ConstructorInfo diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs index 9b157b14ef0f0..20821981df1e2 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs @@ -1,10 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using System.Text; namespace System.Reflection.Emit { diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index 27919102aa85f..30222ba82bfb1 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -95,9 +95,5 @@ public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) public abstract int GetConstructorToken(ConstructorInfo con); public abstract int GetSignatureToken(SignatureHelper sigHelper); public abstract int GetStringConstant(string str); - - public abstract ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor); - public abstract FieldInfo GetField(Type type, FieldInfo field); - public abstract MethodInfo GetMethod(Type type, MethodInfo method); } } diff --git a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs index 47059c46deacc..cfe3fbdea3a2a 100644 --- a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs +++ b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs @@ -421,15 +421,11 @@ protected ModuleBuilder() { } public override System.Type ResolveType(int metadataToken, System.Type[]? genericTypeArguments, System.Type[]? genericMethodArguments) { throw null; } public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public abstract int GetTypeToken(Type type, bool getGenericDefinition = true); public abstract int GetFieldToken(FieldInfo field); public abstract int GetConstructorToken(ConstructorInfo con); public abstract int GetSignatureToken(SignatureHelper sigHelper); public abstract int GetStringConstant(string str); - public abstract ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor); - public abstract FieldInfo GetField(Type type, FieldInfo field); - public abstract MethodInfo GetMethod(Type type, MethodInfo method); } public abstract partial class PropertyBuilder : System.Reflection.PropertyInfo { diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs index 5aa65122ddb25..04cadb401ab8c 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs @@ -928,15 +928,6 @@ public override int MetadataToken return RuntimeModule.get_MetadataToken(this); } } - - public override ConstructorInfo GetConstructor(Type type, ConstructorInfo constructor) - => RuntimeTypeBuilder.GetConstructor(type, constructor); - - public override FieldInfo GetField(Type type, FieldInfo field) - => RuntimeTypeBuilder.GetField(type, field); - - public override MethodInfo GetMethod(Type type, MethodInfo method) - => RuntimeTypeBuilder.GetMethod(type, method); } internal sealed class ModuleBuilderTokenGenerator : ITokenGenerator From a34839835aba114d97a501d5577d26143d4ae786 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Fri, 6 Jan 2023 09:26:21 -0800 Subject: [PATCH 31/36] Remove unneeded change --- src/coreclr/vm/ecalllist.h | 4 --- .../src/CompatibilitySuppressions.xml | 30 ------------------- 2 files changed, 34 deletions(-) diff --git a/src/coreclr/vm/ecalllist.h b/src/coreclr/vm/ecalllist.h index 1d28c2de12a88..9015de9e8a90a 100644 --- a/src/coreclr/vm/ecalllist.h +++ b/src/coreclr/vm/ecalllist.h @@ -280,9 +280,6 @@ FCFuncStart(gRuntimeAssemblyFuncs) FCFuncElement("GetToken", AssemblyHandle::GetToken) FCFuncEnd() -FCFuncStart(gAssemblyBuilderFuncs) -FCFuncEnd() - FCFuncStart(gAssemblyLoadContextFuncs) FCFuncElement("GetLoadedAssemblies", AppDomainNative::GetLoadedAssemblies) FCFuncElement("IsTracingEnabled", AssemblyNative::IsTracingEnabled) @@ -753,7 +750,6 @@ FCClassElement("ObjectMarshaler", "System.StubHelpers", gObjectMarshalerFuncs) #endif FCClassElement("RuntimeAssembly", "System.Reflection", gRuntimeAssemblyFuncs) -FCClassElement("RuntimeAssemblyBuilder", "System.Reflection.Emit", gAssemblyBuilderFuncs) FCClassElement("RuntimeFieldHandle", "System", gCOMFieldHandleNewFuncs) FCClassElement("RuntimeHelpers", "System.Runtime.CompilerServices", gRuntimeHelpers) FCClassElement("RuntimeMethodHandle", "System", gRuntimeMethodHandle) diff --git a/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml b/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml index af14801e8c1a4..ea509bd97682e 100644 --- a/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml +++ b/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml @@ -17,36 +17,6 @@ CP0002 F:System.Resources.ResourceSet.Reader - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetConstructorToken(System.Reflection.ConstructorInfo) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetFieldToken(System.Reflection.FieldInfo) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetSignatureToken(System.Reflection.Emit.SignatureHelper) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetStringConstant(System.String) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0002 - M:System.Reflection.Emit.ModuleBuilder.GetTypeToken(System.Type,System.Boolean) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - CP0013 M:System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String) From 24f529867c26c0c90f2c187d3cd1888cfae19963 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Thu, 19 Jan 2023 16:58:38 -0800 Subject: [PATCH 32/36] Apply latest feedback --- .../System.Private.CoreLib.csproj | 20 +++++------ .../src/System/Reflection/Emit/ILGenerator.cs | 4 +-- ...lyBuilder.cs => RuntimeAssemblyBuilder.cs} | 0 ...uilder.cs => RuntimeConstructorBuilder.cs} | 0 .../{EnumBuilder.cs => RuntimeEnumBuilder.cs} | 0 ...EventBuilder.cs => RuntimeEventBuilder.cs} | 0 ...FieldBuilder.cs => RuntimeFieldBuilder.cs} | 0 ... => RuntimeGenericTypeParameterBuilder.cs} | 0 ...thodBuilder.cs => RuntimeMethodBuilder.cs} | 0 ...duleBuilder.cs => RuntimeModuleBuilder.cs} | 4 +-- ...tyBuilder.cs => RuntimePropertyBuilder.cs} | 0 .../{TypeBuilder.cs => RuntimeTypeBuilder.cs} | 0 .../System/Reflection/Emit/ModuleBuilder.cs | 5 +-- .../ref/System.Reflection.Emit.cs | 11 +++--- .../System.Private.CoreLib.csproj | 34 ++++++++----------- ...Mono.cs => RuntimeAssemblyBuilder.Mono.cs} | 0 ...o.cs => RuntimeConstructorBuilder.Mono.cs} | 0 ...der.Mono.cs => RuntimeEnumBuilder.Mono.cs} | 0 ...er.Mono.cs => RuntimeEventBuilder.Mono.cs} | 0 ...er.Mono.cs => RuntimeFieldBuilder.Mono.cs} | 0 ... => RuntimeGenericTypeParameterBuilder.cs} | 0 ...r.Mono.cs => RuntimeMethodBuilder.Mono.cs} | 0 ...r.Mono.cs => RuntimeModuleBuilder.Mono.cs} | 4 +-- ...Mono.cs => RuntimePropertyBuilder.Mono.cs} | 0 ...der.Mono.cs => RuntimeTypeBuilder.Mono.cs} | 0 25 files changed, 40 insertions(+), 42 deletions(-) rename src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/{AssemblyBuilder.cs => RuntimeAssemblyBuilder.cs} (100%) rename src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/{ConstructorBuilder.cs => RuntimeConstructorBuilder.cs} (100%) rename src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/{EnumBuilder.cs => RuntimeEnumBuilder.cs} (100%) rename src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/{EventBuilder.cs => RuntimeEventBuilder.cs} (100%) rename src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/{FieldBuilder.cs => RuntimeFieldBuilder.cs} (100%) rename src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/{GenericTypeParameterBuilder.cs => RuntimeGenericTypeParameterBuilder.cs} (100%) rename src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/{MethodBuilder.cs => RuntimeMethodBuilder.cs} (100%) rename src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/{ModuleBuilder.cs => RuntimeModuleBuilder.cs} (99%) rename src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/{PropertyBuilder.cs => RuntimePropertyBuilder.cs} (100%) rename src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/{TypeBuilder.cs => RuntimeTypeBuilder.cs} (100%) rename src/mono/System.Private.CoreLib/src/System/Reflection/Emit/{AssemblyBuilder.Mono.cs => RuntimeAssemblyBuilder.Mono.cs} (100%) rename src/mono/System.Private.CoreLib/src/System/Reflection/Emit/{ConstructorBuilder.Mono.cs => RuntimeConstructorBuilder.Mono.cs} (100%) rename src/mono/System.Private.CoreLib/src/System/Reflection/Emit/{EnumBuilder.Mono.cs => RuntimeEnumBuilder.Mono.cs} (100%) rename src/mono/System.Private.CoreLib/src/System/Reflection/Emit/{EventBuilder.Mono.cs => RuntimeEventBuilder.Mono.cs} (100%) rename src/mono/System.Private.CoreLib/src/System/Reflection/Emit/{FieldBuilder.Mono.cs => RuntimeFieldBuilder.Mono.cs} (100%) rename src/mono/System.Private.CoreLib/src/System/Reflection/Emit/{GenericTypeParameterBuilder.cs => RuntimeGenericTypeParameterBuilder.cs} (100%) rename src/mono/System.Private.CoreLib/src/System/Reflection/Emit/{MethodBuilder.Mono.cs => RuntimeMethodBuilder.Mono.cs} (100%) rename src/mono/System.Private.CoreLib/src/System/Reflection/Emit/{ModuleBuilder.Mono.cs => RuntimeModuleBuilder.Mono.cs} (99%) rename src/mono/System.Private.CoreLib/src/System/Reflection/Emit/{PropertyBuilder.Mono.cs => RuntimePropertyBuilder.Mono.cs} (100%) rename src/mono/System.Private.CoreLib/src/System/Reflection/Emit/{TypeBuilder.Mono.cs => RuntimeTypeBuilder.Mono.cs} (100%) diff --git a/src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj b/src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj index 8e55e2178d945..7c319ae92551c 100644 --- a/src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj +++ b/src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj @@ -159,26 +159,26 @@ - - - - - - - - - + + + + + + + + + + - diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs index c1918e7471385..a72930cc934bb 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs @@ -729,9 +729,9 @@ public virtual void Emit(OpCode opcode, Type cls) // by cls. The location of cls is recorded so that the token can be // patched if necessary when persisting the module to a PE. - ModuleBuilder modBuilder = (ModuleBuilder)m_methodBuilder.Module; + RuntimeModuleBuilder modBuilder = (RuntimeModuleBuilder)m_methodBuilder.Module; bool getGenericDefinition = (opcode == OpCodes.Ldtoken && cls != null && cls.IsGenericTypeDefinition); - int tempVal = modBuilder.GetTypeToken(cls!, getGenericDefinition); + int tempVal = modBuilder.GetTypeTokenInternal(cls!, getGenericDefinition); EnsureCapacity(7); InternalEmit(opcode); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs similarity index 100% rename from src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs rename to src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeConstructorBuilder.cs similarity index 100% rename from src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs rename to src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeConstructorBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.cs similarity index 100% rename from src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs rename to src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.cs similarity index 100% rename from src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs rename to src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.cs similarity index 100% rename from src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs rename to src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeGenericTypeParameterBuilder.cs similarity index 100% rename from src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs rename to src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeGenericTypeParameterBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.cs similarity index 100% rename from src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs rename to src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.cs similarity index 99% rename from src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs rename to src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.cs index 7059f71ebfff2..b9891b272663e 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.cs @@ -898,7 +898,7 @@ public int GetTypeTokenInternal(Type type, bool getGenericDefinition = false) } } - public override int GetTypeToken(Type type, bool getGenericDefinition = true) + public override int GetTypeToken(Type type) { return GetTypeTokenInternal(type, getGenericDefinition: true); } @@ -952,7 +952,7 @@ private int GetTypeTokenWorkerNoLock(Type type, bool getGenericDefinition) return GetTypeRefNested(type, refedModule); } - internal int GetMethodToken(MethodInfo method) + public override int GetMethodToken(MethodInfo method) { lock (SyncRoot) { diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.cs similarity index 100% rename from src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs rename to src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.cs diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs similarity index 100% rename from src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs rename to src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index 30222ba82bfb1..d183b67e83084 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -90,9 +90,10 @@ public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribu public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) => SetCustomAttribute(customBuilder); - public abstract int GetTypeToken(Type type, bool getGenericDefinition = true); + public abstract int GetTypeToken(Type type); public abstract int GetFieldToken(FieldInfo field); - public abstract int GetConstructorToken(ConstructorInfo con); + public abstract int GetMethodToken(MethodInfo method); + public abstract int GetConstructorToken(ConstructorInfo contsuctor); public abstract int GetSignatureToken(SignatureHelper sigHelper); public abstract int GetStringConstant(string str); } diff --git a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs index cfe3fbdea3a2a..4c00f9665e457 100644 --- a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs +++ b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs @@ -384,6 +384,7 @@ protected ModuleBuilder() { } public abstract System.Reflection.Emit.FieldBuilder DefineUninitializedData(string name, int size, System.Reflection.FieldAttributes attributes); public override bool Equals(object? obj) { throw null; } public abstract System.Reflection.MethodInfo GetArrayMethod(System.Type arrayClass, string methodName, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes); + public abstract int GetConstructorToken(ConstructorInfo contsuctor); public override object[] GetCustomAttributes(bool inherit) { throw null; } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } public override System.Collections.Generic.IList GetCustomAttributesData() { throw null; } @@ -391,11 +392,13 @@ protected ModuleBuilder() { } public override System.Reflection.FieldInfo? GetField(string name, System.Reflection.BindingFlags bindingAttr) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Fields might be removed")] public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingFlags) { throw null; } + public abstract int GetFieldToken(FieldInfo field); public override int GetHashCode() { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Methods might be removed")] protected override System.Reflection.MethodInfo? GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, System.Reflection.CallingConventions callConvention, System.Type[]? types, System.Reflection.ParameterModifier[]? modifiers) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Methods might be removed")] public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingFlags) { throw null; } + public abstract int GetMethodToken(MethodInfo method); public override void GetPEKind(out System.Reflection.PortableExecutableKinds peKind, out System.Reflection.ImageFileMachine machine) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Types might be removed")] public override System.Type? GetType(string className) { throw null; } @@ -405,6 +408,9 @@ protected ModuleBuilder() { } public override System.Type? GetType(string className, bool throwOnError, bool ignoreCase) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Types might be removed")] public override System.Type[] GetTypes() { throw null; } + public abstract int GetTypeToken(Type type); + public abstract int GetSignatureToken(SignatureHelper sigHelper); + public abstract int GetStringConstant(string str); public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } public override bool IsResource() { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Trimming changes metadata tokens")] @@ -421,11 +427,6 @@ protected ModuleBuilder() { } public override System.Type ResolveType(int metadataToken, System.Type[]? genericTypeArguments, System.Type[]? genericMethodArguments) { throw null; } public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public abstract int GetTypeToken(Type type, bool getGenericDefinition = true); - public abstract int GetFieldToken(FieldInfo field); - public abstract int GetConstructorToken(ConstructorInfo con); - public abstract int GetSignatureToken(SignatureHelper sigHelper); - public abstract int GetStringConstant(string str); } public abstract partial class PropertyBuilder : System.Reflection.PropertyInfo { diff --git a/src/mono/System.Private.CoreLib/System.Private.CoreLib.csproj b/src/mono/System.Private.CoreLib/System.Private.CoreLib.csproj index 7c126121b9648..5342f67bc2754 100644 --- a/src/mono/System.Private.CoreLib/System.Private.CoreLib.csproj +++ b/src/mono/System.Private.CoreLib/System.Private.CoreLib.csproj @@ -136,7 +136,7 @@ $(DefineConstants);FEATURE_MANAGED_ETW_CHANNELS $(DefineConstants);FEATURE_PERFTRACING $(DefineConstants);FEATURE_OBJCMARSHAL - $(DefineConstants);FEATURE_WASM_THREADS + $(DefineConstants);FEATURE_WASM_THREADS $(DefineConstants);FEATURE_WASM_PERFTRACING @@ -148,19 +148,15 @@ - + - - + + - + @@ -223,30 +219,30 @@ - - - - - - - - - + + + + + + + + + + - diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.Mono.cs similarity index 100% rename from src/mono/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.Mono.cs rename to src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.Mono.cs diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeConstructorBuilder.Mono.cs similarity index 100% rename from src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.Mono.cs rename to src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeConstructorBuilder.Mono.cs diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.Mono.cs similarity index 100% rename from src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.Mono.cs rename to src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.Mono.cs diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.Mono.cs similarity index 100% rename from src/mono/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.Mono.cs rename to src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.Mono.cs diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.Mono.cs similarity index 100% rename from src/mono/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.Mono.cs rename to src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.Mono.cs diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeGenericTypeParameterBuilder.cs similarity index 100% rename from src/mono/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs rename to src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeGenericTypeParameterBuilder.cs diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.Mono.cs similarity index 100% rename from src/mono/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.Mono.cs rename to src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.Mono.cs diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.Mono.cs similarity index 99% rename from src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs rename to src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.Mono.cs index 04cadb401ab8c..05d8da8ad887d 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.Mono.cs @@ -480,7 +480,7 @@ public override Type[] GetTypes() return copy; } - internal static int GetMethodToken(MethodInfo method) + public override int GetMethodToken(MethodInfo method) { ArgumentNullException.ThrowIfNull(method); @@ -535,7 +535,7 @@ public override int GetStringConstant(string str) return GetToken(str); } - public override int GetTypeToken(Type type, bool getGenericDefinition = true) + public override int GetTypeToken(Type type) { ArgumentNullException.ThrowIfNull(type); if (type.IsByRef) diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.Mono.cs similarity index 100% rename from src/mono/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.Mono.cs rename to src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.Mono.cs diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs similarity index 100% rename from src/mono/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs rename to src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs From 34c0216cc0b0b06c299f631472e66fa937d6a1d7 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Mon, 23 Jan 2023 11:27:27 -0800 Subject: [PATCH 33/36] Use protected absract methods and other related changes --- .../Reflection/Emit/CustomAttributeBuilder.cs | 2 +- .../src/System/Reflection/Emit/ILGenerator.cs | 10 +- .../Reflection/Emit/ParameterBuilder.cs | 2 +- .../Reflection/Emit/RuntimeAssemblyBuilder.cs | 44 +-- .../Emit/RuntimeConstructorBuilder.cs | 20 +- .../Reflection/Emit/RuntimeEnumBuilder.cs | 14 +- .../Reflection/Emit/RuntimeEventBuilder.cs | 19 +- .../Reflection/Emit/RuntimeFieldBuilder.cs | 17 +- .../RuntimeGenericTypeParameterBuilder.cs | 12 +- .../Reflection/Emit/RuntimeMethodBuilder.cs | 55 +-- .../Reflection/Emit/RuntimeModuleBuilder.cs | 96 +++-- .../Reflection/Emit/RuntimePropertyBuilder.cs | 19 +- .../Reflection/Emit/RuntimeTypeBuilder.cs | 338 +++++++----------- .../System/Reflection/Emit/SignatureHelper.cs | 12 +- .../System/Reflection/Emit/AssemblyBuilder.cs | 49 ++- .../Reflection/Emit/ConstructorBuilder.cs | 44 ++- .../src/System/Reflection/Emit/EnumBuilder.cs | 35 +- .../System/Reflection/Emit/EventBuilder.cs | 47 ++- .../System/Reflection/Emit/FieldBuilder.cs | 35 +- .../Emit/GenericTypeParameterBuilder.cs | 27 +- .../System/Reflection/Emit/MethodBuilder.cs | 88 +++-- .../System/Reflection/Emit/ModuleBuilder.cs | 107 ++++-- .../System/Reflection/Emit/PropertyBuilder.cs | 46 ++- .../src/System/Reflection/Emit/TypeBuilder.cs | 208 ++++++++--- .../ref/System.Reflection.Emit.cs | 269 +++++++++----- .../Emit/RuntimeAssemblyBuilder.Mono.cs | 21 +- .../Emit/RuntimeConstructorBuilder.Mono.cs | 19 +- .../Emit/RuntimeEnumBuilder.Mono.cs | 12 +- .../Emit/RuntimeEventBuilder.Mono.cs | 17 +- .../Emit/RuntimeFieldBuilder.Mono.cs | 12 +- .../RuntimeGenericTypeParameterBuilder.cs | 14 +- .../Emit/RuntimeMethodBuilder.Mono.cs | 49 +-- .../Emit/RuntimeModuleBuilder.Mono.cs | 47 ++- .../Emit/RuntimePropertyBuilder.Mono.cs | 15 +- .../Emit/RuntimeTypeBuilder.Mono.cs | 75 ++-- 35 files changed, 1015 insertions(+), 881 deletions(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs index 8e95922a8704a..26a73cf325e48 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs @@ -519,7 +519,7 @@ private static void EmitValue(BinaryWriter writer, Type type, object? value) // return the byte interpretation of the custom attribute internal void CreateCustomAttribute(RuntimeModuleBuilder mod, int tkOwner) { - RuntimeTypeBuilder.DefineCustomAttribute(mod, tkOwner, mod.GetConstructorToken(m_con), m_blob); + RuntimeTypeBuilder.DefineCustomAttribute(mod, tkOwner, mod.GetMetadataToken(m_con), m_blob); } } } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs index a72930cc934bb..8416ee063a900 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs @@ -570,7 +570,7 @@ public virtual void EmitCalli(OpCode opcode, CallingConventions callingConventio UpdateStackSize(OpCodes.Calli, stackchange); RecordTokenFixup(); - PutInteger4(modBuilder.GetSignatureToken(sig)); + PutInteger4(modBuilder.GetMetadataToken(sig)); } public virtual void EmitCalli(OpCode opcode, CallingConvention unmanagedCallConv, Type? returnType, Type[]? parameterTypes) @@ -613,7 +613,7 @@ public virtual void EmitCalli(OpCode opcode, CallingConvention unmanagedCallConv EnsureCapacity(7); Emit(OpCodes.Calli); RecordTokenFixup(); - PutInteger4(modBuilder.GetSignatureToken(sig)); + PutInteger4(modBuilder.GetMetadataToken(sig)); } public virtual void EmitCall(OpCode opcode, MethodInfo methodInfo, Type[]? optionalParameterTypes) @@ -656,7 +656,7 @@ public virtual void Emit(OpCode opcode, SignatureHelper signature) int stackchange = 0; ModuleBuilder modBuilder = (ModuleBuilder)m_methodBuilder.Module; - int sig = modBuilder.GetSignatureToken(signature); + int sig = modBuilder.GetMetadataToken(signature); int tempVal = sig; @@ -814,7 +814,7 @@ public virtual void Emit(OpCode opcode, Label[] labels) public virtual void Emit(OpCode opcode, FieldInfo field) { ModuleBuilder modBuilder = (ModuleBuilder)m_methodBuilder.Module; - int tempVal = modBuilder.GetFieldToken(field); + int tempVal = modBuilder.GetMetadataToken(field); EnsureCapacity(7); InternalEmit(opcode); RecordTokenFixup(); @@ -828,7 +828,7 @@ public virtual void Emit(OpCode opcode, string str) // fixups if the module is persisted to a PE. ModuleBuilder modBuilder = (ModuleBuilder)m_methodBuilder.Module; - int tempVal = modBuilder.GetStringConstant(str); + int tempVal = modBuilder.GetMetadataToken(str); EnsureCapacity(7); InternalEmit(opcode); PutInteger4(tempVal); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs index 48dc902f56404..717f0823e4097 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs @@ -26,7 +26,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) RuntimeTypeBuilder.DefineCustomAttribute( _methodBuilder.GetModuleBuilder(), _token, - ((RuntimeModuleBuilder)_methodBuilder.GetModule()).GetConstructorToken(con), + ((RuntimeModuleBuilder)_methodBuilder.GetModule()).GetMetadataToken(con), binaryAttribute); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs index 5b70d559381f9..909d1f04d65fb 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs @@ -181,32 +181,21 @@ internal static RuntimeAssemblyBuilder InternalDefineDynamicAssembly( /// modules within an Assembly with the same name. This dynamic module is /// a transient module. /// - public override ModuleBuilder DefineDynamicModule(string name) + protected override ModuleBuilder DefineDynamicModuleCore(string _) { lock (SyncRoot) { - return DefineDynamicModuleInternalNoLock(name); - } - } + // Create the dynamic module- only one ModuleBuilder per AssemblyBuilder can be created. + if (_isManifestModuleUsedAsDefinedModule) + { + throw new InvalidOperationException(SR.InvalidOperation_NoMultiModuleAssembly); + } - private ModuleBuilder DefineDynamicModuleInternalNoLock(string name) - { - ArgumentException.ThrowIfNullOrEmpty(name); - if (name[0] == '\0') - { - throw new ArgumentException(SR.Argument_InvalidName, nameof(name)); - } + // We are reusing manifest module as user-defined dynamic module + _isManifestModuleUsedAsDefinedModule = true; - // Create the dynamic module- only one ModuleBuilder per AssemblyBuilder can be created. - if (_isManifestModuleUsedAsDefinedModule) - { - throw new InvalidOperationException(SR.InvalidOperation_NoMultiModuleAssembly); + return _manifestModuleBuilder; } - - // We are reusing manifest module as user-defined dynamic module - _isManifestModuleUsedAsDefinedModule = true; - - return _manifestModuleBuilder; } #endregion @@ -277,10 +266,8 @@ public override Assembly GetSatelliteAssembly(CultureInfo culture, Version? vers /// The name of module for the look up. /// Dynamic module with the specified name. - public override ModuleBuilder? GetDynamicModule(string name) + protected override ModuleBuilder? GetDynamicModuleCore(string name) { - ArgumentException.ThrowIfNullOrEmpty(name); - if (_isManifestModuleUsedAsDefinedModule) { if (RuntimeModuleBuilder.ManifestModuleName == name) @@ -294,17 +281,14 @@ public override Assembly GetSatelliteAssembly(CultureInfo culture, Version? vers /// /// Use this function if client decides to form the custom attribute blob themselves. /// - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - ArgumentNullException.ThrowIfNull(con); - ArgumentNullException.ThrowIfNull(binaryAttribute); - lock (SyncRoot) { RuntimeTypeBuilder.DefineCustomAttribute( _manifestModuleBuilder, // pass in the in-memory assembly module AssemblyDefToken, - _manifestModuleBuilder.GetConstructorToken(con), + _manifestModuleBuilder.GetMetadataToken(con), binaryAttribute); } } @@ -312,10 +296,8 @@ public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttrib /// /// Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder. /// - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); - lock (SyncRoot) { customBuilder.CreateCustomAttribute(_manifestModuleBuilder, AssemblyDefToken); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeConstructorBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeConstructorBuilder.cs index 7e8bf6f77a19c..86b20be8e7ff0 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeConstructorBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeConstructorBuilder.cs @@ -122,7 +122,7 @@ public override bool IsDefined(Type attributeType, bool inherit) #endregion #region Public Members - public override ParameterBuilder DefineParameter(int iSequence, ParameterAttributes attributes, string? strParamName) + protected override ParameterBuilder DefineParameterCore(int iSequence, ParameterAttributes attributes, string? strParamName) { // Theoretically we shouldn't allow iSequence to be 0 because in reflection ctors don't have // return parameters. But we'll allow it for backward compatibility with V2. The attributes @@ -133,15 +133,7 @@ public override ParameterBuilder DefineParameter(int iSequence, ParameterAttribu return m_methodBuilder.DefineParameter(iSequence, attributes, strParamName); } - public override ILGenerator GetILGenerator() - { - if (m_isDefaultConstructor) - throw new InvalidOperationException(SR.InvalidOperation_DefaultConstructorILGen); - - return m_methodBuilder.GetILGenerator(); - } - - public override ILGenerator GetILGenerator(int streamSize) + protected override ILGenerator GetILGeneratorCore(int streamSize) { if (m_isDefaultConstructor) throw new InvalidOperationException(SR.InvalidOperation_DefaultConstructorILGen); @@ -165,22 +157,22 @@ internal override Type GetReturnType() return m_methodBuilder.ReturnType; } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { m_methodBuilder.SetCustomAttribute(con, binaryAttribute); } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { m_methodBuilder.SetCustomAttribute(customBuilder); } - public override void SetImplementationFlags(MethodImplAttributes attributes) + protected override void SetImplementationFlagsCore(MethodImplAttributes attributes) { m_methodBuilder.SetImplementationFlags(attributes); } - public override bool InitLocals + protected override bool InitLocalsCore { get => m_methodBuilder.InitLocals; set => m_methodBuilder.InitLocals = value; diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.cs index 272f1910b052a..5ac47e64da97f 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.cs @@ -27,7 +27,7 @@ public override bool IsAssignableFrom([NotNullWhen(true)] TypeInfo? typeInfo) // Define literal for enum - public override FieldBuilder DefineLiteral(string literalName, object? literalValue) + protected override FieldBuilder DefineLiteralCore(string literalName, object? literalValue) { // Define the underlying field for the enum. It will be a non-static, private field with special name bit set. FieldBuilder fieldBuilder = m_typeBuilder.DefineField( @@ -39,7 +39,7 @@ public override FieldBuilder DefineLiteral(string literalName, object? literalVa } [return: DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes.All)] - public override TypeInfo CreateTypeInfo() + protected override TypeInfo CreateTypeInfoCore() { return m_typeBuilder.CreateTypeInfo(); } @@ -49,7 +49,7 @@ public override TypeInfo CreateTypeInfo() // return the underlying field for the enum - public override FieldBuilder UnderlyingField => m_underlyingField; + protected override FieldBuilder UnderlyingFieldCore => m_underlyingField; public override string Name => m_typeBuilder.Name; @@ -275,13 +275,13 @@ public override object[] GetCustomAttributes(Type attributeType, bool inherit) // Use this function if client decides to form the custom attribute blob themselves - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { m_typeBuilder.SetCustomAttribute(con, binaryAttribute); } // Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { m_typeBuilder.SetCustomAttribute(customBuilder); } @@ -316,13 +316,13 @@ public override Type MakeByRefType() return SymbolType.FormCompoundType("&", this, 0)!; } - [RequiresDynamicCodeAttribute("The code for an array of the specified type might not be available.")] + [RequiresDynamicCode("The code for an array of the specified type might not be available.")] public override Type MakeArrayType() { return SymbolType.FormCompoundType("[]", this, 0)!; } - [RequiresDynamicCodeAttribute("The code for an array of the specified type might not be available.")] + [RequiresDynamicCode("The code for an array of the specified type might not be available.")] public override Type MakeArrayType(int rank) { string s = GetRankString(rank); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.cs index 8a5bf8db44efc..b8b66c6ce6956 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.cs @@ -58,47 +58,42 @@ private void SetMethodSemantics(MethodBuilder mdBuilder, MethodSemanticsAttribut mdBuilder.MetadataToken); } - public override void SetAddOnMethod(MethodBuilder mdBuilder) + protected override void SetAddOnMethodCore(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.AddOn); } - public override void SetRemoveOnMethod(MethodBuilder mdBuilder) + protected override void SetRemoveOnMethodCore(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.RemoveOn); } - public override void SetRaiseMethod(MethodBuilder mdBuilder) + protected override void SetRaiseMethodCore(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Fire); } - public override void AddOtherMethod(MethodBuilder mdBuilder) + protected override void AddOtherMethodCore(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Other); } // Use this function if client decides to form the custom attribute blob themselves - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - ArgumentNullException.ThrowIfNull(con); - ArgumentNullException.ThrowIfNull(binaryAttribute); - m_type.ThrowIfCreated(); RuntimeTypeBuilder.DefineCustomAttribute( m_module, m_evToken, - m_module.GetConstructorToken(con), + m_module.GetMetadataToken(con), binaryAttribute); } // Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); - m_type.ThrowIfCreated(); customBuilder.CreateCustomAttribute(m_module, m_evToken); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.cs index 51bc0548e111f..186d908b54d7f 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.cs @@ -131,8 +131,8 @@ public override bool IsDefined(Type attributeType, bool inherit) #endregion - #region Public Members - public override void SetOffset(int iOffset) + #region Protected Members Overrides + protected override void SetOffsetCore(int iOffset) { m_typeBuilder.ThrowIfCreated(); @@ -140,7 +140,7 @@ public override void SetOffset(int iOffset) RuntimeTypeBuilder.SetFieldLayoutOffset(new QCallModule(ref module), m_fieldTok, iOffset); } - public override void SetConstant(object? defaultValue) + protected override void SetConstantCore(object? defaultValue) { m_typeBuilder.ThrowIfCreated(); @@ -154,23 +154,18 @@ public override void SetConstant(object? defaultValue) RuntimeTypeBuilder.SetConstantValue(m_typeBuilder.GetModuleBuilder(), m_fieldTok, m_fieldType, defaultValue); } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - ArgumentNullException.ThrowIfNull(con); - ArgumentNullException.ThrowIfNull(binaryAttribute); - RuntimeModuleBuilder moduleBuilder = (RuntimeModuleBuilder)m_typeBuilder.Module; m_typeBuilder.ThrowIfCreated(); RuntimeTypeBuilder.DefineCustomAttribute(moduleBuilder, - m_fieldTok, moduleBuilder.GetConstructorToken(con), binaryAttribute); + m_fieldTok, moduleBuilder.GetMetadataToken(con), binaryAttribute); } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); - m_typeBuilder.ThrowIfCreated(); customBuilder.CreateCustomAttribute((RuntimeModuleBuilder)m_typeBuilder.Module, m_fieldTok); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeGenericTypeParameterBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeGenericTypeParameterBuilder.cs index 7ce9089995d77..6301e2ab4c509 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeGenericTypeParameterBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeGenericTypeParameterBuilder.cs @@ -214,28 +214,28 @@ public override Type MakeArrayType(int rank) public override bool IsDefined(Type attributeType, bool inherit) { throw new NotSupportedException(); } #endregion - #region Public Members - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + #region Protected Members Overrides + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { m_type.SetGenParamCustomAttribute(con, binaryAttribute); } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { m_type.SetGenParamCustomAttribute(customBuilder); } - public override void SetBaseTypeConstraint([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint) + protected override void SetBaseTypeConstraintCore([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint) { m_type.SetParent(baseTypeConstraint); } - public override void SetInterfaceConstraints(params Type[]? interfaceConstraints) + protected override void SetInterfaceConstraintsCore(params Type[]? interfaceConstraints) { m_type.SetInterfaces(interfaceConstraints); } - public override void SetGenericParameterAttributes(GenericParameterAttributes genericParameterAttributes) + protected override void SetGenericParameterAttributesCore(GenericParameterAttributes genericParameterAttributes) { m_type.SetGenParamAttributes(genericParameterAttributes); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.cs index 56de8e7fa89fd..5faeaefdab471 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.cs @@ -514,13 +514,8 @@ public override MethodInfo MakeGenericMethod(params Type[] typeArguments) return MethodBuilderInstantiation.MakeGenericMethod(this, typeArguments); } - public override GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + protected override GenericTypeParameterBuilder[] DefineGenericParametersCore(params string[] names) { - ArgumentNullException.ThrowIfNull(names); - - if (names.Length == 0) - throw new ArgumentException(SR.Arg_EmptyArray, nameof(names)); - if (m_inst != null) throw new InvalidOperationException(SR.InvalidOperation_GenericParametersAlreadySet); @@ -541,7 +536,7 @@ public override GenericTypeParameterBuilder[] DefineGenericParameters(params str internal void ThrowIfGeneric() { if (IsGenericMethod && !IsGenericMethodDefinition) throw new InvalidOperationException(); } #endregion - #region Public Members + #region Private Members private int GetToken() { // We used to always "tokenize" a MethodBuilder when it is constructed. After change list 709498 @@ -611,18 +606,10 @@ private int GetTokenNoLock() return m_token; } + #endregion - public override void SetParameters(params Type[] parameterTypes) - { - SetSignature(null, null, null, parameterTypes, null, null); - } - - public override void SetReturnType(Type? returnType) - { - SetSignature(returnType, null, null, null, null, null); - } - - public override void SetSignature( + #region Protected Members Overrides + protected override void SetSignatureCore( Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { @@ -650,10 +637,8 @@ public override void SetSignature( m_parameterTypeOptionalCustomModifiers = parameterTypeOptionalCustomModifiers; } - public override ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string? strParamName) + protected override ParameterBuilder DefineParameterCore(int position, ParameterAttributes attributes, string? strParamName) { - ArgumentOutOfRangeException.ThrowIfNegative(position); - ThrowIfGeneric(); m_containingType.ThrowIfCreated(); @@ -664,10 +649,9 @@ public override ParameterBuilder DefineParameter(int position, ParameterAttribut return new ParameterBuilder(this, position, attributes, strParamName); } - public override void SetImplementationFlags(MethodImplAttributes attributes) + protected override void SetImplementationFlagsCore(MethodImplAttributes attributes) { ThrowIfGeneric(); - m_containingType.ThrowIfCreated(); m_dwMethodImplFlags = attributes; @@ -678,15 +662,7 @@ public override void SetImplementationFlags(MethodImplAttributes attributes) RuntimeTypeBuilder.SetMethodImpl(new QCallModule(ref module), MetadataToken, attributes); } - public override ILGenerator GetILGenerator() - { - ThrowIfGeneric(); - ThrowIfShouldNotHaveBody(); - - return m_ilGenerator ??= new ILGenerator(this); - } - - public override ILGenerator GetILGenerator(int size) + protected override ILGenerator GetILGeneratorCore(int size) { ThrowIfGeneric(); ThrowIfShouldNotHaveBody(); @@ -707,7 +683,7 @@ private void ThrowIfShouldNotHaveBody() } } - public override bool InitLocals + protected override bool InitLocalsCore { // Property is set to true if user wishes to have zero initialized stack frame for this method. Default to false. get { ThrowIfGeneric(); return m_fInitLocals; } @@ -719,27 +695,20 @@ internal Module GetModule() return GetModuleBuilder(); } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - ArgumentNullException.ThrowIfNull(con); - ArgumentNullException.ThrowIfNull(binaryAttribute); - ThrowIfGeneric(); - RuntimeTypeBuilder.DefineCustomAttribute(m_module, MetadataToken, - m_module.GetConstructorToken(con), + m_module.GetMetadataToken(con), binaryAttribute); if (IsKnownCA(con)) ParseCA(con); } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); - ThrowIfGeneric(); - customBuilder.CreateCustomAttribute(m_module, MetadataToken); if (IsKnownCA(customBuilder.m_con)) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.cs index b9891b272663e..8511d80891820 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; -using System.Diagnostics.SymbolStore; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -222,38 +221,38 @@ private int GetTypeRefNested(Type type, Module? refedModule) return GetTypeRef(new QCallModule(ref thisModule), typeName, new QCallModule(ref refedRuntimeModule), tkResolution); } - public override int GetConstructorToken(ConstructorInfo con) + public override int GetMetadataToken(ConstructorInfo constructor) { // Helper to get constructor token. int tr; int mr; - if (con is ConstructorBuilder conBuilder) + if (constructor is ConstructorBuilder conBuilder) { if (conBuilder.Module.Equals(this)) return conBuilder.MetadataToken; // constructor is defined in a different module - tr = GetTypeTokenInternal(con.ReflectedType!); - mr = GetMemberRef(con.ReflectedType!.Module, tr, conBuilder.MetadataToken); + tr = GetTypeTokenInternal(constructor.ReflectedType!); + mr = GetMemberRef(constructor.ReflectedType!.Module, tr, conBuilder.MetadataToken); } - else if (con is ConstructorOnTypeBuilderInstantiation conOnTypeBuilderInst) + else if (constructor is ConstructorOnTypeBuilderInstantiation conOnTypeBuilderInst) { - tr = GetTypeTokenInternal(con.DeclaringType!); - mr = GetMemberRef(con.DeclaringType!.Module, tr, conOnTypeBuilderInst.MetadataToken); + tr = GetTypeTokenInternal(constructor.DeclaringType!); + mr = GetMemberRef(constructor.DeclaringType!.Module, tr, conOnTypeBuilderInst.MetadataToken); } - else if (con is RuntimeConstructorInfo rtCon && !con.ReflectedType!.IsArray) + else if (constructor is RuntimeConstructorInfo rtCon && !constructor.ReflectedType!.IsArray) { // constructor is not a dynamic field // We need to get the TypeRef tokens - tr = GetTypeTokenInternal(con.ReflectedType); + tr = GetTypeTokenInternal(constructor.ReflectedType); mr = GetMemberRefOfMethodInfo(tr, rtCon); } else { // some user derived ConstructorInfo // go through the slower code path, i.e. retrieve parameters and form signature helper. - ParameterInfo[] parameters = con.GetParameters(); + ParameterInfo[] parameters = constructor.GetParameters(); if (parameters == null) { throw new ArgumentException(SR.Argument_InvalidConstructorInfo); @@ -275,11 +274,11 @@ public override int GetConstructorToken(ConstructorInfo con) optionalCustomModifiers[i] = parameters[i].GetOptionalCustomModifiers(); } - tr = GetTypeTokenInternal(con.ReflectedType!); + tr = GetTypeTokenInternal(constructor.ReflectedType!); - SignatureHelper sigHelp = SignatureHelper.GetMethodSigHelper(this, con.CallingConvention, null, null, null, parameterTypes, requiredCustomModifiers, optionalCustomModifiers); + SignatureHelper sigHelp = SignatureHelper.GetMethodSigHelper(this, constructor.CallingConvention, null, null, null, parameterTypes, requiredCustomModifiers, optionalCustomModifiers); byte[] sigBytes = sigHelp.InternalGetSignature(out int length); - mr = GetMemberRefFromSignature(tr, con.Name, sigBytes, length); + mr = GetMemberRefFromSignature(tr, constructor.Name, sigBytes, length); } return mr; @@ -359,15 +358,15 @@ private int GetMemberRefToken(MethodBase method, Type[]? optionalParameterTypes) else if (!method.Module.Equals(this)) { // Use typeRef as parent because the method's declaringType lives in a different assembly - tkParent = GetTypeToken(method.DeclaringType); + tkParent = GetMetadataToken(method.DeclaringType); } else { // Use methodDef as parent because the method lives in this assembly and its declaringType has no generic arguments if (masmi != null) - tkParent = GetMethodToken(masmi); + tkParent = GetMetadataToken(masmi); else - tkParent = GetConstructorToken((method as ConstructorInfo)!); + tkParent = GetMetadataToken((method as ConstructorInfo)!); } return GetMemberRefFromSignature(tkParent, method.Name, sigBytes, sigLength); @@ -743,19 +742,11 @@ public override MethodInfo[] GetMethods(BindingFlags bindingFlags) #region Define Type - public override TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packingSize, int typesize) + protected override TypeBuilder DefineTypeCore(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces, PackingSize packingSize, int typesize) { lock (SyncRoot) { - return new RuntimeTypeBuilder(name, attr, parent, null, this, packingSize, typesize, null); - } - } - - public override TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) - { - lock (SyncRoot) - { - return new RuntimeTypeBuilder(name, attr, parent, interfaces, this, PackingSize.Unspecified, TypeBuilder.UnspecifiedTypeSize, null); + return new RuntimeTypeBuilder(name, attr, parent, interfaces, this, packingSize, typesize, null); } } @@ -765,7 +756,7 @@ public override TypeBuilder DefineType(string name, TypeAttributes attr, [Dynami // This API can only be used to construct a top-level (not nested) enum type. // Nested enum types can be defined manually using ModuleBuilder.DefineType. - public override EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type underlyingType) + protected override EnumBuilder DefineEnumCore(string name, TypeAttributes visibility, Type underlyingType) { lock (SyncRoot) { @@ -784,7 +775,7 @@ public override EnumBuilder DefineEnum(string name, TypeAttributes visibility, T #region Define Global Method [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public override MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, + protected override MethodBuilder DefinePInvokeMethodCore(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet) { @@ -800,7 +791,7 @@ public override MethodBuilder DefinePInvokeMethod(string name, string dllName, s } } - public override MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, + protected override MethodBuilder DefineGlobalMethodCore(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? requiredReturnTypeCustomModifiers, Type[]? optionalReturnTypeCustomModifiers, Type[]? parameterTypes, Type[][]? requiredParameterTypeCustomModifiers, Type[][]? optionalParameterTypeCustomModifiers) { @@ -820,7 +811,7 @@ private MethodBuilder DefineGlobalMethodNoLock(string name, MethodAttributes att { throw new InvalidOperationException(SR.InvalidOperation_GlobalsHaveBeenCreated); } - ArgumentException.ThrowIfNullOrEmpty(name); + if ((attributes & MethodAttributes.Static) == 0) { throw new ArgumentException(SR.Argument_GlobalMembersMustBeStatic); @@ -831,7 +822,7 @@ private MethodBuilder DefineGlobalMethodNoLock(string name, MethodAttributes att parameterTypes, requiredParameterTypeCustomModifiers, optionalParameterTypeCustomModifiers); } - public override void CreateGlobalFunctions() + protected override void CreateGlobalFunctionsCore() { lock (SyncRoot) { @@ -849,7 +840,7 @@ public override void CreateGlobalFunctions() #region Define Data - public override FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) + protected override FieldBuilder DefineInitializedDataCore(string name, byte[] data, FieldAttributes attributes) { lock (SyncRoot) { @@ -865,7 +856,7 @@ public override FieldBuilder DefineInitializedData(string name, byte[] data, Fie } } - public override FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) + protected override FieldBuilder DefineUninitializedDataCore(string name, int size, FieldAttributes attributes) { lock (SyncRoot) { @@ -898,7 +889,7 @@ public int GetTypeTokenInternal(Type type, bool getGenericDefinition = false) } } - public override int GetTypeToken(Type type) + public override int GetMetadataToken(Type type) { return GetTypeTokenInternal(type, getGenericDefinition: true); } @@ -952,7 +943,7 @@ private int GetTypeTokenWorkerNoLock(Type type, bool getGenericDefinition) return GetTypeRefNested(type, refedModule); } - public override int GetMethodToken(MethodInfo method) + public override int GetMetadataToken(MethodInfo method) { lock (SyncRoot) { @@ -987,7 +978,7 @@ private int GetMethodTokenNoLock(MethodInfo method, bool getGenericTypeDefinitio } // method is defined in a different module - tr = getGenericTypeDefinition ? GetTypeToken(method.DeclaringType) : GetTypeTokenInternal(method.DeclaringType); + tr = getGenericTypeDefinition ? GetMetadataToken(method.DeclaringType) : GetTypeTokenInternal(method.DeclaringType); mr = GetMemberRef(method.DeclaringType.Module, tr, methodToken); } else if (method is MethodOnTypeBuilderInstantiation) @@ -1026,7 +1017,7 @@ private int GetMethodTokenNoLock(MethodInfo method, bool getGenericTypeDefinitio } else if (method is RuntimeMethodInfo rtMeth) { - tr = getGenericTypeDefinition ? GetTypeToken(declaringType) : GetTypeTokenInternal(declaringType); + tr = getGenericTypeDefinition ? GetMetadataToken(declaringType) : GetTypeTokenInternal(declaringType); mr = GetMemberRefOfMethodInfo(tr, rtMeth); } else @@ -1046,7 +1037,7 @@ private int GetMethodTokenNoLock(MethodInfo method, bool getGenericTypeDefinitio optionalCustomModifiers[i] = parameters[i].GetOptionalCustomModifiers(); } - tr = getGenericTypeDefinition ? GetTypeToken(declaringType) : GetTypeTokenInternal(declaringType); + tr = getGenericTypeDefinition ? GetMetadataToken(declaringType) : GetTypeTokenInternal(declaringType); SignatureHelper sigHelp; @@ -1097,7 +1088,7 @@ internal int GetMethodTokenInternal(MethodBase method, Type[]? optionalParameter } else { - tk = GetMethodToken(methodInfoUnbound); + tk = GetMetadataToken(methodInfoUnbound); } // For Ldtoken, Ldftn, and Ldvirtftn, we should emit the method def/ref token for a generic method definition. @@ -1120,11 +1111,11 @@ internal int GetMethodTokenInternal(MethodBase method, Type[]? optionalParameter { if (methodInfo != null) { - tk = GetMethodToken(methodInfo); + tk = GetMetadataToken(methodInfo); } else { - tk = GetConstructorToken((method as ConstructorInfo)!); + tk = GetMetadataToken((method as ConstructorInfo)!); } } else @@ -1148,8 +1139,6 @@ internal int GetArrayMethodToken(Type arrayClass, string methodName, CallingConv private int GetArrayMethodTokenNoLock(Type arrayClass, string methodName, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes) { - ArgumentNullException.ThrowIfNull(arrayClass); - ArgumentException.ThrowIfNullOrEmpty(methodName); if (!arrayClass.IsArray) { throw new ArgumentException(SR.Argument_HasToBeArrayClass); @@ -1167,7 +1156,7 @@ private int GetArrayMethodTokenNoLock(Type arrayClass, string methodName, Callin typeSpec, methodName, sigBytes, length); } - public override MethodInfo GetArrayMethod(Type arrayClass, string methodName, CallingConventions callingConvention, + protected override MethodInfo GetArrayMethodCore(Type arrayClass, string methodName, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes) { // GetArrayMethod is useful when you have an array of a type whose definition has not been completed and @@ -1180,7 +1169,7 @@ public override MethodInfo GetArrayMethod(Type arrayClass, string methodName, Ca return new SymbolMethod(this, token, arrayClass, methodName, callingConvention, returnType, parameterTypes); } - public override int GetFieldToken(FieldInfo field) + public override int GetMetadataToken(FieldInfo field) { lock (SyncRoot) { @@ -1263,7 +1252,7 @@ private int GetFieldTokenNoLock(FieldInfo field) return mr; } - public override int GetStringConstant(string str) + public override int GetMetadataToken(string str) { ArgumentNullException.ThrowIfNull(str); @@ -1273,7 +1262,7 @@ public override int GetStringConstant(string str) return GetStringConstant(new QCallModule(ref thisModule), str, str.Length); } - public override int GetSignatureToken(SignatureHelper sigHelper) + public override int GetMetadataToken(SignatureHelper sigHelper) { ArgumentNullException.ThrowIfNull(sigHelper); @@ -1300,22 +1289,17 @@ internal int GetSignatureToken(byte[] sigBytes, int sigLength) #region Other - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - ArgumentNullException.ThrowIfNull(con); - ArgumentNullException.ThrowIfNull(binaryAttribute); - RuntimeTypeBuilder.DefineCustomAttribute( this, 1, // This is hard coding the module token to 1 - GetConstructorToken(con), + GetMetadataToken(con), binaryAttribute); } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); - customBuilder.CreateCustomAttribute(this, 1); // This is hard coding the module token to 1 } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.cs index 6510777b73802..69a3d774f12da 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.cs @@ -48,7 +48,7 @@ internal RuntimePropertyBuilder( /// /// Set the default value of the Property /// - public override void SetConstant(object? defaultValue) + protected override void SetConstantCore(object? defaultValue) { m_containingType.ThrowIfCreated(); @@ -79,43 +79,38 @@ private void SetMethodSemantics(MethodBuilder mdBuilder, MethodSemanticsAttribut mdBuilder.MetadataToken); } - public override void SetGetMethod(MethodBuilder mdBuilder) + protected override void SetGetMethodCore(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Getter); m_getMethod = mdBuilder; } - public override void SetSetMethod(MethodBuilder mdBuilder) + protected override void SetSetMethodCore(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Setter); m_setMethod = mdBuilder; } - public override void AddOtherMethod(MethodBuilder mdBuilder) + protected override void AddOtherMethodCore(MethodBuilder mdBuilder) { SetMethodSemantics(mdBuilder, MethodSemanticsAttributes.Other); } // Use this function if client decides to form the custom attribute blob themselves - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - ArgumentNullException.ThrowIfNull(con); - ArgumentNullException.ThrowIfNull(binaryAttribute); - m_containingType.ThrowIfCreated(); RuntimeTypeBuilder.DefineCustomAttribute( m_moduleBuilder, m_tkProperty, - m_moduleBuilder.GetConstructorToken(con), + m_moduleBuilder.GetMetadataToken(con), binaryAttribute); } // Use this function if client wishes to build CustomAttribute using CustomAttributeBuilder - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); - m_containingType.ThrowIfCreated(); customBuilder.CreateCustomAttribute(m_moduleBuilder, m_tkProperty); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs index ba80ee0dc776a..0afa344330447 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs @@ -132,7 +132,7 @@ public void Bake(RuntimeModuleBuilder module, int token) if (m_customBuilder == null) { Debug.Assert(m_con != null); - DefineCustomAttribute(module, token, module.GetConstructorToken(m_con), + DefineCustomAttribute(module, token, module.GetMetadataToken(m_con), m_binaryAttribute); } else @@ -632,7 +632,7 @@ private void VerifyTypeAttributes(TypeAttributes attr) } } - public override bool IsCreated() + protected override bool IsCreatedCore() { return m_hasBeenCreated; } @@ -1153,12 +1153,8 @@ internal void SetInterfaces(params Type[]? interfaces) } } - public override GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + protected override GenericTypeParameterBuilder[] DefineGenericParametersCore(params string[] names) { - ArgumentNullException.ThrowIfNull(names); - if (names.Length == 0) - throw new ArgumentException(SR.Arg_EmptyArray, nameof(names)); - for (int i = 0; i < names.Length; i++) ArgumentNullException.ThrowIfNull(names[i], nameof(names)); @@ -1194,86 +1190,58 @@ public override Type MakeGenericType(params Type[] typeArguments) #endregion #region Define Method - public override void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) + protected override void DefineMethodOverrideCore(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) { lock (SyncRoot) { - DefineMethodOverrideNoLock(methodInfoBody, methodInfoDeclaration); - } - } - - private void DefineMethodOverrideNoLock(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) - { - ArgumentNullException.ThrowIfNull(methodInfoBody); - ArgumentNullException.ThrowIfNull(methodInfoDeclaration); - - ThrowIfCreated(); - - if (!ReferenceEquals(methodInfoBody.DeclaringType, this)) - // Loader restriction: body method has to be from this class - throw new ArgumentException(SR.ArgumentException_BadMethodImplBody); + ThrowIfCreated(); - int tkBody = m_module.GetMethodToken(methodInfoBody); - int tkDecl = m_module.GetMethodToken(methodInfoDeclaration); + if (!ReferenceEquals(methodInfoBody.DeclaringType, this)) + // Loader restriction: body method has to be from this class + throw new ArgumentException(SR.ArgumentException_BadMethodImplBody); - RuntimeModuleBuilder module = m_module; - DefineMethodImpl(new QCallModule(ref module), m_tdType, tkBody, tkDecl); - } + int tkBody = m_module.GetMetadataToken(methodInfoBody); + int tkDecl = m_module.GetMetadataToken(methodInfoDeclaration); - public override MethodBuilder DefineMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, - Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, - Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) - { - lock (SyncRoot) - { - return DefineMethodNoLock(name, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers, - returnTypeOptionalCustomModifiers, parameterTypes, parameterTypeRequiredCustomModifiers, - parameterTypeOptionalCustomModifiers); + RuntimeModuleBuilder module = m_module; + DefineMethodImpl(new QCallModule(ref module), m_tdType, tkBody, tkDecl); } } [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2082:UnrecognizedReflectionPattern", Justification = "Reflection.Emit is not subject to trimming")] - private MethodBuilder DefineMethodNoLock(string name, MethodAttributes attributes, CallingConventions callingConvention, + protected override MethodBuilder DefineMethodCore(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { - ArgumentException.ThrowIfNullOrEmpty(name); - - if (parameterTypes != null) + lock (SyncRoot) { - if (parameterTypeOptionalCustomModifiers != null && parameterTypeOptionalCustomModifiers.Length != parameterTypes.Length) - throw new ArgumentException(SR.Format(SR.Argument_MismatchedArrays, nameof(parameterTypeOptionalCustomModifiers), nameof(parameterTypes))); - - if (parameterTypeRequiredCustomModifiers != null && parameterTypeRequiredCustomModifiers.Length != parameterTypes.Length) - throw new ArgumentException(SR.Format(SR.Argument_MismatchedArrays, nameof(parameterTypeRequiredCustomModifiers), nameof(parameterTypes))); - } - - ThrowIfCreated(); + ThrowIfCreated(); - // pass in Method attributes - RuntimeMethodBuilder method = new RuntimeMethodBuilder( - name, attributes, callingConvention, - returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, - parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers, - m_module, this); + // pass in Method attributes + RuntimeMethodBuilder method = new RuntimeMethodBuilder( + name, attributes, callingConvention, + returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, + parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers, + m_module, this); - if (!m_isHiddenGlobalType) - { - // If this method is declared to be a constructor, increment our constructor count. - if ((method.Attributes & MethodAttributes.SpecialName) != 0 && method.Name.Equals(ConstructorInfo.ConstructorName)) + if (!m_isHiddenGlobalType) { - m_constructorCount++; + // If this method is declared to be a constructor, increment our constructor count. + if ((method.Attributes & MethodAttributes.SpecialName) != 0 && method.Name.Equals(ConstructorInfo.ConstructorName)) + { + m_constructorCount++; + } } - } - m_listMethods!.Add(method); + m_listMethods!.Add(method); - return method; + return method; + } } [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public override MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, + protected override MethodBuilder DefinePInvokeMethodCore(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers, @@ -1281,10 +1249,6 @@ public override MethodBuilder DefinePInvokeMethod(string name, string dllName, s { lock (SyncRoot) { - ArgumentException.ThrowIfNullOrEmpty(name); - ArgumentException.ThrowIfNullOrEmpty(dllName); - ArgumentException.ThrowIfNullOrEmpty(entryName); - if ((attributes & MethodAttributes.Abstract) != 0) throw new ArgumentException(SR.Argument_BadPInvokeMethod); @@ -1361,30 +1325,25 @@ public override MethodBuilder DefinePInvokeMethod(string name, string dllName, s #endregion #region Define Constructor - public override ConstructorBuilder DefineTypeInitializer() - { - lock (SyncRoot) - { - return DefineTypeInitializerNoLock(); - } - } - [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2082:UnrecognizedReflectionPattern", Justification = "Reflection.Emit is not subject to trimming")] - private ConstructorBuilder DefineTypeInitializerNoLock() + protected override ConstructorBuilder DefineTypeInitializerCore() { - ThrowIfCreated(); + lock (SyncRoot) + { + ThrowIfCreated(); - // change the attributes and the class constructor's name - const MethodAttributes attr = MethodAttributes.Private | MethodAttributes.Static | MethodAttributes.SpecialName; + // change the attributes and the class constructor's name + const MethodAttributes attr = MethodAttributes.Private | MethodAttributes.Static | MethodAttributes.SpecialName; - ConstructorBuilder constBuilder = new RuntimeConstructorBuilder( - ConstructorInfo.TypeConstructorName, attr, CallingConventions.Standard, null, m_module, this); + ConstructorBuilder constBuilder = new RuntimeConstructorBuilder( + ConstructorInfo.TypeConstructorName, attr, CallingConventions.Standard, null, m_module, this); - return constBuilder; + return constBuilder; + } } - public override ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes) + protected override ConstructorBuilder DefineDefaultConstructorCore(MethodAttributes attributes) { if ((m_iAttr & TypeAttributes.Interface) == TypeAttributes.Interface) { @@ -1452,7 +1411,7 @@ private ConstructorBuilder DefineDefaultConstructorNoLock(MethodAttributes attri return constBuilder; } - public override ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, + protected override ConstructorBuilder DefineConstructorCore(MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers) { if ((m_iAttr & TypeAttributes.Interface) == TypeAttributes.Interface && (attributes & MethodAttributes.Static) != MethodAttributes.Static) @@ -1498,180 +1457,134 @@ private ConstructorBuilder DefineConstructorNoLock(MethodAttributes attributes, #endregion #region Define Nested Type - - public override TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) - { - lock (SyncRoot) - { - return new RuntimeTypeBuilder(name, attr, parent, interfaces, m_module, PackingSize.Unspecified, UnspecifiedTypeSize, this); - } - } - - public override TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packSize, int typeSize) + protected override TypeBuilder DefineNestedTypeCore(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces, PackingSize packSize, int typeSize) { lock (SyncRoot) { - return new RuntimeTypeBuilder(name, attr, parent, null, m_module, packSize, typeSize, this); + return new RuntimeTypeBuilder(name, attr, parent, interfaces, m_module, packSize, typeSize, this); } } #endregion #region Define Field - public override FieldBuilder DefineField(string fieldName, Type type, Type[]? requiredCustomModifiers, + protected override FieldBuilder DefineFieldCore(string fieldName, Type type, Type[]? requiredCustomModifiers, Type[]? optionalCustomModifiers, FieldAttributes attributes) { lock (SyncRoot) { - return DefineFieldNoLock(fieldName, type, requiredCustomModifiers, optionalCustomModifiers, attributes); - } - } - - private FieldBuilder DefineFieldNoLock(string fieldName, Type type, Type[]? requiredCustomModifiers, - Type[]? optionalCustomModifiers, FieldAttributes attributes) - { - ThrowIfCreated(); + ThrowIfCreated(); - if (m_enumUnderlyingType == null && IsEnum) - { - if ((attributes & FieldAttributes.Static) == 0) + if (m_enumUnderlyingType == null && IsEnum) { - // remember the underlying type for enum type - m_enumUnderlyingType = type; + if ((attributes & FieldAttributes.Static) == 0) + { + // remember the underlying type for enum type + m_enumUnderlyingType = type; + } } - } - return new RuntimeFieldBuilder(this, fieldName, type, requiredCustomModifiers, optionalCustomModifiers, attributes); + return new RuntimeFieldBuilder(this, fieldName, type, requiredCustomModifiers, optionalCustomModifiers, attributes); + } } - public override FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) + protected override FieldBuilder DefineInitializedDataCore(string name, byte[] data, FieldAttributes attributes) { lock (SyncRoot) { - return DefineInitializedDataNoLock(name, data, attributes); - } - } - - private FieldBuilder DefineInitializedDataNoLock(string name, byte[] data, FieldAttributes attributes) - { - ArgumentNullException.ThrowIfNull(data); + // This method will define an initialized Data in .sdata. + // We will create a fake TypeDef to represent the data with size. This TypeDef + // will be the signature for the Field. - // This method will define an initialized Data in .sdata. - // We will create a fake TypeDef to represent the data with size. This TypeDef - // will be the signature for the Field. - - return DefineDataHelper(name, data, data.Length, attributes); + return DefineDataHelper(name, data, data.Length, attributes); + } } - public override FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) + protected override FieldBuilder DefineUninitializedDataCore(string name, int size, FieldAttributes attributes) { lock (SyncRoot) { - return DefineUninitializedDataNoLock(name, size, attributes); + // This method will define an uninitialized Data in .sdata. + // We will create a fake TypeDef to represent the data with size. This TypeDef + // will be the signature for the Field. + return DefineDataHelper(name, null, size, attributes); } } - private FieldBuilder DefineUninitializedDataNoLock(string name, int size, FieldAttributes attributes) - { - // This method will define an uninitialized Data in .sdata. - // We will create a fake TypeDef to represent the data with size. This TypeDef - // will be the signature for the Field. - return DefineDataHelper(name, null, size, attributes); - } - #endregion #region Define Properties and Events - public override PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, CallingConventions callingConvention, + protected override PropertyBuilder DefinePropertyCore(string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { lock (SyncRoot) { - return DefinePropertyNoLock(name, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, - parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); - } - } + SignatureHelper sigHelper; + byte[] sigBytes; - private PropertyBuilder DefinePropertyNoLock(string name, PropertyAttributes attributes, CallingConventions callingConvention, - Type returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, - Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) - { - ArgumentException.ThrowIfNullOrEmpty(name); - - SignatureHelper sigHelper; - byte[] sigBytes; - - ThrowIfCreated(); + ThrowIfCreated(); - // get the signature in SignatureHelper form - sigHelper = SignatureHelper.GetPropertySigHelper( - m_module, callingConvention, - returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, - parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); + // get the signature in SignatureHelper form + sigHelper = SignatureHelper.GetPropertySigHelper( + m_module, callingConvention, + returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, + parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); - // get the signature in byte form - sigBytes = sigHelper.InternalGetSignature(out int sigLength); + // get the signature in byte form + sigBytes = sigHelper.InternalGetSignature(out int sigLength); - RuntimeModuleBuilder module = m_module; + RuntimeModuleBuilder module = m_module; - int prToken = DefineProperty( - new QCallModule(ref module), - m_tdType, - name, - attributes, - sigBytes, - sigLength); - - // create the property builder now. - return new RuntimePropertyBuilder( - m_module, + int prToken = DefineProperty( + new QCallModule(ref module), + m_tdType, name, attributes, - returnType, - prToken, - this); - } + sigBytes, + sigLength); - public override EventBuilder DefineEvent(string name, EventAttributes attributes, Type eventtype) - { - lock (SyncRoot) - { - return DefineEventNoLock(name, attributes, eventtype); + // create the property builder now. + return new RuntimePropertyBuilder( + m_module, + name, + attributes, + returnType, + prToken, + this); } } - private EventBuilder DefineEventNoLock(string name, EventAttributes attributes, Type eventtype) + protected override EventBuilder DefineEventCore(string name, EventAttributes attributes, Type eventtype) { - ArgumentException.ThrowIfNullOrEmpty(name); - if (name[0] == '\0') - throw new ArgumentException(SR.Argument_IllegalName, nameof(name)); - - int tkType; - int evToken; + lock (SyncRoot) + { + int tkType; + int evToken; - ThrowIfCreated(); + ThrowIfCreated(); - tkType = m_module.GetTypeTokenInternal(eventtype); + tkType = m_module.GetTypeTokenInternal(eventtype); - // Internal helpers to define property records - RuntimeModuleBuilder module = m_module; - evToken = DefineEvent( - new QCallModule(ref module), - m_tdType, - name, - attributes, - tkType); - - // create the property builder now. - return new RuntimeEventBuilder( - m_module, + // Internal helpers to define property records + RuntimeModuleBuilder module = m_module; + evToken = DefineEvent( + new QCallModule(ref module), + m_tdType, name, attributes, - // tkType, - this, - evToken); + tkType); + + // create the property builder now. + return new RuntimeEventBuilder( + m_module, + name, + attributes, + // tkType, + this, + evToken); + } } #endregion @@ -1679,7 +1592,7 @@ private EventBuilder DefineEventNoLock(string name, EventAttributes attributes, #region Create Type [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public override TypeInfo CreateTypeInfo() + protected override TypeInfo CreateTypeInfoCore() { TypeInfo? typeInfo = CreateTypeInfoImpl(); Debug.Assert(m_isHiddenGlobalType || typeInfo != null); @@ -1889,11 +1802,11 @@ public override TypeInfo CreateTypeInfo() #endregion #region Misc - public override int Size => m_iTypeSize; + protected override int SizeCore => m_iTypeSize; - public override PackingSize PackingSize => m_iPackingSize; + protected override PackingSize PackingSizeCore => m_iPackingSize; - public override void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) + protected override void SetParentCore([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) { ThrowIfCreated(); @@ -1921,10 +1834,8 @@ public override void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMe } } - public override void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) + protected override void AddInterfaceImplementationCore([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) { - ArgumentNullException.ThrowIfNull(interfaceType); - ThrowIfCreated(); int tkInterface = m_module.GetTypeTokenInternal(interfaceType); @@ -1945,18 +1856,13 @@ internal int TypeToken } } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - ArgumentNullException.ThrowIfNull(con); - ArgumentNullException.ThrowIfNull(binaryAttribute); - - DefineCustomAttribute(m_module, m_tdType, m_module.GetConstructorToken(con), binaryAttribute); + DefineCustomAttribute(m_module, m_tdType, m_module.GetMetadataToken(con), binaryAttribute); } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); - customBuilder.CreateCustomAttribute(m_module, m_tdType); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs index 3a4afb7c5ac94..a1eda63c71f0d 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs @@ -289,7 +289,7 @@ private void AddOneArgTypeHelper(Type clsArgument, Type[]? requiredCustomModifie AddElementType(CorElementType.ELEMENT_TYPE_CMOD_OPT); - int token = m_module!.GetTypeToken(t); + int token = m_module!.GetMetadataToken(t); Debug.Assert(!MetadataToken.IsNullToken(token)); AddToken(token); } @@ -311,7 +311,7 @@ private void AddOneArgTypeHelper(Type clsArgument, Type[]? requiredCustomModifie AddElementType(CorElementType.ELEMENT_TYPE_CMOD_REQD); - int token = m_module!.GetTypeToken(t); + int token = m_module!.GetMetadataToken(t); Debug.Assert(!MetadataToken.IsNullToken(token)); AddToken(token); } @@ -355,7 +355,7 @@ private void AddOneArgTypeHelperWorker(Type clsArgument, bool lastWasGenericInst } else { - tkType = m_module!.GetTypeToken(clsArgument); + tkType = m_module!.GetMetadataToken(clsArgument); } if (clsArgument.IsValueType) @@ -378,7 +378,7 @@ private void AddOneArgTypeHelperWorker(Type clsArgument, bool lastWasGenericInst } else { - tkType = m_module!.GetTypeToken(clsArgument); + tkType = m_module!.GetMetadataToken(clsArgument); } if (clsArgument.IsValueType) @@ -452,11 +452,11 @@ private void AddOneArgTypeHelperWorker(Type clsArgument, bool lastWasGenericInst } else if (clsArgument.IsValueType) { - InternalAddTypeToken(m_module.GetTypeToken(clsArgument), CorElementType.ELEMENT_TYPE_VALUETYPE); + InternalAddTypeToken(m_module.GetMetadataToken(clsArgument), CorElementType.ELEMENT_TYPE_VALUETYPE); } else { - InternalAddTypeToken(m_module.GetTypeToken(clsArgument), CorElementType.ELEMENT_TYPE_CLASS); + InternalAddTypeToken(m_module.GetMetadataToken(clsArgument), CorElementType.ELEMENT_TYPE_CLASS); } } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index db190d869d226..400ac45e1cd22 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -9,20 +9,51 @@ namespace System.Reflection.Emit { public abstract partial class AssemblyBuilder : Assembly { - protected AssemblyBuilder() + private protected AssemblyBuilder() { } - // The following methods are abstract in reference assembly. We keep them as virtual to maintain backward compatibility. - // They should be overriden in concrete AssemblyBuilder implementations. They should be only used for non-virtual calls - // on the original non-abstract AssemblyBuilder. The implementation of these methods simply forwards to the overriden virtual method - // with actual implementation. + public ModuleBuilder DefineDynamicModule(string name) + { + ArgumentException.ThrowIfNullOrEmpty(name); + + if (name[0] == '\0') + { + throw new ArgumentException(SR.Argument_InvalidName, nameof(name)); + } + + return DefineDynamicModuleCore(name); + } + + protected abstract ModuleBuilder DefineDynamicModuleCore(string name); + + public ModuleBuilder? GetDynamicModule(string name) + { + ArgumentException.ThrowIfNullOrEmpty(name); + + return GetDynamicModuleCore(name); + } + + protected abstract ModuleBuilder? GetDynamicModuleCore(string name); + + public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + { + ArgumentNullException.ThrowIfNull(con); + ArgumentNullException.ThrowIfNull(binaryAttribute); + + SetCustomAttributeCore(con, binaryAttribute); + } + + protected abstract void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute); - public virtual ModuleBuilder DefineDynamicModule(string name) => DefineDynamicModule(name); - public virtual ModuleBuilder? GetDynamicModule(string name) => GetDynamicModule(name); + public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + { + ArgumentNullException.ThrowIfNull(customBuilder); + + SetCustomAttributeCore(customBuilder); + } - public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) => SetCustomAttribute(con, binaryAttribute); - public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) => SetCustomAttribute(customBuilder); + protected abstract void SetCustomAttributeCore(CustomAttributeBuilder customBuilder); [System.ObsoleteAttribute("Assembly.CodeBase and Assembly.EscapedCodeBase are only included for .NET Framework compatibility. Use Assembly.Location instead.", DiagnosticId = "SYSLIB0012", UrlFormat = "https://aka.ms/dotnet-warnings/{0}")] [RequiresAssemblyFiles(ThrowingMessageInRAF)] diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs index 19ba0012c8a15..4028a826405c6 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs @@ -5,32 +5,44 @@ namespace System.Reflection.Emit { public abstract class ConstructorBuilder : ConstructorInfo { - protected ConstructorBuilder() + private protected ConstructorBuilder() { } - public virtual bool InitLocals + public bool InitLocals { - get => InitLocals; - set { var _this = this; _this.InitLocals = value; } + get => InitLocalsCore; + set { InitLocalsCore = value; } } - public virtual ParameterBuilder DefineParameter(int iSequence, ParameterAttributes attributes, string strParamName) - => DefineParameter(iSequence, attributes, strParamName); + protected abstract bool InitLocalsCore { get; set; } - public virtual ILGenerator GetILGenerator() - => GetILGenerator(); + public ParameterBuilder DefineParameter(int iSequence, ParameterAttributes attributes, string strParamName) + => DefineParameterCore(iSequence, attributes, strParamName); - public virtual ILGenerator GetILGenerator(int streamSize) - => GetILGenerator(streamSize); + protected abstract ParameterBuilder DefineParameterCore(int iSequence, ParameterAttributes attributes, string strParamName); - public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - => SetCustomAttribute(con, binaryAttribute); + public ILGenerator GetILGenerator() + => GetILGeneratorCore(64); - public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) - => SetCustomAttribute(customBuilder); + public ILGenerator GetILGenerator(int streamSize) + => GetILGeneratorCore(streamSize); - public virtual void SetImplementationFlags(MethodImplAttributes attributes) - => SetImplementationFlags(attributes); + protected abstract ILGenerator GetILGeneratorCore(int streamSize); + + public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + => SetCustomAttributeCore(con, binaryAttribute); + + protected abstract void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute); + + public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + => SetCustomAttributeCore(customBuilder); + + protected abstract void SetCustomAttributeCore(CustomAttributeBuilder customBuilder); + + public void SetImplementationFlags(MethodImplAttributes attributes) + => SetImplementationFlagsCore(attributes); + + protected abstract void SetImplementationFlagsCore(MethodImplAttributes attributes); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs index 99bb2c5472ec5..b387e788e6117 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs @@ -7,28 +7,39 @@ namespace System.Reflection.Emit { public abstract partial class EnumBuilder : TypeInfo { - protected EnumBuilder() + private protected EnumBuilder() { } - public virtual FieldBuilder UnderlyingField - => UnderlyingField; + public FieldBuilder UnderlyingField + => UnderlyingFieldCore; + + protected abstract FieldBuilder UnderlyingFieldCore { get; } [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] public Type CreateType() - => CreateTypeInfo(); + => CreateTypeInfoCore(); + + [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] + public TypeInfo CreateTypeInfo() + => CreateTypeInfoCore(); [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public virtual TypeInfo CreateTypeInfo() - => CreateTypeInfo(); + protected abstract TypeInfo CreateTypeInfoCore(); + + public FieldBuilder DefineLiteral(string literalName, object? literalValue) + => DefineLiteralCore(literalName, literalValue); + + protected abstract FieldBuilder DefineLiteralCore(string literalName, object? literalValue); + + public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + => SetCustomAttributeCore(con, binaryAttribute); - public virtual FieldBuilder DefineLiteral(string literalName, object literalValue) - => DefineLiteral(literalName, literalValue); + protected abstract void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute); - public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - => SetCustomAttribute(con, binaryAttribute); + public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + => SetCustomAttributeCore(customBuilder); - public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) - => SetCustomAttribute(customBuilder); + protected abstract void SetCustomAttributeCore(CustomAttributeBuilder customBuilder); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs index 87d5c94a54170..a5b649db3f59e 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs @@ -5,26 +5,47 @@ namespace System.Reflection.Emit { public abstract class EventBuilder { - protected EventBuilder() + private protected EventBuilder() { } - public virtual void AddOtherMethod(MethodBuilder mdBuilder) - => AddOtherMethod(mdBuilder); + public void AddOtherMethod(MethodBuilder mdBuilder) + => AddOtherMethodCore(mdBuilder); - public virtual void SetAddOnMethod(MethodBuilder mdBuilder) - => SetAddOnMethod(mdBuilder); + protected abstract void AddOtherMethodCore(MethodBuilder mdBuilder); - public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - => SetCustomAttribute(con, binaryAttribute); + public void SetAddOnMethod(MethodBuilder mdBuilder) + => SetAddOnMethodCore(mdBuilder); - public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) - => SetCustomAttribute(customBuilder); + protected abstract void SetAddOnMethodCore(MethodBuilder mdBuilder); - public virtual void SetRaiseMethod(MethodBuilder mdBuilder) - => SetRaiseMethod(mdBuilder); + public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + { + ArgumentNullException.ThrowIfNull(con); + ArgumentNullException.ThrowIfNull(binaryAttribute); + + SetCustomAttributeCore(con, binaryAttribute); + } + + protected abstract void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute); + + public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + { + ArgumentNullException.ThrowIfNull(customBuilder); + + SetCustomAttributeCore(customBuilder); + } + + protected abstract void SetCustomAttributeCore(CustomAttributeBuilder customBuilder); + + public void SetRaiseMethod(MethodBuilder mdBuilder) + => SetRaiseMethodCore(mdBuilder); + + protected abstract void SetRaiseMethodCore(MethodBuilder mdBuilder); + + public void SetRemoveOnMethod(MethodBuilder mdBuilder) + => SetRemoveOnMethodCore(mdBuilder); - public virtual void SetRemoveOnMethod(MethodBuilder mdBuilder) - => SetRemoveOnMethod(mdBuilder); + protected abstract void SetRemoveOnMethodCore(MethodBuilder mdBuilder); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs index 1e02ac734de71..2e87bb488bd00 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs @@ -5,20 +5,37 @@ namespace System.Reflection.Emit { public abstract class FieldBuilder : FieldInfo { - protected FieldBuilder() + private protected FieldBuilder() { } - public virtual void SetConstant(object? defaultValue) - => SetConstant(defaultValue); + public void SetConstant(object? defaultValue) + => SetConstantCore(defaultValue); - public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - => SetCustomAttribute(con, binaryAttribute); + protected abstract void SetConstantCore(object? defaultValue); - public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) - => SetCustomAttribute(customBuilder); + public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + { + ArgumentNullException.ThrowIfNull(con); + ArgumentNullException.ThrowIfNull(binaryAttribute); + + SetCustomAttributeCore(con, binaryAttribute); + } + + protected abstract void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute); + + public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + { + ArgumentNullException.ThrowIfNull(customBuilder); + + SetCustomAttributeCore(customBuilder); + } + + protected abstract void SetCustomAttributeCore(CustomAttributeBuilder customBuilder); + + public void SetOffset(int iOffset) + => SetOffsetCore(iOffset); - public virtual void SetOffset(int iOffset) - => SetOffset(iOffset); + protected abstract void SetOffsetCore(int iOffset); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs index 20821981df1e2..1dfb9f2097c92 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs @@ -7,18 +7,33 @@ namespace System.Reflection.Emit { public abstract partial class GenericTypeParameterBuilder : TypeInfo { - protected GenericTypeParameterBuilder() + private protected GenericTypeParameterBuilder() { } - public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) => SetCustomAttribute(con, binaryAttribute); + public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) => SetCustomAttributeCore(con, binaryAttribute); - public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) => SetCustomAttribute(customBuilder); + protected abstract void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute); - public virtual void SetBaseTypeConstraint([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint) => SetBaseTypeConstraint(baseTypeConstraint); + public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + { + ArgumentNullException.ThrowIfNull(customBuilder); + + SetCustomAttributeCore(customBuilder); + } + + protected abstract void SetCustomAttributeCore(CustomAttributeBuilder customBuilder); + + public void SetBaseTypeConstraint([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint) => SetBaseTypeConstraintCore(baseTypeConstraint); + + protected abstract void SetBaseTypeConstraintCore([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint); + + public void SetInterfaceConstraints(params Type[]? interfaceConstraints) => SetInterfaceConstraintsCore(interfaceConstraints); + + protected abstract void SetInterfaceConstraintsCore(params Type[]? interfaceConstraints); - public virtual void SetInterfaceConstraints(params Type[]? interfaceConstraints) => SetInterfaceConstraints(interfaceConstraints); + public void SetGenericParameterAttributes(GenericParameterAttributes genericParameterAttributes) => SetGenericParameterAttributesCore(genericParameterAttributes); - public virtual void SetGenericParameterAttributes(GenericParameterAttributes genericParameterAttributes) => SetGenericParameterAttributes(genericParameterAttributes); + protected abstract void SetGenericParameterAttributesCore(GenericParameterAttributes genericParameterAttributes); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs index 9ee8d9a3f54a7..6b84e067fd036 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs @@ -7,46 +7,82 @@ namespace System.Reflection.Emit { public abstract class MethodBuilder : MethodInfo { - protected MethodBuilder() + private protected MethodBuilder() { } - public virtual bool InitLocals + public bool InitLocals { - get => InitLocals; - set { var _this = this; _this.InitLocals = value; } + get => InitLocalsCore; + set { InitLocalsCore = value; } } - public virtual GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) - => DefineGenericParameters(names); + protected abstract bool InitLocalsCore { get; set; } - public virtual ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string strParamName) - => DefineParameter(position, attributes, strParamName); + public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + { + ArgumentNullException.ThrowIfNull(names); + + if (names.Length == 0) + throw new ArgumentException(SR.Arg_EmptyArray, nameof(names)); + + return DefineGenericParametersCore(names); + } + + protected abstract GenericTypeParameterBuilder[] DefineGenericParametersCore(params string[] names); + + public ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string? strParamName) + { + ArgumentOutOfRangeException.ThrowIfNegative(position); + + return DefineParameterCore(position, attributes, strParamName); + } + + protected abstract ParameterBuilder DefineParameterCore(int position, ParameterAttributes attributes, string? strParamName); + + public ILGenerator GetILGenerator() + => GetILGenerator(64); - public virtual ILGenerator GetILGenerator() - => GetILGenerator(); + public ILGenerator GetILGenerator(int size) + => GetILGeneratorCore(size); + + protected abstract ILGenerator GetILGeneratorCore(int size); + + public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + { + ArgumentNullException.ThrowIfNull(con); + ArgumentNullException.ThrowIfNull(binaryAttribute); + + SetCustomAttributeCore(con, binaryAttribute); + } + + protected abstract void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute); + + public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + { + ArgumentNullException.ThrowIfNull(customBuilder); + + SetCustomAttributeCore(customBuilder); + } - public virtual ILGenerator GetILGenerator(int size) - => GetILGenerator(size); + protected abstract void SetCustomAttributeCore(CustomAttributeBuilder customBuilder); - public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - => SetCustomAttribute(con, binaryAttribute); + public void SetImplementationFlags(MethodImplAttributes attributes) => SetImplementationFlagsCore(attributes); - public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) - => SetCustomAttribute(customBuilder); + protected abstract void SetImplementationFlagsCore(MethodImplAttributes attributes); - public virtual void SetImplementationFlags(MethodImplAttributes attributes) - => SetImplementationFlags(attributes); + public void SetParameters(params Type[] parameterTypes) + => SetSignature(null, null, null, parameterTypes, null, null); - public virtual void SetParameters(params Type[] parameterTypes) - => SetParameters(parameterTypes); + public void SetReturnType(Type? returnType) + => SetSignature(returnType, null, null, null, null, null); - public virtual void SetReturnType(Type returnType) - => SetReturnType(returnType); + public void SetSignature(Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, + Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) + => SetSignatureCore(returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, + parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); - public virtual void SetSignature(Type returnType, Type[] returnTypeRequiredCustomModifiers, Type[] returnTypeOptionalCustomModifiers, - Type[] parameterTypes, Type[][] parameterTypeRequiredCustomModifiers, Type[][] parameterTypeOptionalCustomModifiers) - => SetSignature(returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, - parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); + protected abstract void SetSignatureCore(Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, + Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index d183b67e83084..f31afdd70c3a6 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -8,17 +8,21 @@ namespace System.Reflection.Emit { public abstract class ModuleBuilder : Module { - protected ModuleBuilder() + private protected ModuleBuilder() { } // The following virtual methods are abstract in reference assembly. We keep them as virtual to maintain backward compatibility. - public virtual void CreateGlobalFunctions() - => CreateGlobalFunctions(); + public void CreateGlobalFunctions() + => CreateGlobalFunctionsCore(); - public virtual EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type underlyingType) - => DefineEnum(name, visibility, underlyingType); + protected abstract void CreateGlobalFunctionsCore(); + + public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type underlyingType) + => DefineEnumCore(name, visibility, underlyingType); + + protected abstract EnumBuilder DefineEnumCore(string name, TypeAttributes visibility, Type underlyingType); public MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, Type? returnType, Type[]? parameterTypes) => DefineGlobalMethod(name, attributes, CallingConventions.Standard, returnType, null, null, parameterTypes, null, null); @@ -27,15 +31,25 @@ public MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes Type? returnType, Type[]? parameterTypes) => DefineGlobalMethod(name, attributes, callingConvention, returnType, null, null, parameterTypes, null, null); - public virtual MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, + public MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? requiredReturnTypeCustomModifiers, Type[]? optionalReturnTypeCustomModifiers, Type[]? parameterTypes, Type[][]? requiredParameterTypeCustomModifiers, Type[][]? optionalParameterTypeCustomModifiers) - => DefineGlobalMethod(name, attributes, callingConvention, - returnType, requiredReturnTypeCustomModifiers, optionalReturnTypeCustomModifiers, - parameterTypes, requiredParameterTypeCustomModifiers, optionalParameterTypeCustomModifiers); + { + ArgumentException.ThrowIfNullOrEmpty(name); + + return DefineGlobalMethodCore(name, attributes, callingConvention, + returnType, requiredReturnTypeCustomModifiers, optionalReturnTypeCustomModifiers, + parameterTypes, requiredParameterTypeCustomModifiers, optionalParameterTypeCustomModifiers); + } + + protected abstract MethodBuilder DefineGlobalMethodCore(string name, MethodAttributes attributes, CallingConventions callingConvention, + Type? returnType, Type[]? requiredReturnTypeCustomModifiers, Type[]? optionalReturnTypeCustomModifiers, + Type[]? parameterTypes, Type[][]? requiredParameterTypeCustomModifiers, Type[][]? optionalParameterTypeCustomModifiers); + + public FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) + => DefineInitializedDataCore(name, data, attributes); - public virtual FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) - => DefineInitializedData(name, data, attributes); + protected abstract FieldBuilder DefineInitializedDataCore(string name, byte[] data, FieldAttributes attributes); [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] public MethodBuilder DefinePInvokeMethod(string name, string dllName, @@ -45,12 +59,17 @@ public MethodBuilder DefinePInvokeMethod(string name, string dllName, returnType, parameterTypes, nativeCallConv, nativeCharSet); [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public virtual MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, + public MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet) - => DefinePInvokeMethod(name, dllName, entryName, attributes, callingConvention, + => DefinePInvokeMethodCore(name, dllName, entryName, attributes, callingConvention, returnType, parameterTypes, nativeCallConv, nativeCharSet); + [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] + protected abstract MethodBuilder DefinePInvokeMethodCore(string name, string dllName, string entryName, + MethodAttributes attributes, CallingConventions callingConvention, + Type? returnType, Type[]? parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet); + public TypeBuilder DefineType(string name) => DefineType(name, TypeAttributes.NotPublic, null, null); @@ -61,9 +80,9 @@ public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) => DefineType(name, attr, parent, null); - public virtual TypeBuilder DefineType(string name, TypeAttributes attr, + public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) - => DefineType(name, attr, parent, interfaces); + => DefineTypeCore(name, attr, parent, interfaces, PackingSize.Unspecified, TypeBuilder.UnspecifiedTypeSize); public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, int typesize) @@ -73,28 +92,54 @@ public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packsize) => DefineType(name, attr, parent, packsize, TypeBuilder.UnspecifiedTypeSize); - public virtual TypeBuilder DefineType(string name, TypeAttributes attr, + public TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packingSize, int typesize) - => DefineType(name, attr, parent, packingSize, typesize); + => DefineTypeCore(name, attr, parent, null, packingSize, typesize); - public virtual FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) - => DefineUninitializedData(name, size, attributes); + protected abstract TypeBuilder DefineTypeCore(string name, TypeAttributes attr, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces, PackingSize packingSize, int typesize); - public virtual MethodInfo GetArrayMethod(Type arrayClass, string methodName, CallingConventions callingConvention, + public FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) + => DefineUninitializedDataCore(name, size, attributes); + + protected abstract FieldBuilder DefineUninitializedDataCore(string name, int size, FieldAttributes attributes); + + public MethodInfo GetArrayMethod(Type arrayClass, string methodName, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes) - => GetArrayMethod(arrayClass, methodName, callingConvention, returnType, parameterTypes); + { + ArgumentNullException.ThrowIfNull(arrayClass); + ArgumentException.ThrowIfNullOrEmpty(methodName); + + return GetArrayMethodCore(arrayClass, methodName, callingConvention, returnType, parameterTypes); + } + + protected abstract MethodInfo GetArrayMethodCore(Type arrayClass, string methodName, + CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes); + + public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + { + ArgumentNullException.ThrowIfNull(con); + ArgumentNullException.ThrowIfNull(binaryAttribute); + + SetCustomAttributeCore(con, binaryAttribute); + } + + protected abstract void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute); - public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - => SetCustomAttribute(con, binaryAttribute); + public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + { + ArgumentNullException.ThrowIfNull(customBuilder); + + SetCustomAttributeCore(customBuilder); + } - public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) - => SetCustomAttribute(customBuilder); + protected abstract void SetCustomAttributeCore(CustomAttributeBuilder customBuilder); - public abstract int GetTypeToken(Type type); - public abstract int GetFieldToken(FieldInfo field); - public abstract int GetMethodToken(MethodInfo method); - public abstract int GetConstructorToken(ConstructorInfo contsuctor); - public abstract int GetSignatureToken(SignatureHelper sigHelper); - public abstract int GetStringConstant(string str); + public abstract int GetMetadataToken(Type type); + public abstract int GetMetadataToken(FieldInfo field); + public abstract int GetMetadataToken(MethodInfo method); + public abstract int GetMetadataToken(ConstructorInfo contsuctor); + public abstract int GetMetadataToken(SignatureHelper sigHelper); + public abstract int GetMetadataToken(string str); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs index 638601cce7276..9a9c14509695b 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs @@ -5,26 +5,46 @@ namespace System.Reflection.Emit { public abstract class PropertyBuilder : PropertyInfo { - protected PropertyBuilder() + private protected PropertyBuilder() { } - public virtual void AddOtherMethod(MethodBuilder mdBuilder) - => AddOtherMethod(mdBuilder); + public void AddOtherMethod(MethodBuilder mdBuilder) + => AddOtherMethodCore(mdBuilder); - public virtual void SetConstant(object defaultValue) - => SetConstant(defaultValue); + protected abstract void AddOtherMethodCore(MethodBuilder mdBuilder); - public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - => SetCustomAttribute(con, binaryAttribute); + public void SetConstant(object? defaultValue) + => SetConstantCore(defaultValue); - public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) - => SetCustomAttribute(customBuilder); + protected abstract void SetConstantCore(object? defaultValue); - public virtual void SetGetMethod(MethodBuilder mdBuilder) - => SetGetMethod(mdBuilder); + public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + { + ArgumentNullException.ThrowIfNull(con); + ArgumentNullException.ThrowIfNull(binaryAttribute); + + SetCustomAttributeCore(con, binaryAttribute); + } + + protected abstract void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute); + + public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + { + ArgumentNullException.ThrowIfNull(customBuilder); + SetCustomAttributeCore(customBuilder); + } + + protected abstract void SetCustomAttributeCore(CustomAttributeBuilder customBuilder); + + public void SetGetMethod(MethodBuilder mdBuilder) + => SetGetMethodCore(mdBuilder); + + protected abstract void SetGetMethodCore(MethodBuilder mdBuilder); + + public void SetSetMethod(MethodBuilder mdBuilder) + => SetSetMethodCore(mdBuilder); - public virtual void SetSetMethod(MethodBuilder mdBuilder) - => SetSetMethod(mdBuilder); + protected abstract void SetSetMethodCore(MethodBuilder mdBuilder); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index 74fecbaa2fb1d..f1fda30a8e54c 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -3,59 +3,104 @@ using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; +using System.Runtime.Intrinsics.Arm; namespace System.Reflection.Emit { public abstract partial class TypeBuilder : TypeInfo { - protected TypeBuilder() + private protected TypeBuilder() { } public const int UnspecifiedTypeSize = 0; - public virtual PackingSize PackingSize - => PackingSize; + public PackingSize PackingSize + => PackingSizeCore; - public virtual int Size - => Size; + protected abstract PackingSize PackingSizeCore { get; } - public virtual void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) - => AddInterfaceImplementation(interfaceType); + public int Size + => SizeCore; + + protected abstract int SizeCore { get; } + + public void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) + { + ArgumentNullException.ThrowIfNull(interfaceType); + + AddInterfaceImplementationCore(interfaceType); + } + + protected abstract void AddInterfaceImplementationCore([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType); [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] public Type CreateType() => CreateTypeInfo(); [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public virtual TypeInfo CreateTypeInfo() - => CreateTypeInfo(); + public TypeInfo CreateTypeInfo() + => CreateTypeInfoCore(); + + [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] + protected abstract TypeInfo CreateTypeInfoCore(); public ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes) => DefineConstructor(attributes, callingConvention, parameterTypes, null, null); - public virtual ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, + public ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers) - => DefineConstructor(attributes, callingConvention, parameterTypes, requiredCustomModifiers, optionalCustomModifiers); + => DefineConstructorCore(attributes, callingConvention, parameterTypes, requiredCustomModifiers, optionalCustomModifiers); - public virtual ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes) - => DefineDefaultConstructor(attributes); + protected abstract ConstructorBuilder DefineConstructorCore(MethodAttributes attributes, CallingConventions callingConvention, + Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers); - public virtual EventBuilder DefineEvent(string name, EventAttributes attributes, Type eventtype) - => DefineEvent(name, attributes, eventtype); + public ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes) + => DefineDefaultConstructorCore(attributes); + + protected abstract ConstructorBuilder DefineDefaultConstructorCore(MethodAttributes attributes); + + public EventBuilder DefineEvent(string name, EventAttributes attributes, Type eventtype) + { + ArgumentException.ThrowIfNullOrEmpty(name); + + if (name[0] == '\0') + throw new ArgumentException(SR.Argument_IllegalName, nameof(name)); + + return DefineEventCore(name, attributes, eventtype); + } + + protected abstract EventBuilder DefineEventCore(string name, EventAttributes attributes, Type eventtype); public FieldBuilder DefineField(string fieldName, Type type, FieldAttributes attributes) => DefineField(fieldName, type, null, null, attributes); - public virtual FieldBuilder DefineField(string fieldName, Type type, Type[]? requiredCustomModifiers, Type[]? optionalCustomModifiers, + public FieldBuilder DefineField(string fieldName, Type type, Type[]? requiredCustomModifiers, Type[]? optionalCustomModifiers, FieldAttributes attributes) - => DefineField(fieldName, type, requiredCustomModifiers, optionalCustomModifiers, attributes); + => DefineFieldCore(fieldName, type, requiredCustomModifiers, optionalCustomModifiers, attributes); - public virtual GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) - => DefineGenericParameters(names); + protected abstract FieldBuilder DefineFieldCore(string fieldName, Type type, Type[]? requiredCustomModifiers, Type[]? optionalCustomModifiers, + FieldAttributes attributes); - public virtual FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) - => DefineInitializedData(name, data, attributes); + public GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + { + ArgumentNullException.ThrowIfNull(names); + if (names.Length == 0) + throw new ArgumentException(SR.Arg_EmptyArray, nameof(names)); + + return DefineGenericParametersCore(names); + } + + protected abstract GenericTypeParameterBuilder[] DefineGenericParametersCore(params string[] names); + + public FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) + { + ArgumentNullException.ThrowIfNull(data); + + return DefineInitializedDataCore(name, data, attributes); + } + + protected abstract FieldBuilder DefineInitializedDataCore(string name, byte[] data, FieldAttributes attributes); public MethodBuilder DefineMethod(string name, MethodAttributes attributes) => DefineMethod(name, attributes, CallingConventions.Standard, null, null); @@ -67,17 +112,41 @@ public MethodBuilder DefineMethod(string name, MethodAttributes attributes, Call Type? returnType, Type[]? parameterTypes) => DefineMethod(name, attributes, callingConvention, returnType, null, null, parameterTypes, null, null); - public MethodBuilder DefineMethod(string name, MethodAttributes attributes, Type returnType, Type[] parameterTypes) + public MethodBuilder DefineMethod(string name, MethodAttributes attributes, Type? returnType, Type[]? parameterTypes) => DefineMethod(name, attributes, CallingConventions.Standard, returnType, parameterTypes); - public virtual MethodBuilder DefineMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, + public MethodBuilder DefineMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) - => DefineMethod(name, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, + { + ArgumentException.ThrowIfNullOrEmpty(name); + + if (parameterTypes != null) + { + if (parameterTypeOptionalCustomModifiers != null && parameterTypeOptionalCustomModifiers.Length != parameterTypes.Length) + throw new ArgumentException(SR.Format(SR.Argument_MismatchedArrays, nameof(parameterTypeOptionalCustomModifiers), nameof(parameterTypes))); + + if (parameterTypeRequiredCustomModifiers != null && parameterTypeRequiredCustomModifiers.Length != parameterTypes.Length) + throw new ArgumentException(SR.Format(SR.Argument_MismatchedArrays, nameof(parameterTypeRequiredCustomModifiers), nameof(parameterTypes))); + } + + return DefineMethodCore(name, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); + } + + protected abstract MethodBuilder DefineMethodCore(string name, MethodAttributes attributes, CallingConventions callingConvention, + Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, + Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers); - public virtual void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) - => DefineMethodOverride(methodInfoBody, methodInfoDeclaration); + public void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) + { + ArgumentNullException.ThrowIfNull(methodInfoBody); + ArgumentNullException.ThrowIfNull(methodInfoDeclaration); + + DefineMethodOverrideCore(methodInfoBody, methodInfoDeclaration); + } + + protected abstract void DefineMethodOverrideCore(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration); public TypeBuilder DefineNestedType(string name) => DefineNestedType(name, TypeAttributes.NestedPrivate, null, null); @@ -89,9 +158,12 @@ public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) => DefineNestedType(name, attr, parent, null); - public virtual TypeBuilder DefineNestedType(string name, TypeAttributes attr, + public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) - => DefineNestedType(name, attr, parent, interfaces); + => DefineNestedTypeCore(name, attr, parent, interfaces, PackingSize.Unspecified, UnspecifiedTypeSize); + + protected abstract TypeBuilder DefineNestedTypeCore(string name, TypeAttributes attr, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces, PackingSize packSize, int typeSize); public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, int typeSize) @@ -99,11 +171,11 @@ public TypeBuilder DefineNestedType(string name, TypeAttributes attr, public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packSize) - => DefineNestedType(name, attr, parent, packSize, TypeBuilder.UnspecifiedTypeSize); + => DefineNestedType(name, attr, parent, packSize, UnspecifiedTypeSize); - public virtual TypeBuilder DefineNestedType(string name, TypeAttributes attr, + public TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packSize, int typeSize) - => DefineNestedType(name, attr, parent, packSize, typeSize); + => DefineNestedTypeCore(name, attr, parent, null, packSize, typeSize); [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] public MethodBuilder DefinePInvokeMethod(string name, string dllName, MethodAttributes attributes, @@ -121,15 +193,28 @@ public MethodBuilder DefinePInvokeMethod(string name, string dllName, string ent parameterTypes, null, null, nativeCallConv, nativeCharSet); [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public virtual MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, + public MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers, CallingConvention nativeCallConv, CharSet nativeCharSet) - => DefinePInvokeMethod(name, dllName, entryName, attributes, callingConvention, + { + ArgumentException.ThrowIfNullOrEmpty(name); + ArgumentException.ThrowIfNullOrEmpty(dllName); + ArgumentException.ThrowIfNullOrEmpty(entryName); + + return DefinePInvokeMethodCore(name, dllName, entryName, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers, nativeCallConv, nativeCharSet); + } + + [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] + protected abstract MethodBuilder DefinePInvokeMethodCore(string name, string dllName, string entryName, MethodAttributes attributes, + CallingConventions callingConvention, + Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, + Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers, + CallingConvention nativeCallConv, CharSet nativeCharSet); public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, Type returnType, Type[]? parameterTypes) => DefineProperty(name, attributes, returnType, null, null, parameterTypes, null, null); @@ -145,29 +230,58 @@ public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); - public virtual PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, CallingConventions callingConvention, + public PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) - => DefineProperty(name, attributes, callingConvention, + { + ArgumentException.ThrowIfNullOrEmpty(name); + + return DefinePropertyCore(name, attributes, callingConvention, returnType, returnTypeRequiredCustomModifiers, returnTypeOptionalCustomModifiers, parameterTypes, parameterTypeRequiredCustomModifiers, parameterTypeOptionalCustomModifiers); + } + + protected abstract PropertyBuilder DefinePropertyCore(string name, PropertyAttributes attributes, CallingConventions callingConvention, + Type returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, + Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers); + + public ConstructorBuilder DefineTypeInitializer() + => DefineTypeInitializerCore(); + + protected abstract ConstructorBuilder DefineTypeInitializerCore(); + + public FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) + => DefineUninitializedDataCore(name, size, attributes); + + protected abstract FieldBuilder DefineUninitializedDataCore(string name, int size, FieldAttributes attributes); - public virtual ConstructorBuilder DefineTypeInitializer() - => DefineTypeInitializer(); + public bool IsCreated() + => IsCreatedCore(); - public virtual FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) - => DefineUninitializedData(name, size, attributes); + protected abstract bool IsCreatedCore(); - public virtual bool IsCreated() - => IsCreated(); + public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + { + ArgumentNullException.ThrowIfNull(con); + ArgumentNullException.ThrowIfNull(binaryAttribute); + + SetCustomAttributeCore(con, binaryAttribute); + } + + protected abstract void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute); + + public void SetCustomAttribute(CustomAttributeBuilder customBuilder) + { + ArgumentNullException.ThrowIfNull(customBuilder); + + SetCustomAttributeCore(customBuilder); + } - public virtual void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) - => SetCustomAttribute(con, binaryAttribute); + protected abstract void SetCustomAttributeCore(CustomAttributeBuilder customBuilder); - public virtual void SetCustomAttribute(CustomAttributeBuilder customBuilder) - => SetCustomAttribute(customBuilder); + public void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) + => SetParentCore(parent); - public virtual void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type parent) - => SetParent(parent); + protected abstract void SetParentCore([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent); } } diff --git a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs index 4c00f9665e457..feb9d30f4bac8 100644 --- a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs +++ b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs @@ -8,7 +8,7 @@ namespace System.Reflection.Emit { public abstract partial class AssemblyBuilder : System.Reflection.Assembly { - protected AssemblyBuilder() { } + private protected AssemblyBuilder() { } [System.ObsoleteAttribute("Assembly.CodeBase and Assembly.EscapedCodeBase are only included for .NET Framework compatibility. Use Assembly.Location instead.", DiagnosticId = "SYSLIB0012", UrlFormat = "https://aka.ms/dotnet-warnings/{0}")] [System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute("This member throws an exception for assemblies embedded in a single-file app")] public override string? CodeBase { get { throw null; } } @@ -24,12 +24,14 @@ protected AssemblyBuilder() { } public static System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Defining a dynamic assembly requires dynamic code.")] public static System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Collections.Generic.IEnumerable? assemblyAttributes) { throw null; } - public abstract System.Reflection.Emit.ModuleBuilder DefineDynamicModule(string name); + public System.Reflection.Emit.ModuleBuilder DefineDynamicModule(string name) { throw null; } + protected abstract System.Reflection.Emit.ModuleBuilder DefineDynamicModuleCore(string name); public override bool Equals(object? obj) { throw null; } public override object[] GetCustomAttributes(bool inherit) { throw null; } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } public override System.Collections.Generic.IList GetCustomAttributesData() { throw null; } - public abstract System.Reflection.Emit.ModuleBuilder? GetDynamicModule(string name); + public System.Reflection.Emit.ModuleBuilder? GetDynamicModule(string name) { throw null; } + protected abstract System.Reflection.Emit.ModuleBuilder? GetDynamicModuleCore(string name); [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Types might be removed")] public override System.Type[] GetExportedTypes() { throw null; } [System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute("This member throws an exception for assemblies embedded in a single-file app")] @@ -52,8 +54,10 @@ protected AssemblyBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Types might be removed")] public override System.Type? GetType(string name, bool throwOnError, bool ignoreCase) { throw null; } public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } - public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); } [System.FlagsAttribute] public enum AssemblyBuilderAccess @@ -63,34 +67,40 @@ public enum AssemblyBuilderAccess } public abstract partial class ConstructorBuilder : System.Reflection.ConstructorInfo { - protected ConstructorBuilder() { } + private protected ConstructorBuilder() { } public override System.Reflection.MethodAttributes Attributes { get { throw null; } } public override System.Reflection.CallingConventions CallingConvention { get { throw null; } } public override System.Type? DeclaringType { get { throw null; } } - public abstract bool InitLocals { get; set; } + public bool InitLocals { get { throw null; } set { } } + protected abstract bool InitLocalsCore { get; set; } public override int MetadataToken { get { throw null; } } public override System.RuntimeMethodHandle MethodHandle { get { throw null; } } public override System.Reflection.Module Module { get { throw null; } } public override string Name { get { throw null; } } public override System.Type? ReflectedType { get { throw null; } } - public abstract System.Reflection.Emit.ParameterBuilder DefineParameter(int iSequence, System.Reflection.ParameterAttributes attributes, string? strParamName); + public System.Reflection.Emit.ParameterBuilder DefineParameter(int iSequence, System.Reflection.ParameterAttributes attributes, string? strParamName) { throw null; } + protected abstract System.Reflection.Emit.ParameterBuilder DefineParameterCore(int iSequence, System.Reflection.ParameterAttributes attributes, string strParamName); public override object[] GetCustomAttributes(bool inherit) { throw null; } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } - public abstract System.Reflection.Emit.ILGenerator GetILGenerator(); - public abstract System.Reflection.Emit.ILGenerator GetILGenerator(int streamSize); + public System.Reflection.Emit.ILGenerator GetILGenerator() { throw null; } + public System.Reflection.Emit.ILGenerator GetILGenerator(int streamSize) { throw null; } + protected abstract System.Reflection.Emit.ILGenerator GetILGeneratorCore(int streamSize); public override System.Reflection.MethodImplAttributes GetMethodImplementationFlags() { throw null; } public override System.Reflection.ParameterInfo[] GetParameters() { throw null; } public override object Invoke(object? obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? parameters, System.Globalization.CultureInfo? culture) { throw null; } public override object Invoke(System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? parameters, System.Globalization.CultureInfo? culture) { throw null; } public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } - public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public abstract void SetImplementationFlags(System.Reflection.MethodImplAttributes attributes); + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public void SetImplementationFlags(System.Reflection.MethodImplAttributes attributes) { throw null; } + protected abstract void SetImplementationFlagsCore(System.Reflection.MethodImplAttributes attributes); public override string ToString() { throw null; } } public abstract partial class EnumBuilder : System.Reflection.TypeInfo { - protected EnumBuilder() { } + private protected EnumBuilder() { } public override System.Reflection.Assembly Assembly { get { throw null; } } public override string? AssemblyQualifiedName { get { throw null; } } public override System.Type? BaseType { get { throw null; } } @@ -106,13 +116,16 @@ protected EnumBuilder() { } public override string? Namespace { get { throw null; } } public override System.Type? ReflectedType { get { throw null; } } public override System.RuntimeTypeHandle TypeHandle { get { throw null; } } - public abstract System.Reflection.Emit.FieldBuilder UnderlyingField { get; } + public System.Reflection.Emit.FieldBuilder UnderlyingField { get; } + protected abstract System.Reflection.Emit.FieldBuilder UnderlyingFieldCore { get; } public override System.Type UnderlyingSystemType { get { throw null; } } [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] public System.Type CreateType() { throw null; } [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] - public abstract System.Reflection.TypeInfo CreateTypeInfo(); - public abstract System.Reflection.Emit.FieldBuilder DefineLiteral(string literalName, object? literalValue); + public System.Reflection.TypeInfo CreateTypeInfo() { throw null; } + protected abstract System.Reflection.TypeInfo CreateTypeInfoCore(); + public System.Reflection.Emit.FieldBuilder DefineLiteral(string literalName, object? literalValue) { throw null; } + protected abstract System.Reflection.Emit.FieldBuilder DefineLiteralCore(string literalName, object? literalValue); protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { throw null; } [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)] protected override System.Reflection.ConstructorInfo? GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, System.Reflection.CallingConventions callConvention, System.Type[] types, System.Reflection.ParameterModifier[]? modifiers) { throw null; } @@ -171,22 +184,30 @@ protected EnumBuilder() { } public override System.Type MakeArrayType(int rank) { throw null; } public override System.Type MakeByRefType() { throw null; } public override System.Type MakePointerType() { throw null; } - public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); } public abstract partial class EventBuilder { - protected EventBuilder() { } - public abstract void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder); - public abstract void SetAddOnMethod(System.Reflection.Emit.MethodBuilder mdBuilder); - public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public abstract void SetRaiseMethod(System.Reflection.Emit.MethodBuilder mdBuilder); - public abstract void SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder mdBuilder); + private protected EventBuilder() { } + public void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + protected abstract void AddOtherMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); + public void SetAddOnMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + protected abstract void SetAddOnMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public void SetRaiseMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + protected abstract void SetRaiseMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); + public void SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + protected abstract void SetRemoveOnMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); } public abstract partial class FieldBuilder : System.Reflection.FieldInfo { - protected FieldBuilder() { } + private protected FieldBuilder() { } public override System.Reflection.FieldAttributes Attributes { get { throw null; } } public override System.Type? DeclaringType { get { throw null; } } public override System.RuntimeFieldHandle FieldHandle { get { throw null; } } @@ -199,15 +220,19 @@ protected FieldBuilder() { } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } public override object? GetValue(object? obj) { throw null; } public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } - public abstract void SetConstant(object? defaultValue); - public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public abstract void SetOffset(int iOffset); + public void SetConstant(object? defaultValue) { throw null; } + protected abstract void SetConstantCore(object? defaultValue); + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public void SetOffset(int iOffset) { throw null; } + protected abstract void SetOffsetCore(int iOffset); public override void SetValue(object? obj, object? val, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, System.Globalization.CultureInfo? culture) { } } public abstract partial class GenericTypeParameterBuilder : System.Reflection.TypeInfo { - protected GenericTypeParameterBuilder() { } + private protected GenericTypeParameterBuilder() { } public override System.Reflection.Assembly Assembly { get { throw null; } } public override string? AssemblyQualifiedName { get { throw null; } } public override System.Type? BaseType { get { throw null; } } @@ -298,21 +323,27 @@ protected GenericTypeParameterBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] public override System.Type MakeGenericType(params System.Type[] typeArguments) { throw null; } public override System.Type MakePointerType() { throw null; } - public abstract void SetBaseTypeConstraint([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? baseTypeConstraint); - public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public abstract void SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes genericParameterAttributes); - public abstract void SetInterfaceConstraints(params System.Type[]? interfaceConstraints); + public void SetBaseTypeConstraint([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? baseTypeConstraint) { throw null; } + protected abstract void SetBaseTypeConstraintCore([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint); + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public void SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes genericParameterAttributes) { throw null; } + protected abstract void SetGenericParameterAttributesCore(System.Reflection.GenericParameterAttributes genericParameterAttributes); + public void SetInterfaceConstraints(params System.Type[]? interfaceConstraints) { throw null; } + protected abstract void SetInterfaceConstraintsCore(params System.Type[]? interfaceConstraints); public override string ToString() { throw null; } } public abstract partial class MethodBuilder : System.Reflection.MethodInfo { - protected MethodBuilder() { } + private protected MethodBuilder() { } public override System.Reflection.MethodAttributes Attributes { get { throw null; } } public override System.Reflection.CallingConventions CallingConvention { get { throw null; } } public override bool ContainsGenericParameters { get { throw null; } } public override System.Type? DeclaringType { get { throw null; } } - public abstract bool InitLocals { get; set; } + public bool InitLocals { get { throw null; } set { } } + protected abstract bool InitLocalsCore { get; set; } public override bool IsGenericMethod { get { throw null; } } public override bool IsGenericMethodDefinition { get { throw null; } } public override bool IsSecurityCritical { get { throw null; } } @@ -326,8 +357,10 @@ protected MethodBuilder() { } public override System.Reflection.ParameterInfo ReturnParameter { get { throw null; } } public override System.Type ReturnType { get { throw null; } } public override System.Reflection.ICustomAttributeProvider ReturnTypeCustomAttributes { get { throw null; } } - public abstract System.Reflection.Emit.GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names); - public abstract System.Reflection.Emit.ParameterBuilder DefineParameter(int position, System.Reflection.ParameterAttributes attributes, string? strParamName); + public System.Reflection.Emit.GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) { throw null; } + protected abstract System.Reflection.Emit.GenericTypeParameterBuilder[] DefineGenericParametersCore(params string[] names); + public System.Reflection.Emit.ParameterBuilder DefineParameter(int position, System.Reflection.ParameterAttributes attributes, string? strParamName) { throw null; } + protected abstract System.Reflection.Emit.ParameterBuilder DefineParameterCore(int position, System.Reflection.ParameterAttributes attributes, string? strParamName); public override bool Equals(object? obj) { throw null; } public override System.Reflection.MethodInfo GetBaseDefinition() { throw null; } public override object[] GetCustomAttributes(bool inherit) { throw null; } @@ -335,8 +368,9 @@ protected MethodBuilder() { } public override System.Type[] GetGenericArguments() { throw null; } public override System.Reflection.MethodInfo GetGenericMethodDefinition() { throw null; } public override int GetHashCode() { throw null; } - public abstract System.Reflection.Emit.ILGenerator GetILGenerator(); - public abstract System.Reflection.Emit.ILGenerator GetILGenerator(int size); + public System.Reflection.Emit.ILGenerator GetILGenerator() { throw null; } + public System.Reflection.Emit.ILGenerator GetILGenerator(int size) { throw null; } + protected abstract System.Reflection.Emit.ILGenerator GetILGeneratorCore(int size); public override System.Reflection.MethodImplAttributes GetMethodImplementationFlags() { throw null; } public override System.Reflection.ParameterInfo[] GetParameters() { throw null; } public override object Invoke(object? obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? parameters, System.Globalization.CultureInfo? culture) { throw null; } @@ -344,17 +378,21 @@ protected MethodBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresDynamicCode("The native code for this instantiation might not be available at runtime.")] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] public override System.Reflection.MethodInfo MakeGenericMethod(params System.Type[] typeArguments) { throw null; } - public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public abstract void SetImplementationFlags(System.Reflection.MethodImplAttributes attributes); - public abstract void SetParameters(params System.Type[] parameterTypes); - public abstract void SetReturnType(System.Type? returnType); - public abstract void SetSignature(System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers); + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public void SetImplementationFlags(System.Reflection.MethodImplAttributes attributes) { throw null; } + protected abstract void SetImplementationFlagsCore(System.Reflection.MethodImplAttributes attributes); + public void SetParameters(params System.Type[] parameterTypes) { throw null; } + public void SetReturnType(System.Type? returnType) { throw null; } + public void SetSignature(System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers) { throw null; } + protected abstract void SetSignatureCore(System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers); public override string ToString() { throw null; } } public abstract partial class ModuleBuilder : System.Reflection.Module { - protected ModuleBuilder() { } + private protected ModuleBuilder() { } public override System.Reflection.Assembly Assembly { get { throw null; } } [System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute("Returns for modules with no file path")] public override string FullyQualifiedName { get { throw null; } } @@ -364,27 +402,35 @@ protected ModuleBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute("Returns for modules with no file path")] public override string Name { get { throw null; } } public override string ScopeName { get { throw null; } } - public abstract void CreateGlobalFunctions(); - public abstract System.Reflection.Emit.EnumBuilder DefineEnum(string name, System.Reflection.TypeAttributes visibility, System.Type underlyingType); + public void CreateGlobalFunctions() { throw null; } + protected abstract void CreateGlobalFunctionsCore(); + public System.Reflection.Emit.EnumBuilder DefineEnum(string name, System.Reflection.TypeAttributes visibility, System.Type underlyingType) { throw null; } + protected abstract System.Reflection.Emit.EnumBuilder DefineEnumCore(string name, System.Reflection.TypeAttributes visibility, System.Type underlyingType); public System.Reflection.Emit.MethodBuilder DefineGlobalMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes) { throw null; } - public abstract System.Reflection.Emit.MethodBuilder DefineGlobalMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? requiredReturnTypeCustomModifiers, System.Type[]? optionalReturnTypeCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? requiredParameterTypeCustomModifiers, System.Type[][]? optionalParameterTypeCustomModifiers); + public System.Reflection.Emit.MethodBuilder DefineGlobalMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? requiredReturnTypeCustomModifiers, System.Type[]? optionalReturnTypeCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? requiredParameterTypeCustomModifiers, System.Type[][]? optionalParameterTypeCustomModifiers) { throw null; } + protected abstract System.Reflection.Emit.MethodBuilder DefineGlobalMethodCore(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? requiredReturnTypeCustomModifiers, System.Type[]? optionalReturnTypeCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? requiredParameterTypeCustomModifiers, System.Type[][]? optionalParameterTypeCustomModifiers); public System.Reflection.Emit.MethodBuilder DefineGlobalMethod(string name, System.Reflection.MethodAttributes attributes, System.Type? returnType, System.Type[]? parameterTypes) { throw null; } - public abstract System.Reflection.Emit.FieldBuilder DefineInitializedData(string name, byte[] data, System.Reflection.FieldAttributes attributes); + public System.Reflection.Emit.FieldBuilder DefineInitializedData(string name, byte[] data, System.Reflection.FieldAttributes attributes) { throw null; } + protected abstract System.Reflection.Emit.FieldBuilder DefineInitializedDataCore(string name, byte[] data, System.Reflection.FieldAttributes attributes); [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] public System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public abstract System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet); + public System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet) { throw null; } + protected abstract System.Reflection.Emit.MethodBuilder DefinePInvokeMethodCore(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet); public System.Reflection.Emit.TypeBuilder DefineType(string name) { throw null; } public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr) { throw null; } public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent) { throw null; } public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, int typesize) { throw null; } public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Reflection.Emit.PackingSize packsize) { throw null; } - public abstract System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Reflection.Emit.PackingSize packingSize, int typesize); - public abstract System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Type[]? interfaces); - public abstract System.Reflection.Emit.FieldBuilder DefineUninitializedData(string name, int size, System.Reflection.FieldAttributes attributes); + public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Reflection.Emit.PackingSize packingSize, int typesize) { throw null; } + public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Type[]? interfaces) { throw null; } + protected abstract System.Reflection.Emit.TypeBuilder DefineTypeCore(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Type[]? interfaces, System.Reflection.Emit.PackingSize packingSize, int typesize); + public System.Reflection.Emit.FieldBuilder DefineUninitializedData(string name, int size, System.Reflection.FieldAttributes attributes) { throw null; } + protected abstract System.Reflection.Emit.FieldBuilder DefineUninitializedDataCore(string name, int size, System.Reflection.FieldAttributes attributes); public override bool Equals(object? obj) { throw null; } - public abstract System.Reflection.MethodInfo GetArrayMethod(System.Type arrayClass, string methodName, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes); - public abstract int GetConstructorToken(ConstructorInfo contsuctor); + public System.Reflection.MethodInfo GetArrayMethod(System.Type arrayClass, string methodName, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes) { throw null; } + protected abstract System.Reflection.MethodInfo GetArrayMethodCore(System.Type arrayClass, string methodName, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes); + public int GetMetadataToken(System.Reflection.ConstructorInfo constructor) { throw null; } public override object[] GetCustomAttributes(bool inherit) { throw null; } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } public override System.Collections.Generic.IList GetCustomAttributesData() { throw null; } @@ -392,13 +438,13 @@ protected ModuleBuilder() { } public override System.Reflection.FieldInfo? GetField(string name, System.Reflection.BindingFlags bindingAttr) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Fields might be removed")] public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingFlags) { throw null; } - public abstract int GetFieldToken(FieldInfo field); + public abstract int GetMetadataToken(System.Reflection.FieldInfo field); public override int GetHashCode() { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Methods might be removed")] protected override System.Reflection.MethodInfo? GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, System.Reflection.CallingConventions callConvention, System.Type[]? types, System.Reflection.ParameterModifier[]? modifiers) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Methods might be removed")] public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingFlags) { throw null; } - public abstract int GetMethodToken(MethodInfo method); + public abstract int GetMetadataToken(System.Reflection.MethodInfo method); public override void GetPEKind(out System.Reflection.PortableExecutableKinds peKind, out System.Reflection.ImageFileMachine machine) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Types might be removed")] public override System.Type? GetType(string className) { throw null; } @@ -408,9 +454,9 @@ protected ModuleBuilder() { } public override System.Type? GetType(string className, bool throwOnError, bool ignoreCase) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Types might be removed")] public override System.Type[] GetTypes() { throw null; } - public abstract int GetTypeToken(Type type); - public abstract int GetSignatureToken(SignatureHelper sigHelper); - public abstract int GetStringConstant(string str); + public abstract int GetMetadataToken(System.Type type); + public abstract int GetMetadataToken(System.Reflection.Emit.SignatureHelper sigHelper); + public abstract int GetMetadataToken(string str); public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } public override bool IsResource() { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Trimming changes metadata tokens")] @@ -425,12 +471,14 @@ protected ModuleBuilder() { } public override string ResolveString(int metadataToken) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Trimming changes metadata tokens")] public override System.Type ResolveType(int metadataToken, System.Type[]? genericTypeArguments, System.Type[]? genericMethodArguments) { throw null; } - public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); } public abstract partial class PropertyBuilder : System.Reflection.PropertyInfo { - protected PropertyBuilder() { } + private protected PropertyBuilder() { } public override System.Reflection.PropertyAttributes Attributes { get { throw null; } } public override bool CanRead { get { throw null; } } public override bool CanWrite { get { throw null; } } @@ -439,7 +487,8 @@ protected PropertyBuilder() { } public override string Name { get { throw null; } } public override System.Type PropertyType { get { throw null; } } public override System.Type? ReflectedType { get { throw null; } } - public abstract void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder); + public void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + protected abstract void AddOtherMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); public override System.Reflection.MethodInfo[] GetAccessors(bool nonPublic) { throw null; } public override object[] GetCustomAttributes(bool inherit) { throw null; } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } @@ -449,17 +498,22 @@ protected PropertyBuilder() { } public override object GetValue(object? obj, object?[]? index) { throw null; } public override object GetValue(object? obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? index, System.Globalization.CultureInfo? culture) { throw null; } public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } - public abstract void SetConstant(object? defaultValue); - public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public abstract void SetGetMethod(System.Reflection.Emit.MethodBuilder mdBuilder); - public abstract void SetSetMethod(System.Reflection.Emit.MethodBuilder mdBuilder); + public void SetConstant(object? defaultValue) { throw null; } + protected abstract void SetConstantCore(object? defaultValue); + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public void SetGetMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + protected abstract void SetGetMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); + public void SetSetMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + protected abstract void SetSetMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); public override void SetValue(object? obj, object? value, object?[]? index) { } public override void SetValue(object? obj, object? value, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? index, System.Globalization.CultureInfo? culture) { } } public abstract partial class TypeBuilder : System.Reflection.TypeInfo { - protected TypeBuilder() { } + private protected TypeBuilder() { } public const int UnspecifiedTypeSize = 0; public override System.Reflection.Assembly Assembly { get { throw null; } } public override string? AssemblyQualifiedName { get { throw null; } } @@ -484,49 +538,66 @@ protected TypeBuilder() { } public override System.Reflection.Module Module { get { throw null; } } public override string Name { get { throw null; } } public override string? Namespace { get { throw null; } } - public abstract System.Reflection.Emit.PackingSize PackingSize { get; } + public System.Reflection.Emit.PackingSize PackingSize { get { throw null; } } + protected abstract System.Reflection.Emit.PackingSize PackingSizeCore { get; } public override System.Type? ReflectedType { get { throw null; } } - public abstract int Size { get; } + public int Size { get { throw null; } } public override System.RuntimeTypeHandle TypeHandle { get { throw null; } } public override System.Type UnderlyingSystemType { get { throw null; } } - public abstract void AddInterfaceImplementation([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type interfaceType); + public void AddInterfaceImplementation([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type interfaceType) { throw null; } + protected abstract void AddInterfaceImplementationCore([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type interfaceType); [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] public System.Type CreateType() { throw null; } [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] - public abstract System.Reflection.TypeInfo CreateTypeInfo(); + public System.Reflection.TypeInfo CreateTypeInfo() { throw null; } + protected abstract System.Reflection.TypeInfo CreateTypeInfoCore(); public System.Reflection.Emit.ConstructorBuilder DefineConstructor(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type[]? parameterTypes) { throw null; } - public abstract System.Reflection.Emit.ConstructorBuilder DefineConstructor(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type[]? parameterTypes, System.Type[][]? requiredCustomModifiers, System.Type[][]? optionalCustomModifiers); - public abstract System.Reflection.Emit.ConstructorBuilder DefineDefaultConstructor(System.Reflection.MethodAttributes attributes); - public abstract System.Reflection.Emit.EventBuilder DefineEvent(string name, System.Reflection.EventAttributes attributes, System.Type eventtype); + public System.Reflection.Emit.ConstructorBuilder DefineConstructor(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type[]? parameterTypes, System.Type[][]? requiredCustomModifiers, System.Type[][]? optionalCustomModifiers) { throw null; } + protected abstract System.Reflection.Emit.ConstructorBuilder DefineConstructorCore(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type[]? parameterTypes, System.Type[][]? requiredCustomModifiers, System.Type[][]? optionalCustomModifiers); + public System.Reflection.Emit.ConstructorBuilder DefineDefaultConstructor(System.Reflection.MethodAttributes attributes) { throw null; } + protected abstract System.Reflection.Emit.ConstructorBuilder DefineDefaultConstructorCore(System.Reflection.MethodAttributes attributes); + public System.Reflection.Emit.EventBuilder DefineEvent(string name, System.Reflection.EventAttributes attributes, System.Type eventtype) { throw null; } + protected abstract System.Reflection.Emit.EventBuilder DefineEventCore(string name, System.Reflection.EventAttributes attributes, System.Type eventtype); public System.Reflection.Emit.FieldBuilder DefineField(string fieldName, System.Type type, System.Reflection.FieldAttributes attributes) { throw null; } - public abstract System.Reflection.Emit.FieldBuilder DefineField(string fieldName, System.Type type, System.Type[]? requiredCustomModifiers, System.Type[]? optionalCustomModifiers, System.Reflection.FieldAttributes attributes); - public abstract System.Reflection.Emit.GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names); - public abstract System.Reflection.Emit.FieldBuilder DefineInitializedData(string name, byte[] data, System.Reflection.FieldAttributes attributes); + public System.Reflection.Emit.FieldBuilder DefineField(string fieldName, System.Type type, System.Type[]? requiredCustomModifiers, System.Type[]? optionalCustomModifiers, System.Reflection.FieldAttributes attributes) { throw null; } + protected abstract System.Reflection.Emit.FieldBuilder DefineFieldCore(string fieldName, System.Type type, System.Type[]? requiredCustomModifiers, System.Type[]? optionalCustomModifiers, System.Reflection.FieldAttributes attributes); + public System.Reflection.Emit.GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) { throw null; } + protected abstract System.Reflection.Emit.GenericTypeParameterBuilder[] DefineGenericParametersCore(params string[] names); + public System.Reflection.Emit.FieldBuilder DefineInitializedData(string name, byte[] data, System.Reflection.FieldAttributes attributes) { throw null; } + protected abstract System.Reflection.Emit.FieldBuilder DefineInitializedDataCore(string name, byte[] data, System.Reflection.FieldAttributes attributes); public System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes) { throw null; } public System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention) { throw null; } public System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes) { throw null; } - public abstract System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers); + public System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers) { throw null; } + protected abstract System.Reflection.Emit.MethodBuilder DefineMethodCore(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers); public System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes, System.Type? returnType, System.Type[]? parameterTypes) { throw null; } - public abstract void DefineMethodOverride(System.Reflection.MethodInfo methodInfoBody, System.Reflection.MethodInfo methodInfoDeclaration); + public void DefineMethodOverride(System.Reflection.MethodInfo methodInfoBody, System.Reflection.MethodInfo methodInfoDeclaration) { throw null; } + protected abstract void DefineMethodOverrideCore(System.Reflection.MethodInfo methodInfoBody, System.Reflection.MethodInfo methodInfoDeclaration); public System.Reflection.Emit.TypeBuilder DefineNestedType(string name) { throw null; } public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr) { throw null; } public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent) { throw null; } public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, int typeSize) { throw null; } public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Reflection.Emit.PackingSize packSize) { throw null; } - public abstract System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Reflection.Emit.PackingSize packSize, int typeSize); - public abstract System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Type[]? interfaces); + public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Reflection.Emit.PackingSize packSize, int typeSize) { throw null; } + public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Type[]? interfaces) { throw null; } + protected abstract System.Reflection.Emit.TypeBuilder DefineNestedTypeCore(string name, System.Reflection.TypeAttributes attr, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent, System.Type[]? interfaces, System.Reflection.Emit.PackingSize packSize, int typeSize); [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] public System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] public System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public abstract System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet); + public System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet) { throw null; } + [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] + protected abstract System.Reflection.Emit.MethodBuilder DefinePInvokeMethodCore(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet); public System.Reflection.Emit.PropertyBuilder DefineProperty(string name, System.Reflection.PropertyAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[]? parameterTypes) { throw null; } - public abstract System.Reflection.Emit.PropertyBuilder DefineProperty(string name, System.Reflection.PropertyAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers); + public System.Reflection.Emit.PropertyBuilder DefineProperty(string name, System.Reflection.PropertyAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers) { throw null; } public System.Reflection.Emit.PropertyBuilder DefineProperty(string name, System.Reflection.PropertyAttributes attributes, System.Type returnType, System.Type[]? parameterTypes) { throw null; } public System.Reflection.Emit.PropertyBuilder DefineProperty(string name, System.Reflection.PropertyAttributes attributes, System.Type returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers) { throw null; } - public abstract System.Reflection.Emit.ConstructorBuilder DefineTypeInitializer(); - public abstract System.Reflection.Emit.FieldBuilder DefineUninitializedData(string name, int size, System.Reflection.FieldAttributes attributes); + protected abstract System.Reflection.Emit.PropertyBuilder DefinePropertyCore(string name, System.Reflection.PropertyAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers); + public System.Reflection.Emit.ConstructorBuilder DefineTypeInitializer() { throw null; } + protected abstract System.Reflection.Emit.ConstructorBuilder DefineTypeInitializerCore(); + public System.Reflection.Emit.FieldBuilder DefineUninitializedData(string name, int size, System.Reflection.FieldAttributes attributes) { throw null; } + protected abstract System.Reflection.Emit.FieldBuilder DefineUninitializedDataCore(string name, int size, System.Reflection.FieldAttributes attributes); protected override System.Reflection.TypeAttributes GetAttributeFlagsImpl() { throw null; } public static System.Reflection.ConstructorInfo GetConstructor(System.Type type, System.Reflection.ConstructorInfo constructor) { throw null; } [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)] @@ -580,7 +651,8 @@ protected TypeBuilder() { } public override bool IsAssignableFrom([System.Diagnostics.CodeAnalysis.NotNullWhenAttribute(true)] System.Type? c) { throw null; } protected override bool IsByRefImpl() { throw null; } protected override bool IsCOMObjectImpl() { throw null; } - public abstract bool IsCreated(); + public bool IsCreated() { throw null; } + protected abstract bool IsCreatedCore(); public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } protected override bool IsPointerImpl() { throw null; } protected override bool IsPrimitiveImpl() { throw null; } @@ -594,9 +666,12 @@ protected TypeBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] public override System.Type MakeGenericType(params System.Type[] typeArguments) { throw null; } public override System.Type MakePointerType() { throw null; } - public abstract void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public abstract void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public abstract void SetParent([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent); + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); + public void SetParent([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent) { throw null; } + protected abstract void SetParentCore([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent); public override string ToString() { throw null; } } } diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.Mono.cs index 09f4d5fde2897..68449d1a75ab8 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.Mono.cs @@ -264,12 +264,8 @@ public override bool ReflectionOnly get { return base.ReflectionOnly; } } - public override ModuleBuilder DefineDynamicModule(string name) + protected override ModuleBuilder DefineDynamicModuleCore(string name) { - ArgumentException.ThrowIfNullOrEmpty(name); - if (name[0] == '\0') - throw new ArgumentException(SR.Argument_InvalidName, nameof(name)); - if (manifest_module_used) throw new InvalidOperationException(SR.InvalidOperation_NoMultiModuleAssembly); manifest_module_used = true; @@ -285,10 +281,8 @@ internal static AssemblyBuilder InternalDefineDynamicAssembly( return DefineDynamicAssembly(name, access, assemblyAttributes); } - public override ModuleBuilder? GetDynamicModule(string name) + protected override ModuleBuilder? GetDynamicModuleCore(string name) { - ArgumentException.ThrowIfNullOrEmpty(name); - if (modules != null) for (int i = 0; i < modules.Length; ++i) if (modules[i].name == name) @@ -299,10 +293,8 @@ internal static AssemblyBuilder InternalDefineDynamicAssembly( public override bool IsCollectible => access == (uint)AssemblyBuilderAccess.RunAndCollect; - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); - if (cattrs != null) { CustomAttributeBuilder[] new_array = new CustomAttributeBuilder[cattrs.Length + 1]; @@ -319,12 +311,9 @@ public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) UpdateNativeCustomAttributes(this); } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - ArgumentNullException.ThrowIfNull(con); - ArgumentNullException.ThrowIfNull(binaryAttribute); - - SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); + SetCustomAttributeCore(new CustomAttributeBuilder(con, binaryAttribute)); } /*Warning, @typeArguments must be a mscorlib internal array. So make a copy before passing it in*/ diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeConstructorBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeConstructorBuilder.Mono.cs index 1faaecd8c903b..97c17e165863f 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeConstructorBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeConstructorBuilder.Mono.cs @@ -92,7 +92,7 @@ public override CallingConventions CallingConvention } } - public override bool InitLocals + protected override bool InitLocalsCore { get { @@ -209,7 +209,7 @@ public override string Name } } - public override ParameterBuilder DefineParameter(int iSequence, ParameterAttributes attributes, string? strParamName) + protected override ParameterBuilder DefineParameterCore(int iSequence, ParameterAttributes attributes, string? strParamName) { // The 0th ParameterBuilder does not correspond to an // actual parameter, but .NETFramework lets you define @@ -241,12 +241,7 @@ public override object[] GetCustomAttributes(Type attributeType, bool inherit) throw not_supported(); } - public override ILGenerator GetILGenerator() - { - return GetILGenerator(64); - } - - public override ILGenerator GetILGenerator(int streamSize) + protected override ILGenerator GetILGeneratorCore(int streamSize) { if (finished) throw new InvalidOperationException(); @@ -258,7 +253,7 @@ public override ILGenerator GetILGenerator(int streamSize) return ilgen; } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { ArgumentNullException.ThrowIfNull(customBuilder); @@ -286,15 +281,15 @@ public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { ArgumentNullException.ThrowIfNull(con); ArgumentNullException.ThrowIfNull(binaryAttribute); - SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); + SetCustomAttributeCore(new CustomAttributeBuilder(con, binaryAttribute)); } - public override void SetImplementationFlags(MethodImplAttributes attributes) + protected override void SetImplementationFlagsCore(MethodImplAttributes attributes) { if (type.is_created) throw not_after_created(); diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.Mono.cs index ac084368ba26d..e810b3bc56fa2 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.Mono.cs @@ -176,7 +176,7 @@ internal int TypeToken } } - public override FieldBuilder UnderlyingField + protected override FieldBuilder UnderlyingFieldCore { get { @@ -193,7 +193,7 @@ public override Type UnderlyingSystemType } [return: DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes.All)] - public override TypeInfo CreateTypeInfo() + protected override TypeInfo CreateTypeInfoCore() { return _tb.CreateTypeInfo(); } @@ -210,7 +210,7 @@ public override Type GetEnumUnderlyingType() [MethodImplAttribute(MethodImplOptions.InternalCall)] private extern void setup_enum_type(Type t); - public override FieldBuilder DefineLiteral(string literalName, object? literalValue) + protected override FieldBuilder DefineLiteralCore(string literalName, object? literalValue) { Type fieldType = this; FieldBuilder fieldBuilder = _tb.DefineField(literalName, @@ -448,14 +448,14 @@ public override Type MakePointerType() return new PointerType(this); } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { _tb.SetCustomAttribute(customBuilder); } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); + SetCustomAttributeCore(new CustomAttributeBuilder(con, binaryAttribute)); } internal override bool IsUserType diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.Mono.cs index 7a01e1845f381..8ff4a3df89eac 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.Mono.cs @@ -70,7 +70,7 @@ internal int get_next_table_index(int table, int count) return typeb.get_next_table_index(table, count); } - public override void AddOtherMethod(MethodBuilder mdBuilder) + protected override void AddOtherMethodCore(MethodBuilder mdBuilder) { ArgumentNullException.ThrowIfNull(mdBuilder); RejectIfCreated(); @@ -87,28 +87,27 @@ public override void AddOtherMethod(MethodBuilder mdBuilder) other_methods[other_methods.Length - 1] = mdBuilder; } - public override void SetAddOnMethod(MethodBuilder mdBuilder) + protected override void SetAddOnMethodCore(MethodBuilder mdBuilder) { ArgumentNullException.ThrowIfNull(mdBuilder); RejectIfCreated(); add_method = mdBuilder; } - public override void SetRaiseMethod(MethodBuilder mdBuilder) + protected override void SetRaiseMethodCore(MethodBuilder mdBuilder) { ArgumentNullException.ThrowIfNull(mdBuilder); RejectIfCreated(); raise_method = mdBuilder; } - public override void SetRemoveOnMethod(MethodBuilder mdBuilder) + protected override void SetRemoveOnMethodCore(MethodBuilder mdBuilder) { ArgumentNullException.ThrowIfNull(mdBuilder); RejectIfCreated(); remove_method = mdBuilder; } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); RejectIfCreated(); string? attrname = customBuilder.Ctor.ReflectedType!.FullName; if (attrname == "System.Runtime.CompilerServices.SpecialNameAttribute") @@ -130,11 +129,9 @@ public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - ArgumentNullException.ThrowIfNull(con); - ArgumentNullException.ThrowIfNull(binaryAttribute); - SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); + SetCustomAttributeCore(new CustomAttributeBuilder(con, binaryAttribute)); } private void RejectIfCreated() diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.Mono.cs index 5b8f526c38f57..5e33bb26fcf59 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.Mono.cs @@ -165,7 +165,7 @@ internal static PackingSize RVADataPackingSize(int size) return PackingSize.Size1; } - public override void SetConstant(object? defaultValue) + protected override void SetConstantCore(object? defaultValue) { RejectIfCreated(); @@ -174,12 +174,10 @@ public override void SetConstant(object? defaultValue) def_value = defaultValue; } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { RejectIfCreated(); - ArgumentNullException.ThrowIfNull(customBuilder); - string? attrname = customBuilder.Ctor.ReflectedType!.FullName; if (attrname == "System.Runtime.InteropServices.FieldOffsetAttribute") { @@ -221,13 +219,13 @@ public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { RejectIfCreated(); - SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); + SetCustomAttributeCore(new CustomAttributeBuilder(con, binaryAttribute)); } - public override void SetOffset(int iOffset) + protected override void SetOffsetCore(int iOffset) { RejectIfCreated(); if (iOffset < 0) diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeGenericTypeParameterBuilder.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeGenericTypeParameterBuilder.cs index 668c51d0e0f6b..705662d037649 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeGenericTypeParameterBuilder.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeGenericTypeParameterBuilder.cs @@ -61,17 +61,17 @@ internal RuntimeGenericTypeParameterBuilder(RuntimeTypeBuilder tbuilder, Runtime this.index = index; } - public override void SetBaseTypeConstraint([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint) + protected override void SetBaseTypeConstraintCore([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint) { this.base_type = baseTypeConstraint ?? typeof(object); } - public override void SetInterfaceConstraints(params Type[]? interfaceConstraints) + protected override void SetInterfaceConstraintsCore(params Type[]? interfaceConstraints) { this.iface_constraints = interfaceConstraints; } - public override void SetGenericParameterAttributes(GenericParameterAttributes genericParameterAttributes) + protected override void SetGenericParameterAttributesCore(GenericParameterAttributes genericParameterAttributes) { this.attrs = genericParameterAttributes; } @@ -424,10 +424,8 @@ public override MethodBase? DeclaringMethod get { return mbuilder; } } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); - if (cattrs != null) { CustomAttributeBuilder[] new_array = new CustomAttributeBuilder[cattrs.Length + 1]; @@ -443,9 +441,9 @@ public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) } // FIXME: "unverified implementation" - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); + SetCustomAttributeCore(new CustomAttributeBuilder(con, binaryAttribute)); } private static Exception not_supported() diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.Mono.cs index 43bae24a73a1d..b39b43dc0c190 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.Mono.cs @@ -120,7 +120,7 @@ public override bool ContainsGenericParameters get { throw new NotSupportedException(); } } - public override bool InitLocals + protected override bool InitLocalsCore { get { return init_locals; } set { init_locals = value; } @@ -310,12 +310,7 @@ public override object[] GetCustomAttributes(Type attributeType, bool inherit) throw NotSupported(); } - public override ILGenerator GetILGenerator() - { - return GetILGenerator(64); - } - - public override ILGenerator GetILGenerator(int size) + protected override ILGenerator GetILGeneratorCore(int size) { if (((iattrs & MethodImplAttributes.CodeTypeMask) != MethodImplAttributes.IL) || @@ -328,7 +323,7 @@ public override ILGenerator GetILGenerator(int size) return ilgen; } - public override ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string strParamName) + protected override ParameterBuilder DefineParameterCore(int position, ParameterAttributes attributes, string? strParamName) { RejectIfCreated(); @@ -387,10 +382,8 @@ internal void ResolveUserTypes() } } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); - switch (customBuilder.Ctor.ReflectedType!.FullName) { case "System.Runtime.CompilerServices.MethodImplAttribute": @@ -475,14 +468,12 @@ public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - ArgumentNullException.ThrowIfNull(con); - ArgumentNullException.ThrowIfNull(binaryAttribute); - SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); + SetCustomAttributeCore(new CustomAttributeBuilder(con, binaryAttribute)); } - public override void SetImplementationFlags(MethodImplAttributes attributes) + protected override void SetImplementationFlagsCore(MethodImplAttributes attributes) { RejectIfCreated(); iattrs = attributes; @@ -591,11 +582,8 @@ public override Type[] GetGenericArguments() return result; } - public override GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + protected override GenericTypeParameterBuilder[] DefineGenericParametersCore(params string[] names) { - ArgumentNullException.ThrowIfNull(names); - if (names.Length == 0) - throw new ArgumentException(SR.Arg_EmptyArray, nameof(names)); type.check_not_created(); generic_params = new RuntimeGenericTypeParameterBuilder[names.Length]; for (int i = 0; i < names.Length; i++) @@ -609,12 +597,7 @@ public override GenericTypeParameterBuilder[] DefineGenericParameters(params str return generic_params; } - public override void SetReturnType(Type? returnType) - { - rtype = returnType; - } - - public override void SetParameters(params Type[]? parameterTypes) + protected override void SetSignatureCore(Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { if (parameterTypes != null) { @@ -625,16 +608,12 @@ public override void SetParameters(params Type[]? parameterTypes) this.parameters = new Type[parameterTypes.Length]; Array.Copy(parameterTypes, this.parameters, parameterTypes.Length); } - } - public override void SetSignature(Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) - { - SetReturnType(returnType); - SetParameters(parameterTypes); - this.returnModReq = returnTypeRequiredCustomModifiers; - this.returnModOpt = returnTypeOptionalCustomModifiers; - this.paramModReq = parameterTypeRequiredCustomModifiers; - this.paramModOpt = parameterTypeOptionalCustomModifiers; + rtype = returnType; + returnModReq = returnTypeRequiredCustomModifiers; + returnModOpt = returnTypeOptionalCustomModifiers; + paramModReq = parameterTypeRequiredCustomModifiers; + paramModOpt = parameterTypeOptionalCustomModifiers; } public override Module Module diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.Mono.cs index 05d8da8ad887d..d5daa61efdc6d 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.Mono.cs @@ -120,7 +120,7 @@ public override string FullyQualifiedName } } - public override void CreateGlobalFunctions() + protected override void CreateGlobalFunctionsCore() { if (global_type_created) throw new InvalidOperationException(SR.InvalidOperation_GlobalsHaveBeenCreated); @@ -131,7 +131,7 @@ public override void CreateGlobalFunctions() } } - public override FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) + protected override FieldBuilder DefineInitializedDataCore(string name, byte[] data, FieldAttributes attributes) { ArgumentNullException.ThrowIfNull(data); @@ -142,7 +142,7 @@ public override FieldBuilder DefineInitializedData(string name, byte[] data, Fie return fb; } - public override FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) + protected override FieldBuilder DefineUninitializedDataCore(string name, int size, FieldAttributes attributes) { return DefineDataImpl(name, size, attributes & ~FieldAttributes.ReservedMask); } @@ -200,9 +200,8 @@ private void addGlobalMethod(MethodBuilder mb) } } - public override MethodBuilder DefineGlobalMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? requiredReturnTypeCustomModifiers, Type[]? optionalReturnTypeCustomModifiers, Type[]? parameterTypes, Type[][]? requiredParameterTypeCustomModifiers, Type[][]? optionalParameterTypeCustomModifiers) + protected override MethodBuilder DefineGlobalMethodCore(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? requiredReturnTypeCustomModifiers, Type[]? optionalReturnTypeCustomModifiers, Type[]? parameterTypes, Type[][]? requiredParameterTypeCustomModifiers, Type[][]? optionalParameterTypeCustomModifiers) { - ArgumentNullException.ThrowIfNull(name); if ((attributes & MethodAttributes.Static) == 0) throw new ArgumentException(SR.Argument_GlobalMembersMustBeStatic); if (global_type_created) @@ -215,7 +214,7 @@ public override MethodBuilder DefineGlobalMethod(string name, MethodAttributes a } [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public override MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet) + protected override MethodBuilder DefinePInvokeMethodCore(string name, string dllName, string entryName, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes, CallingConvention nativeCallConv, CharSet nativeCharSet) { ArgumentNullException.ThrowIfNull(name); if ((attributes & MethodAttributes.Static) == 0) @@ -274,22 +273,17 @@ internal void RegisterTypeName(RuntimeTypeBuilder tb, ITypeName name) return result; } - public override TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) - { - return DefineType(name, attr, parent, interfaces, PackingSize.Unspecified, TypeBuilder.UnspecifiedTypeSize); - } - - public override TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packingSize, int typesize) + protected override TypeBuilder DefineTypeCore(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces, PackingSize packingSize, int typesize) { - return DefineType(name, attr, parent, null, packingSize, typesize); + return DefineType(name, attr, parent, interfaces, packingSize, typesize); } - public override MethodInfo GetArrayMethod(Type arrayClass, string methodName, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes) + protected override MethodInfo GetArrayMethodCore(Type arrayClass, string methodName, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes) { return new MonoArrayMethod(arrayClass, methodName, callingConvention, returnType!, parameterTypes!); // FIXME: nulls should be allowed } - public override EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type underlyingType) + protected override EnumBuilder DefineEnumCore(string name, TypeAttributes visibility, Type underlyingType) { ITypeIdentifier ident = TypeIdentifiers.FromInternal(name); if (name_cache.ContainsKey(ident)) @@ -432,9 +426,8 @@ internal int get_next_table_index(int table, int count) return index; } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); if (cattrs != null) { CustomAttributeBuilder[] new_array = new CustomAttributeBuilder[cattrs.Length + 1]; @@ -449,9 +442,9 @@ public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); + SetCustomAttributeCore(new CustomAttributeBuilder(con, binaryAttribute)); } /* internal ISymbolDocumentWriter? DefineDocument (string url, Guid language, Guid languageVendor, Guid documentType) @@ -480,7 +473,7 @@ public override Type[] GetTypes() return copy; } - public override int GetMethodToken(MethodInfo method) + public override int GetMetadataToken(MethodInfo method) { ArgumentNullException.ThrowIfNull(method); @@ -489,17 +482,17 @@ public override int GetMethodToken(MethodInfo method) internal int GetArrayMethodToken(Type arrayClass, string methodName, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes) { - return GetMethodToken(GetArrayMethod(arrayClass, methodName, callingConvention, returnType, parameterTypes)); + return GetMetadataToken(GetArrayMethod(arrayClass, methodName, callingConvention, returnType, parameterTypes)); } - public override int GetConstructorToken(ConstructorInfo con) + public override int GetMetadataToken(ConstructorInfo con) { ArgumentNullException.ThrowIfNull(con); return con.MetadataToken; } - public override int GetFieldToken(FieldInfo field) + public override int GetMetadataToken(FieldInfo field) { ArgumentNullException.ThrowIfNull(field); @@ -523,19 +516,19 @@ internal int GetSignatureToken(byte[] sigBytes, int sigLength) throw new NotImplementedException(); } - public override int GetSignatureToken(SignatureHelper sigHelper) + public override int GetMetadataToken(SignatureHelper sigHelper) { ArgumentNullException.ThrowIfNull(sigHelper); return GetToken(sigHelper); } - public override int GetStringConstant(string str) + public override int GetMetadataToken(string str) { ArgumentNullException.ThrowIfNull(str); return GetToken(str); } - public override int GetTypeToken(Type type) + public override int GetMetadataToken(Type type) { ArgumentNullException.ThrowIfNull(type); if (type.IsByRef) @@ -547,7 +540,7 @@ public override int GetTypeToken(Type type) Justification = "Reflection.Emit is not subject to trimming")] internal int GetTypeToken(string name) { - return GetTypeToken(GetType(name)!); + return GetMetadataToken(GetType(name)!); } [MethodImplAttribute(MethodImplOptions.InternalCall)] diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.Mono.cs index bb95ac252c346..aced71428884c 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.Mono.cs @@ -109,7 +109,7 @@ public override Type ReflectedType get { return typeb; } } - public override void AddOtherMethod(MethodBuilder mdBuilder) + protected override void AddOtherMethodCore(MethodBuilder mdBuilder) { ArgumentNullException.ThrowIfNull(mdBuilder); typeb.check_not_created(); @@ -153,15 +153,14 @@ public override bool IsDefined(Type attributeType, bool inherit) { throw not_supported(); } - public override void SetConstant(object? defaultValue) + protected override void SetConstantCore(object? defaultValue) { typeb.check_not_created(); def_value = defaultValue; } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); typeb.check_not_created(); string? attrname = customBuilder.Ctor.ReflectedType!.FullName; if (attrname == "System.Runtime.CompilerServices.SpecialNameAttribute") @@ -184,19 +183,19 @@ public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); + SetCustomAttributeCore(new CustomAttributeBuilder(con, binaryAttribute)); } - public override void SetGetMethod(MethodBuilder mdBuilder) + protected override void SetGetMethodCore(MethodBuilder mdBuilder) { typeb.check_not_created(); ArgumentNullException.ThrowIfNull(mdBuilder); get_method = mdBuilder; } - public override void SetSetMethod(MethodBuilder mdBuilder) + protected override void SetSetMethodCore(MethodBuilder mdBuilder) { ArgumentNullException.ThrowIfNull(mdBuilder); set_method = mdBuilder; diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs index 3a1d6ee4dc6a9..094d9e1ef31de 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs @@ -359,12 +359,12 @@ public override string? Namespace get { return nspace; } } - public override PackingSize PackingSize + protected override PackingSize PackingSizeCore { get { return packing_size; } } - public override int Size + protected override int SizeCore { get { return class_size; } } @@ -374,10 +374,8 @@ public override Type? ReflectedType get { return nesting_type; } } - public override void AddInterfaceImplementation([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) + protected override void AddInterfaceImplementationCore([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type interfaceType) { - ArgumentNullException.ThrowIfNull(interfaceType); - check_not_created(); if (interfaces != null) @@ -482,7 +480,7 @@ public override object[] GetCustomAttributes(Type attributeType, bool inherit) return created!.GetCustomAttributes(attributeType, inherit); } - private TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces, + protected override TypeBuilder DefineNestedTypeCore(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces, PackingSize packSize, int typeSize) { // Visibility must be NestedXXX @@ -519,18 +517,7 @@ private TypeBuilder DefineNestedType(string name, TypeAttributes attr, [Dynamica return res; } - public override TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, Type[]? interfaces) - { - return DefineNestedType(name, attr, parent, interfaces, PackingSize.Unspecified, UnspecifiedTypeSize); - } - - public override TypeBuilder DefineNestedType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent, PackingSize packSize, - int typeSize) - { - return DefineNestedType(name, attr, parent, null, packSize, typeSize); - } - - public override ConstructorBuilder DefineConstructor(MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers) + protected override ConstructorBuilder DefineConstructorCore(MethodAttributes attributes, CallingConventions callingConvention, Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers) { check_not_created(); if (IsInterface && (attributes & MethodAttributes.Static) == 0) @@ -555,7 +542,7 @@ public override ConstructorBuilder DefineConstructor(MethodAttributes attributes [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2075:UnrecognizedReflectionPattern", Justification = "Reflection.Emit is not subject to trimming")] - public override ConstructorBuilder DefineDefaultConstructor(MethodAttributes attributes) + protected override ConstructorBuilder DefineDefaultConstructorCore(MethodAttributes attributes) { Type parent_type, old_parent_type; @@ -613,9 +600,8 @@ private void append_method(RuntimeMethodBuilder mb) num_methods++; } - public override MethodBuilder DefineMethod(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) + protected override MethodBuilder DefineMethodCore(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { - check_name(nameof(name), name); check_not_created(); if (IsInterface && ( !((attributes & MethodAttributes.Abstract) != 0) || @@ -635,7 +621,7 @@ public override MethodBuilder DefineMethod(string name, MethodAttributes attribu } [RequiresUnreferencedCode("P/Invoke marshalling may dynamically access members that could be trimmed.")] - public override MethodBuilder DefinePInvokeMethod( + protected override MethodBuilder DefinePInvokeMethodCore( string name, string dllName, string entryName, MethodAttributes attributes, @@ -649,9 +635,6 @@ public override MethodBuilder DefinePInvokeMethod( CallingConvention nativeCallConv, CharSet nativeCharSet) { - check_name(nameof(name), name); - check_name(nameof(dllName), dllName); - check_name(nameof(entryName), entryName); if ((attributes & MethodAttributes.Abstract) != 0) throw new ArgumentException(SR.Argument_BadPInvokeMethod); if (IsInterface) @@ -678,10 +661,8 @@ RuntimeMethodBuilder res return res; } - public override void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) + protected override void DefineMethodOverrideCore(MethodInfo methodInfoBody, MethodInfo methodInfoDeclaration) { - ArgumentNullException.ThrowIfNull(methodInfoBody); - ArgumentNullException.ThrowIfNull(methodInfoDeclaration); check_not_created(); if (methodInfoBody.DeclaringType != this) throw new ArgumentException("method body must belong to this type"); @@ -692,7 +673,7 @@ public override void DefineMethodOverride(MethodInfo methodInfoBody, MethodInfo } } - public override FieldBuilder DefineField(string fieldName, Type type, Type[]? requiredCustomModifiers, Type[]? optionalCustomModifiers, FieldAttributes attributes) + protected override FieldBuilder DefineFieldCore(string fieldName, Type type, Type[]? requiredCustomModifiers, Type[]? optionalCustomModifiers, FieldAttributes attributes) { check_name(nameof(fieldName), fieldName); if (type == typeof(void)) @@ -727,9 +708,8 @@ public override FieldBuilder DefineField(string fieldName, Type type, Type[]? re return res; } - public override PropertyBuilder DefineProperty(string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) + protected override PropertyBuilder DefinePropertyCore(string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { - check_name(nameof(name), name); if (parameterTypes != null) foreach (Type param in parameterTypes) if (param == null) @@ -750,7 +730,7 @@ public override PropertyBuilder DefineProperty(string name, PropertyAttributes a return res; } - public override ConstructorBuilder DefineTypeInitializer() + protected override ConstructorBuilder DefineTypeInitializerCore() { return DefineConstructor(MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.SpecialName | @@ -799,7 +779,7 @@ private bool has_ctor_method() [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2083:UnrecognizedReflectionPattern", Justification = "Reflection.Emit is not subject to trimming")] [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] - public override TypeInfo CreateTypeInfo() + protected override TypeInfo CreateTypeInfoCore() { /* handle nesting_type */ if (createTypeCalled) @@ -1428,10 +1408,8 @@ public override RuntimeTypeHandle TypeHandle } } - public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) + protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) { - ArgumentNullException.ThrowIfNull(customBuilder); - string? attrname = customBuilder.Ctor.ReflectedType!.FullName; if (attrname == "System.Runtime.InteropServices.StructLayoutAttribute") { @@ -1551,14 +1529,13 @@ public override void SetCustomAttribute(CustomAttributeBuilder customBuilder) } } - public override void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) + protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - SetCustomAttribute(new CustomAttributeBuilder(con, binaryAttribute)); + SetCustomAttributeCore(new CustomAttributeBuilder(con, binaryAttribute)); } - public override EventBuilder DefineEvent(string name, EventAttributes attributes, Type eventtype) + protected override EventBuilder DefineEventCore(string name, EventAttributes attributes, Type eventtype) { - check_name(nameof(name), name); ArgumentNullException.ThrowIfNull(eventtype); check_not_created(); @@ -1578,16 +1555,14 @@ public override EventBuilder DefineEvent(string name, EventAttributes attributes return res; } - public override FieldBuilder DefineInitializedData(string name, byte[] data, FieldAttributes attributes) + protected override FieldBuilder DefineInitializedDataCore(string name, byte[] data, FieldAttributes attributes) { - ArgumentNullException.ThrowIfNull(data); - RuntimeFieldBuilder res = (RuntimeFieldBuilder)DefineUninitializedData(name, data.Length, attributes); res.SetRVAData(data); return res; } - public override FieldBuilder DefineUninitializedData(string name, int size, FieldAttributes attributes) + protected override FieldBuilder DefineUninitializedDataCore(string name, int size, FieldAttributes attributes) { ArgumentException.ThrowIfNullOrEmpty(name); if ((size <= 0) || (size > 0x3f0000)) @@ -1599,7 +1574,7 @@ public override FieldBuilder DefineUninitializedData(string name, int size, Fiel Type? datablobtype = pmodule.GetRegisteredType(fullname.NestedName(ident)); if (datablobtype == null) { - TypeBuilder tb = DefineNestedType(typeName, + TypeBuilder tb = DefineNestedTypeCore(typeName, TypeAttributes.NestedPrivate | TypeAttributes.ExplicitLayout | TypeAttributes.Sealed, typeof(ValueType), null, RuntimeFieldBuilder.RVADataPackingSize(size), size); tb.CreateType(); @@ -1612,7 +1587,7 @@ public override FieldBuilder DefineUninitializedData(string name, int size, Fiel [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2074:UnrecognizedReflectionPattern", Justification = "Linker doesn't analyze ResolveUserType but it's an identity function")] - public override void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) + protected override void SetParentCore([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) { check_not_created(); @@ -1735,7 +1710,7 @@ internal bool IsAssignableToInternal([NotNullWhen(true)] Type? c) return c.IsAssignableFrom(parent); } - public override bool IsCreated() + protected override bool IsCreatedCore() { return is_created; } @@ -1807,12 +1782,8 @@ public override MethodBase? DeclaringMethod } } - public override GenericTypeParameterBuilder[] DefineGenericParameters(params string[] names) + protected override GenericTypeParameterBuilder[] DefineGenericParametersCore(params string[] names) { - ArgumentNullException.ThrowIfNull(names); - if (names.Length == 0) - throw new ArgumentException(SR.Arg_EmptyArray, nameof(names)); - generic_params = new RuntimeGenericTypeParameterBuilder[names.Length]; for (int i = 0; i < names.Length; i++) { From 98ca969c2d9ad8ccd338dc0b4850c2bf3d021d5d Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Tue, 24 Jan 2023 17:32:38 -0800 Subject: [PATCH 34/36] Apply feedback and latest API review updates, refert compat suppressions --- .../Reflection/Emit/CustomAttributeBuilder.cs | 2 +- .../src/System/Reflection/Emit/ILGenerator.cs | 10 +- .../Reflection/Emit/ParameterBuilder.cs | 2 +- .../Reflection/Emit/RuntimeAssemblyBuilder.cs | 2 +- .../Reflection/Emit/RuntimeEventBuilder.cs | 2 +- .../Reflection/Emit/RuntimeFieldBuilder.cs | 2 +- .../Reflection/Emit/RuntimeMethodBuilder.cs | 2 +- .../Reflection/Emit/RuntimeModuleBuilder.cs | 42 +- .../Reflection/Emit/RuntimePropertyBuilder.cs | 2 +- .../Reflection/Emit/RuntimeTypeBuilder.cs | 9 +- .../System/Reflection/Emit/SignatureHelper.cs | 12 +- .../src/CompatibilitySuppressions.xml | 528 ------------------ .../System/Reflection/Emit/AssemblyBuilder.cs | 2 +- .../Reflection/Emit/ConstructorBuilder.cs | 2 +- .../src/System/Reflection/Emit/EnumBuilder.cs | 2 +- .../System/Reflection/Emit/EventBuilder.cs | 2 +- .../System/Reflection/Emit/FieldBuilder.cs | 2 +- .../Emit/GenericTypeParameterBuilder.cs | 2 +- .../System/Reflection/Emit/MethodBuilder.cs | 2 +- .../System/Reflection/Emit/ModuleBuilder.cs | 16 +- .../System/Reflection/Emit/PropertyBuilder.cs | 2 +- .../src/System/Reflection/Emit/TypeBuilder.cs | 3 +- .../ref/System.Reflection.Emit.cs | 118 ++-- .../Emit/RuntimeModuleBuilder.Mono.cs | 28 +- .../Emit/RuntimeTypeBuilder.Mono.cs | 6 + 25 files changed, 138 insertions(+), 664 deletions(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs index 26a73cf325e48..65e5c67132a8e 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/CustomAttributeBuilder.cs @@ -519,7 +519,7 @@ private static void EmitValue(BinaryWriter writer, Type type, object? value) // return the byte interpretation of the custom attribute internal void CreateCustomAttribute(RuntimeModuleBuilder mod, int tkOwner) { - RuntimeTypeBuilder.DefineCustomAttribute(mod, tkOwner, mod.GetMetadataToken(m_con), m_blob); + RuntimeTypeBuilder.DefineCustomAttribute(mod, tkOwner, mod.GetMethodMetadataToken(m_con), m_blob); } } } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs index 8416ee063a900..0bb7b8d574097 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ILGenerator.cs @@ -570,7 +570,7 @@ public virtual void EmitCalli(OpCode opcode, CallingConventions callingConventio UpdateStackSize(OpCodes.Calli, stackchange); RecordTokenFixup(); - PutInteger4(modBuilder.GetMetadataToken(sig)); + PutInteger4(modBuilder.GetSignatureMetadataToken(sig)); } public virtual void EmitCalli(OpCode opcode, CallingConvention unmanagedCallConv, Type? returnType, Type[]? parameterTypes) @@ -613,7 +613,7 @@ public virtual void EmitCalli(OpCode opcode, CallingConvention unmanagedCallConv EnsureCapacity(7); Emit(OpCodes.Calli); RecordTokenFixup(); - PutInteger4(modBuilder.GetMetadataToken(sig)); + PutInteger4(modBuilder.GetSignatureMetadataToken(sig)); } public virtual void EmitCall(OpCode opcode, MethodInfo methodInfo, Type[]? optionalParameterTypes) @@ -656,7 +656,7 @@ public virtual void Emit(OpCode opcode, SignatureHelper signature) int stackchange = 0; ModuleBuilder modBuilder = (ModuleBuilder)m_methodBuilder.Module; - int sig = modBuilder.GetMetadataToken(signature); + int sig = modBuilder.GetSignatureMetadataToken(signature); int tempVal = sig; @@ -814,7 +814,7 @@ public virtual void Emit(OpCode opcode, Label[] labels) public virtual void Emit(OpCode opcode, FieldInfo field) { ModuleBuilder modBuilder = (ModuleBuilder)m_methodBuilder.Module; - int tempVal = modBuilder.GetMetadataToken(field); + int tempVal = modBuilder.GetFieldMetadataToken(field); EnsureCapacity(7); InternalEmit(opcode); RecordTokenFixup(); @@ -828,7 +828,7 @@ public virtual void Emit(OpCode opcode, string str) // fixups if the module is persisted to a PE. ModuleBuilder modBuilder = (ModuleBuilder)m_methodBuilder.Module; - int tempVal = modBuilder.GetMetadataToken(str); + int tempVal = modBuilder.GetStringMetadataToken(str); EnsureCapacity(7); InternalEmit(opcode); PutInteger4(tempVal); diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs index 717f0823e4097..be7ab2c7df7d5 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/ParameterBuilder.cs @@ -26,7 +26,7 @@ public void SetCustomAttribute(ConstructorInfo con, byte[] binaryAttribute) RuntimeTypeBuilder.DefineCustomAttribute( _methodBuilder.GetModuleBuilder(), _token, - ((RuntimeModuleBuilder)_methodBuilder.GetModule()).GetMetadataToken(con), + ((RuntimeModuleBuilder)_methodBuilder.GetModule()).GetMethodMetadataToken(con), binaryAttribute); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs index 909d1f04d65fb..67a7ad8862408 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs @@ -288,7 +288,7 @@ protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binar RuntimeTypeBuilder.DefineCustomAttribute( _manifestModuleBuilder, // pass in the in-memory assembly module AssemblyDefToken, - _manifestModuleBuilder.GetMetadataToken(con), + _manifestModuleBuilder.GetMethodMetadataToken(con), binaryAttribute); } } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.cs index b8b66c6ce6956..4e990511d9436 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEventBuilder.cs @@ -87,7 +87,7 @@ protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binar RuntimeTypeBuilder.DefineCustomAttribute( m_module, m_evToken, - m_module.GetMetadataToken(con), + m_module.GetMethodMetadataToken(con), binaryAttribute); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.cs index 186d908b54d7f..9fcaa7d75385e 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeFieldBuilder.cs @@ -161,7 +161,7 @@ protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binar m_typeBuilder.ThrowIfCreated(); RuntimeTypeBuilder.DefineCustomAttribute(moduleBuilder, - m_fieldTok, moduleBuilder.GetMetadataToken(con), binaryAttribute); + m_fieldTok, moduleBuilder.GetMethodMetadataToken(con), binaryAttribute); } protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.cs index 5faeaefdab471..6b2cdad3cc258 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeMethodBuilder.cs @@ -699,7 +699,7 @@ protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binar { ThrowIfGeneric(); RuntimeTypeBuilder.DefineCustomAttribute(m_module, MetadataToken, - m_module.GetMetadataToken(con), + m_module.GetMethodMetadataToken(con), binaryAttribute); if (IsKnownCA(con)) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.cs index 8511d80891820..d607dc939782a 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.cs @@ -221,7 +221,7 @@ private int GetTypeRefNested(Type type, Module? refedModule) return GetTypeRef(new QCallModule(ref thisModule), typeName, new QCallModule(ref refedRuntimeModule), tkResolution); } - public override int GetMetadataToken(ConstructorInfo constructor) + public override int GetMethodMetadataToken(ConstructorInfo constructor) { // Helper to get constructor token. int tr; @@ -358,15 +358,15 @@ private int GetMemberRefToken(MethodBase method, Type[]? optionalParameterTypes) else if (!method.Module.Equals(this)) { // Use typeRef as parent because the method's declaringType lives in a different assembly - tkParent = GetMetadataToken(method.DeclaringType); + tkParent = GetTypeMetadataToken(method.DeclaringType); } else { // Use methodDef as parent because the method lives in this assembly and its declaringType has no generic arguments if (masmi != null) - tkParent = GetMetadataToken(masmi); + tkParent = GetMethodMetadataToken(masmi); else - tkParent = GetMetadataToken((method as ConstructorInfo)!); + tkParent = GetMethodMetadataToken((method as ConstructorInfo)!); } return GetMemberRefFromSignature(tkParent, method.Name, sigBytes, sigLength); @@ -881,7 +881,7 @@ protected override FieldBuilder DefineUninitializedDataCore(string name, int siz // 1. GetTypeToken // 2. ldtoken (see ILGenerator) // For all other occasions we should return the generic type instantiated on its formal parameters. - public int GetTypeTokenInternal(Type type, bool getGenericDefinition = false) + internal int GetTypeTokenInternal(Type type, bool getGenericDefinition = false) { lock (SyncRoot) { @@ -889,7 +889,7 @@ public int GetTypeTokenInternal(Type type, bool getGenericDefinition = false) } } - public override int GetMetadataToken(Type type) + public override int GetTypeMetadataToken(Type type) { return GetTypeTokenInternal(type, getGenericDefinition: true); } @@ -943,7 +943,7 @@ private int GetTypeTokenWorkerNoLock(Type type, bool getGenericDefinition) return GetTypeRefNested(type, refedModule); } - public override int GetMetadataToken(MethodInfo method) + public override int GetMethodMetadataToken(MethodInfo method) { lock (SyncRoot) { @@ -978,7 +978,7 @@ private int GetMethodTokenNoLock(MethodInfo method, bool getGenericTypeDefinitio } // method is defined in a different module - tr = getGenericTypeDefinition ? GetMetadataToken(method.DeclaringType) : GetTypeTokenInternal(method.DeclaringType); + tr = getGenericTypeDefinition ? GetTypeMetadataToken(method.DeclaringType) : GetTypeTokenInternal(method.DeclaringType); mr = GetMemberRef(method.DeclaringType.Module, tr, methodToken); } else if (method is MethodOnTypeBuilderInstantiation) @@ -1017,7 +1017,7 @@ private int GetMethodTokenNoLock(MethodInfo method, bool getGenericTypeDefinitio } else if (method is RuntimeMethodInfo rtMeth) { - tr = getGenericTypeDefinition ? GetMetadataToken(declaringType) : GetTypeTokenInternal(declaringType); + tr = getGenericTypeDefinition ? GetTypeMetadataToken(declaringType) : GetTypeTokenInternal(declaringType); mr = GetMemberRefOfMethodInfo(tr, rtMeth); } else @@ -1037,7 +1037,7 @@ private int GetMethodTokenNoLock(MethodInfo method, bool getGenericTypeDefinitio optionalCustomModifiers[i] = parameters[i].GetOptionalCustomModifiers(); } - tr = getGenericTypeDefinition ? GetMetadataToken(declaringType) : GetTypeTokenInternal(declaringType); + tr = getGenericTypeDefinition ? GetTypeMetadataToken(declaringType) : GetTypeTokenInternal(declaringType); SignatureHelper sigHelp; @@ -1088,7 +1088,7 @@ internal int GetMethodTokenInternal(MethodBase method, Type[]? optionalParameter } else { - tk = GetMetadataToken(methodInfoUnbound); + tk = GetMethodMetadataToken(methodInfoUnbound); } // For Ldtoken, Ldftn, and Ldvirtftn, we should emit the method def/ref token for a generic method definition. @@ -1111,11 +1111,11 @@ internal int GetMethodTokenInternal(MethodBase method, Type[]? optionalParameter { if (methodInfo != null) { - tk = GetMetadataToken(methodInfo); + tk = GetMethodMetadataToken(methodInfo); } else { - tk = GetMetadataToken((method as ConstructorInfo)!); + tk = GetMethodMetadataToken((method as ConstructorInfo)!); } } else @@ -1169,7 +1169,7 @@ protected override MethodInfo GetArrayMethodCore(Type arrayClass, string methodN return new SymbolMethod(this, token, arrayClass, methodName, callingConvention, returnType, parameterTypes); } - public override int GetMetadataToken(FieldInfo field) + public override int GetFieldMetadataToken(FieldInfo field) { lock (SyncRoot) { @@ -1252,24 +1252,24 @@ private int GetFieldTokenNoLock(FieldInfo field) return mr; } - public override int GetMetadataToken(string str) + public override int GetStringMetadataToken(string stringConstant) { - ArgumentNullException.ThrowIfNull(str); + ArgumentNullException.ThrowIfNull(stringConstant); // Returns a token representing a String constant. If the string // value has already been defined, the existing token will be returned. RuntimeModuleBuilder thisModule = this; - return GetStringConstant(new QCallModule(ref thisModule), str, str.Length); + return GetStringConstant(new QCallModule(ref thisModule), stringConstant, stringConstant.Length); } - public override int GetMetadataToken(SignatureHelper sigHelper) + public override int GetSignatureMetadataToken(SignatureHelper signature) { - ArgumentNullException.ThrowIfNull(sigHelper); + ArgumentNullException.ThrowIfNull(signature); // Define signature token given a signature helper. This will define a metadata // token for the signature described by SignatureHelper. // Get the signature in byte form. - byte[] sigBytes = sigHelper.InternalGetSignature(out int sigLength); + byte[] sigBytes = signature.InternalGetSignature(out int sigLength); RuntimeModuleBuilder thisModule = this; return RuntimeTypeBuilder.GetTokenFromSig(new QCallModule(ref thisModule), sigBytes, sigLength); } @@ -1294,7 +1294,7 @@ protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binar RuntimeTypeBuilder.DefineCustomAttribute( this, 1, // This is hard coding the module token to 1 - GetMetadataToken(con), + GetMethodMetadataToken(con), binaryAttribute); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.cs index 69a3d774f12da..cc3f25cf55599 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimePropertyBuilder.cs @@ -104,7 +104,7 @@ protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binar RuntimeTypeBuilder.DefineCustomAttribute( m_moduleBuilder, m_tkProperty, - m_moduleBuilder.GetMetadataToken(con), + m_moduleBuilder.GetMethodMetadataToken(con), binaryAttribute); } diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs index 0afa344330447..834818169e940 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.cs @@ -132,7 +132,7 @@ public void Bake(RuntimeModuleBuilder module, int token) if (m_customBuilder == null) { Debug.Assert(m_con != null); - DefineCustomAttribute(module, token, module.GetMetadataToken(m_con), + DefineCustomAttribute(module, token, module.GetMethodMetadataToken(m_con), m_binaryAttribute); } else @@ -1200,8 +1200,8 @@ protected override void DefineMethodOverrideCore(MethodInfo methodInfoBody, Meth // Loader restriction: body method has to be from this class throw new ArgumentException(SR.ArgumentException_BadMethodImplBody); - int tkBody = m_module.GetMetadataToken(methodInfoBody); - int tkDecl = m_module.GetMetadataToken(methodInfoDeclaration); + int tkBody = m_module.GetMethodMetadataToken(methodInfoBody); + int tkDecl = m_module.GetMethodMetadataToken(methodInfoDeclaration); RuntimeModuleBuilder module = m_module; DefineMethodImpl(new QCallModule(ref module), m_tdType, tkBody, tkDecl); @@ -1581,7 +1581,6 @@ protected override EventBuilder DefineEventCore(string name, EventAttributes att m_module, name, attributes, - // tkType, this, evToken); } @@ -1858,7 +1857,7 @@ internal int TypeToken protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binaryAttribute) { - DefineCustomAttribute(m_module, m_tdType, m_module.GetMetadataToken(con), binaryAttribute); + DefineCustomAttribute(m_module, m_tdType, m_module.GetMethodMetadataToken(con), binaryAttribute); } protected override void SetCustomAttributeCore(CustomAttributeBuilder customBuilder) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs index a1eda63c71f0d..0e730bf25fbd4 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/SignatureHelper.cs @@ -289,7 +289,7 @@ private void AddOneArgTypeHelper(Type clsArgument, Type[]? requiredCustomModifie AddElementType(CorElementType.ELEMENT_TYPE_CMOD_OPT); - int token = m_module!.GetMetadataToken(t); + int token = m_module!.GetTypeMetadataToken(t); Debug.Assert(!MetadataToken.IsNullToken(token)); AddToken(token); } @@ -311,7 +311,7 @@ private void AddOneArgTypeHelper(Type clsArgument, Type[]? requiredCustomModifie AddElementType(CorElementType.ELEMENT_TYPE_CMOD_REQD); - int token = m_module!.GetMetadataToken(t); + int token = m_module!.GetTypeMetadataToken(t); Debug.Assert(!MetadataToken.IsNullToken(token)); AddToken(token); } @@ -355,7 +355,7 @@ private void AddOneArgTypeHelperWorker(Type clsArgument, bool lastWasGenericInst } else { - tkType = m_module!.GetMetadataToken(clsArgument); + tkType = m_module!.GetTypeMetadataToken(clsArgument); } if (clsArgument.IsValueType) @@ -378,7 +378,7 @@ private void AddOneArgTypeHelperWorker(Type clsArgument, bool lastWasGenericInst } else { - tkType = m_module!.GetMetadataToken(clsArgument); + tkType = m_module!.GetTypeMetadataToken(clsArgument); } if (clsArgument.IsValueType) @@ -452,11 +452,11 @@ private void AddOneArgTypeHelperWorker(Type clsArgument, bool lastWasGenericInst } else if (clsArgument.IsValueType) { - InternalAddTypeToken(m_module.GetMetadataToken(clsArgument), CorElementType.ELEMENT_TYPE_VALUETYPE); + InternalAddTypeToken(m_module.GetTypeMetadataToken(clsArgument), CorElementType.ELEMENT_TYPE_VALUETYPE); } else { - InternalAddTypeToken(m_module.GetMetadataToken(clsArgument), CorElementType.ELEMENT_TYPE_CLASS); + InternalAddTypeToken(m_module.GetTypeMetadataToken(clsArgument), CorElementType.ELEMENT_TYPE_CLASS); } } } diff --git a/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml b/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml index ea509bd97682e..3f7209cd1a5d5 100644 --- a/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml +++ b/src/libraries/System.Private.CoreLib/src/CompatibilitySuppressions.xml @@ -17,534 +17,6 @@ CP0002 F:System.Resources.ResourceSet.Reader - - CP0013 - M:System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule(System.String) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.AssemblyBuilder.GetDynamicModule(System.String) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.get_InitLocals - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.GetILGenerator(System.Int32) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.set_InitLocals(System.Boolean) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ConstructorBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.CreateTypeInfo - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.DefineLiteral(System.String,System.Object) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.get_UnderlyingField - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EnumBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetAddOnMethod(System.Reflection.Emit.MethodBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetRaiseMethod(System.Reflection.Emit.MethodBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.EventBuilder.SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.FieldBuilder.SetConstant(System.Object) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.FieldBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.FieldBuilder.SetOffset(System.Int32) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetBaseTypeConstraint(System.Type) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.GenericTypeParameterBuilder.SetInterfaceConstraints(System.Type[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.DefineGenericParameters(System.String[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.DefineParameter(System.Int32,System.Reflection.ParameterAttributes,System.String) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.get_InitLocals - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.GetILGenerator - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.GetILGenerator(System.Int32) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.set_InitLocals(System.Boolean) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetImplementationFlags(System.Reflection.MethodImplAttributes) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetParameters(System.Type[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetReturnType(System.Type) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.MethodBuilder.SetSignature(System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.CreateGlobalFunctions - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineEnum(System.String,System.Reflection.TypeAttributes,System.Type) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineGlobalMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.GetArrayMethod(System.Type,System.String,System.Reflection.CallingConventions,System.Type,System.Type[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.ModuleBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.AddOtherMethod(System.Reflection.Emit.MethodBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetConstant(System.Object) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetGetMethod(System.Reflection.Emit.MethodBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.PropertyBuilder.SetSetMethod(System.Reflection.Emit.MethodBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.AddInterfaceImplementation(System.Type) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.CreateTypeInfo - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineConstructor(System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type[],System.Type[][],System.Type[][]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineDefaultConstructor(System.Reflection.MethodAttributes) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineEvent(System.String,System.Reflection.EventAttributes,System.Type) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineField(System.String,System.Type,System.Type[],System.Type[],System.Reflection.FieldAttributes) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineGenericParameters(System.String[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineInitializedData(System.String,System.Byte[],System.Reflection.FieldAttributes) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineMethod(System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineMethodOverride(System.Reflection.MethodInfo,System.Reflection.MethodInfo) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Reflection.Emit.PackingSize,System.Int32) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineNestedType(System.String,System.Reflection.TypeAttributes,System.Type,System.Type[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefinePInvokeMethod(System.String,System.String,System.String,System.Reflection.MethodAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],System.Runtime.InteropServices.CallingConvention,System.Runtime.InteropServices.CharSet) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineProperty(System.String,System.Reflection.PropertyAttributes,System.Reflection.CallingConventions,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineTypeInitializer - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.DefineUninitializedData(System.String,System.Int32,System.Reflection.FieldAttributes) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.get_PackingSize - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.get_Size - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.IsCreated - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.ConstructorInfo,System.Byte[]) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - M:System.Reflection.Emit.TypeBuilder.SetParent(System.Type) - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.ConstructorBuilder.InitLocals - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.EnumBuilder.UnderlyingField - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.MethodBuilder.InitLocals - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.TypeBuilder.PackingSize - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - - - CP0013 - P:System.Reflection.Emit.TypeBuilder.Size - ref/net8.0/System.Private.CoreLib.dll - lib/net8.0/System.Private.CoreLib.dll - CP0014 M:System.Runtime.InteropServices.Marshal.CreateWrapperOfType(System.Object,System.Type)->object?:[T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute] diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs index 400ac45e1cd22..6c63291e4d3f2 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/AssemblyBuilder.cs @@ -9,7 +9,7 @@ namespace System.Reflection.Emit { public abstract partial class AssemblyBuilder : Assembly { - private protected AssemblyBuilder() + protected AssemblyBuilder() { } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs index 4028a826405c6..3daac6f42875b 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ConstructorBuilder.cs @@ -5,7 +5,7 @@ namespace System.Reflection.Emit { public abstract class ConstructorBuilder : ConstructorInfo { - private protected ConstructorBuilder() + protected ConstructorBuilder() { } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs index b387e788e6117..f3cdb7f848fb3 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EnumBuilder.cs @@ -7,7 +7,7 @@ namespace System.Reflection.Emit { public abstract partial class EnumBuilder : TypeInfo { - private protected EnumBuilder() + protected EnumBuilder() { } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs index a5b649db3f59e..4c4a8f09f6ed4 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/EventBuilder.cs @@ -5,7 +5,7 @@ namespace System.Reflection.Emit { public abstract class EventBuilder { - private protected EventBuilder() + protected EventBuilder() { } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs index 2e87bb488bd00..2609261094562 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/FieldBuilder.cs @@ -5,7 +5,7 @@ namespace System.Reflection.Emit { public abstract class FieldBuilder : FieldInfo { - private protected FieldBuilder() + protected FieldBuilder() { } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs index 1dfb9f2097c92..3594991999021 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/GenericTypeParameterBuilder.cs @@ -7,7 +7,7 @@ namespace System.Reflection.Emit { public abstract partial class GenericTypeParameterBuilder : TypeInfo { - private protected GenericTypeParameterBuilder() + protected GenericTypeParameterBuilder() { } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs index 6b84e067fd036..dab5cd525e029 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/MethodBuilder.cs @@ -7,7 +7,7 @@ namespace System.Reflection.Emit { public abstract class MethodBuilder : MethodInfo { - private protected MethodBuilder() + protected MethodBuilder() { } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index f31afdd70c3a6..e8eda8e1f85a4 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -8,12 +8,10 @@ namespace System.Reflection.Emit { public abstract class ModuleBuilder : Module { - private protected ModuleBuilder() + protected ModuleBuilder() { } - // The following virtual methods are abstract in reference assembly. We keep them as virtual to maintain backward compatibility. - public void CreateGlobalFunctions() => CreateGlobalFunctionsCore(); @@ -135,11 +133,11 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) protected abstract void SetCustomAttributeCore(CustomAttributeBuilder customBuilder); - public abstract int GetMetadataToken(Type type); - public abstract int GetMetadataToken(FieldInfo field); - public abstract int GetMetadataToken(MethodInfo method); - public abstract int GetMetadataToken(ConstructorInfo contsuctor); - public abstract int GetMetadataToken(SignatureHelper sigHelper); - public abstract int GetMetadataToken(string str); + public abstract int GetTypeMetadataToken(Type type); + public abstract int GetFieldMetadataToken(FieldInfo field); + public abstract int GetMethodMetadataToken(MethodInfo method); + public abstract int GetMethodMetadataToken(ConstructorInfo contsuctor); + public abstract int GetSignatureMetadataToken(SignatureHelper signature); + public abstract int GetStringMetadataToken(string stringConstant); } } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs index 9a9c14509695b..924c40f948a12 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/PropertyBuilder.cs @@ -5,7 +5,7 @@ namespace System.Reflection.Emit { public abstract class PropertyBuilder : PropertyInfo { - private protected PropertyBuilder() + protected PropertyBuilder() { } diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs index f1fda30a8e54c..57bd198c65792 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.cs @@ -3,13 +3,12 @@ using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; -using System.Runtime.Intrinsics.Arm; namespace System.Reflection.Emit { public abstract partial class TypeBuilder : TypeInfo { - private protected TypeBuilder() + protected TypeBuilder() { } diff --git a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs index feb9d30f4bac8..b7ba1bb78bc6b 100644 --- a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs +++ b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs @@ -8,7 +8,7 @@ namespace System.Reflection.Emit { public abstract partial class AssemblyBuilder : System.Reflection.Assembly { - private protected AssemblyBuilder() { } + protected AssemblyBuilder() { } [System.ObsoleteAttribute("Assembly.CodeBase and Assembly.EscapedCodeBase are only included for .NET Framework compatibility. Use Assembly.Location instead.", DiagnosticId = "SYSLIB0012", UrlFormat = "https://aka.ms/dotnet-warnings/{0}")] [System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute("This member throws an exception for assemblies embedded in a single-file app")] public override string? CodeBase { get { throw null; } } @@ -54,9 +54,9 @@ private protected AssemblyBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Types might be removed")] public override System.Type? GetType(string name, bool throwOnError, bool ignoreCase) { throw null; } public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); } [System.FlagsAttribute] @@ -67,7 +67,7 @@ public enum AssemblyBuilderAccess } public abstract partial class ConstructorBuilder : System.Reflection.ConstructorInfo { - private protected ConstructorBuilder() { } + protected ConstructorBuilder() { } public override System.Reflection.MethodAttributes Attributes { get { throw null; } } public override System.Reflection.CallingConventions CallingConvention { get { throw null; } } public override System.Type? DeclaringType { get { throw null; } } @@ -90,17 +90,17 @@ private protected ConstructorBuilder() { } public override object Invoke(object? obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? parameters, System.Globalization.CultureInfo? culture) { throw null; } public override object Invoke(System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? parameters, System.Globalization.CultureInfo? culture) { throw null; } public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public void SetImplementationFlags(System.Reflection.MethodImplAttributes attributes) { throw null; } + public void SetImplementationFlags(System.Reflection.MethodImplAttributes attributes) { } protected abstract void SetImplementationFlagsCore(System.Reflection.MethodImplAttributes attributes); public override string ToString() { throw null; } } public abstract partial class EnumBuilder : System.Reflection.TypeInfo { - private protected EnumBuilder() { } + protected EnumBuilder() { } public override System.Reflection.Assembly Assembly { get { throw null; } } public override string? AssemblyQualifiedName { get { throw null; } } public override System.Type? BaseType { get { throw null; } } @@ -116,7 +116,7 @@ private protected EnumBuilder() { } public override string? Namespace { get { throw null; } } public override System.Type? ReflectedType { get { throw null; } } public override System.RuntimeTypeHandle TypeHandle { get { throw null; } } - public System.Reflection.Emit.FieldBuilder UnderlyingField { get; } + public System.Reflection.Emit.FieldBuilder UnderlyingField { get { throw null; } } protected abstract System.Reflection.Emit.FieldBuilder UnderlyingFieldCore { get; } public override System.Type UnderlyingSystemType { get { throw null; } } [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] @@ -184,30 +184,30 @@ private protected EnumBuilder() { } public override System.Type MakeArrayType(int rank) { throw null; } public override System.Type MakeByRefType() { throw null; } public override System.Type MakePointerType() { throw null; } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); } public abstract partial class EventBuilder { - private protected EventBuilder() { } - public void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + protected EventBuilder() { } + public void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } protected abstract void AddOtherMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); - public void SetAddOnMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + public void SetAddOnMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } protected abstract void SetAddOnMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public void SetRaiseMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + public void SetRaiseMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } protected abstract void SetRaiseMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); - public void SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + public void SetRemoveOnMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } protected abstract void SetRemoveOnMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); } public abstract partial class FieldBuilder : System.Reflection.FieldInfo { - private protected FieldBuilder() { } + protected FieldBuilder() { } public override System.Reflection.FieldAttributes Attributes { get { throw null; } } public override System.Type? DeclaringType { get { throw null; } } public override System.RuntimeFieldHandle FieldHandle { get { throw null; } } @@ -220,19 +220,19 @@ private protected FieldBuilder() { } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } public override object? GetValue(object? obj) { throw null; } public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } - public void SetConstant(object? defaultValue) { throw null; } + public void SetConstant(object? defaultValue) { } protected abstract void SetConstantCore(object? defaultValue); - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public void SetOffset(int iOffset) { throw null; } + public void SetOffset(int iOffset) { } protected abstract void SetOffsetCore(int iOffset); public override void SetValue(object? obj, object? val, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, System.Globalization.CultureInfo? culture) { } } public abstract partial class GenericTypeParameterBuilder : System.Reflection.TypeInfo { - private protected GenericTypeParameterBuilder() { } + protected GenericTypeParameterBuilder() { } public override System.Reflection.Assembly Assembly { get { throw null; } } public override string? AssemblyQualifiedName { get { throw null; } } public override System.Type? BaseType { get { throw null; } } @@ -323,21 +323,21 @@ private protected GenericTypeParameterBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] public override System.Type MakeGenericType(params System.Type[] typeArguments) { throw null; } public override System.Type MakePointerType() { throw null; } - public void SetBaseTypeConstraint([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? baseTypeConstraint) { throw null; } + public void SetBaseTypeConstraint([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? baseTypeConstraint) { } protected abstract void SetBaseTypeConstraintCore([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] Type? baseTypeConstraint); - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public void SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes genericParameterAttributes) { throw null; } + public void SetGenericParameterAttributes(System.Reflection.GenericParameterAttributes genericParameterAttributes) { } protected abstract void SetGenericParameterAttributesCore(System.Reflection.GenericParameterAttributes genericParameterAttributes); - public void SetInterfaceConstraints(params System.Type[]? interfaceConstraints) { throw null; } + public void SetInterfaceConstraints(params System.Type[]? interfaceConstraints) { } protected abstract void SetInterfaceConstraintsCore(params System.Type[]? interfaceConstraints); public override string ToString() { throw null; } } public abstract partial class MethodBuilder : System.Reflection.MethodInfo { - private protected MethodBuilder() { } + protected MethodBuilder() { } public override System.Reflection.MethodAttributes Attributes { get { throw null; } } public override System.Reflection.CallingConventions CallingConvention { get { throw null; } } public override bool ContainsGenericParameters { get { throw null; } } @@ -378,21 +378,21 @@ private protected MethodBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresDynamicCode("The native code for this instantiation might not be available at runtime.")] [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] public override System.Reflection.MethodInfo MakeGenericMethod(params System.Type[] typeArguments) { throw null; } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public void SetImplementationFlags(System.Reflection.MethodImplAttributes attributes) { throw null; } + public void SetImplementationFlags(System.Reflection.MethodImplAttributes attributes) { } protected abstract void SetImplementationFlagsCore(System.Reflection.MethodImplAttributes attributes); - public void SetParameters(params System.Type[] parameterTypes) { throw null; } - public void SetReturnType(System.Type? returnType) { throw null; } - public void SetSignature(System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers) { throw null; } + public void SetParameters(params System.Type[] parameterTypes) { } + public void SetReturnType(System.Type? returnType) { } + public void SetSignature(System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers) { } protected abstract void SetSignatureCore(System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers); public override string ToString() { throw null; } } public abstract partial class ModuleBuilder : System.Reflection.Module { - private protected ModuleBuilder() { } + protected ModuleBuilder() { } public override System.Reflection.Assembly Assembly { get { throw null; } } [System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute("Returns for modules with no file path")] public override string FullyQualifiedName { get { throw null; } } @@ -402,7 +402,7 @@ private protected ModuleBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute("Returns for modules with no file path")] public override string Name { get { throw null; } } public override string ScopeName { get { throw null; } } - public void CreateGlobalFunctions() { throw null; } + public void CreateGlobalFunctions() { } protected abstract void CreateGlobalFunctionsCore(); public System.Reflection.Emit.EnumBuilder DefineEnum(string name, System.Reflection.TypeAttributes visibility, System.Type underlyingType) { throw null; } protected abstract System.Reflection.Emit.EnumBuilder DefineEnumCore(string name, System.Reflection.TypeAttributes visibility, System.Type underlyingType); @@ -430,7 +430,6 @@ private protected ModuleBuilder() { } public override bool Equals(object? obj) { throw null; } public System.Reflection.MethodInfo GetArrayMethod(System.Type arrayClass, string methodName, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes) { throw null; } protected abstract System.Reflection.MethodInfo GetArrayMethodCore(System.Type arrayClass, string methodName, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes); - public int GetMetadataToken(System.Reflection.ConstructorInfo constructor) { throw null; } public override object[] GetCustomAttributes(bool inherit) { throw null; } public override object[] GetCustomAttributes(System.Type attributeType, bool inherit) { throw null; } public override System.Collections.Generic.IList GetCustomAttributesData() { throw null; } @@ -438,13 +437,14 @@ private protected ModuleBuilder() { } public override System.Reflection.FieldInfo? GetField(string name, System.Reflection.BindingFlags bindingAttr) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Fields might be removed")] public override System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingFlags) { throw null; } - public abstract int GetMetadataToken(System.Reflection.FieldInfo field); + public abstract int GetFieldMetadataToken(System.Reflection.FieldInfo field); public override int GetHashCode() { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Methods might be removed")] protected override System.Reflection.MethodInfo? GetMethodImpl(string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, System.Reflection.CallingConventions callConvention, System.Type[]? types, System.Reflection.ParameterModifier[]? modifiers) { throw null; } + public abstract int GetMethodMetadataToken(System.Reflection.ConstructorInfo constructor); + public abstract int GetMethodMetadataToken(System.Reflection.MethodInfo method); [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Methods might be removed")] public override System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingFlags) { throw null; } - public abstract int GetMetadataToken(System.Reflection.MethodInfo method); public override void GetPEKind(out System.Reflection.PortableExecutableKinds peKind, out System.Reflection.ImageFileMachine machine) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Types might be removed")] public override System.Type? GetType(string className) { throw null; } @@ -454,9 +454,9 @@ private protected ModuleBuilder() { } public override System.Type? GetType(string className, bool throwOnError, bool ignoreCase) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Types might be removed")] public override System.Type[] GetTypes() { throw null; } - public abstract int GetMetadataToken(System.Type type); - public abstract int GetMetadataToken(System.Reflection.Emit.SignatureHelper sigHelper); - public abstract int GetMetadataToken(string str); + public abstract int GetTypeMetadataToken(System.Type type); + public abstract int GetSignatureMetadataToken(System.Reflection.Emit.SignatureHelper signature); + public abstract int GetStringMetadataToken(string stringConstant); public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } public override bool IsResource() { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Trimming changes metadata tokens")] @@ -471,14 +471,14 @@ private protected ModuleBuilder() { } public override string ResolveString(int metadataToken) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Trimming changes metadata tokens")] public override System.Type ResolveType(int metadataToken, System.Type[]? genericTypeArguments, System.Type[]? genericMethodArguments) { throw null; } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); } public abstract partial class PropertyBuilder : System.Reflection.PropertyInfo { - private protected PropertyBuilder() { } + protected PropertyBuilder() { } public override System.Reflection.PropertyAttributes Attributes { get { throw null; } } public override bool CanRead { get { throw null; } } public override bool CanWrite { get { throw null; } } @@ -487,7 +487,7 @@ private protected PropertyBuilder() { } public override string Name { get { throw null; } } public override System.Type PropertyType { get { throw null; } } public override System.Type? ReflectedType { get { throw null; } } - public void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + public void AddOtherMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } protected abstract void AddOtherMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); public override System.Reflection.MethodInfo[] GetAccessors(bool nonPublic) { throw null; } public override object[] GetCustomAttributes(bool inherit) { throw null; } @@ -498,22 +498,22 @@ private protected PropertyBuilder() { } public override object GetValue(object? obj, object?[]? index) { throw null; } public override object GetValue(object? obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? index, System.Globalization.CultureInfo? culture) { throw null; } public override bool IsDefined(System.Type attributeType, bool inherit) { throw null; } - public void SetConstant(object? defaultValue) { throw null; } + public void SetConstant(object? defaultValue) { } protected abstract void SetConstantCore(object? defaultValue); - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public void SetGetMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + public void SetGetMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } protected abstract void SetGetMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); - public void SetSetMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { throw null; } + public void SetSetMethod(System.Reflection.Emit.MethodBuilder mdBuilder) { } protected abstract void SetSetMethodCore(System.Reflection.Emit.MethodBuilder mdBuilder); public override void SetValue(object? obj, object? value, object?[]? index) { } public override void SetValue(object? obj, object? value, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? index, System.Globalization.CultureInfo? culture) { } } public abstract partial class TypeBuilder : System.Reflection.TypeInfo { - private protected TypeBuilder() { } + protected TypeBuilder() { } public const int UnspecifiedTypeSize = 0; public override System.Reflection.Assembly Assembly { get { throw null; } } public override string? AssemblyQualifiedName { get { throw null; } } @@ -544,7 +544,7 @@ private protected TypeBuilder() { } public int Size { get { throw null; } } public override System.RuntimeTypeHandle TypeHandle { get { throw null; } } public override System.Type UnderlyingSystemType { get { throw null; } } - public void AddInterfaceImplementation([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type interfaceType) { throw null; } + public void AddInterfaceImplementation([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type interfaceType) { } protected abstract void AddInterfaceImplementationCore([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type interfaceType); [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] public System.Type CreateType() { throw null; } @@ -571,7 +571,7 @@ private protected TypeBuilder() { } public System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers) { throw null; } protected abstract System.Reflection.Emit.MethodBuilder DefineMethodCore(string name, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? returnTypeRequiredCustomModifiers, System.Type[]? returnTypeOptionalCustomModifiers, System.Type[]? parameterTypes, System.Type[][]? parameterTypeRequiredCustomModifiers, System.Type[][]? parameterTypeOptionalCustomModifiers); public System.Reflection.Emit.MethodBuilder DefineMethod(string name, System.Reflection.MethodAttributes attributes, System.Type? returnType, System.Type[]? parameterTypes) { throw null; } - public void DefineMethodOverride(System.Reflection.MethodInfo methodInfoBody, System.Reflection.MethodInfo methodInfoDeclaration) { throw null; } + public void DefineMethodOverride(System.Reflection.MethodInfo methodInfoBody, System.Reflection.MethodInfo methodInfoDeclaration) { } protected abstract void DefineMethodOverrideCore(System.Reflection.MethodInfo methodInfoBody, System.Reflection.MethodInfo methodInfoDeclaration); public System.Reflection.Emit.TypeBuilder DefineNestedType(string name) { throw null; } public System.Reflection.Emit.TypeBuilder DefineNestedType(string name, System.Reflection.TypeAttributes attr) { throw null; } @@ -666,11 +666,11 @@ private protected TypeBuilder() { } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("If some of the generic arguments are annotated (either with DynamicallyAccessedMembersAttribute, or generic constraints), trimming can't validate that the requirements of those annotations are met.")] public override System.Type MakeGenericType(params System.Type[] typeArguments) { throw null; } public override System.Type MakePointerType() { throw null; } - public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { throw null; } + public void SetCustomAttribute(System.Reflection.ConstructorInfo con, byte[] binaryAttribute) { } protected abstract void SetCustomAttributeCore(System.Reflection.ConstructorInfo con, byte[] binaryAttribute); - public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { throw null; } + public void SetCustomAttribute(System.Reflection.Emit.CustomAttributeBuilder customBuilder) { } protected abstract void SetCustomAttributeCore(System.Reflection.Emit.CustomAttributeBuilder customBuilder); - public void SetParent([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent) { throw null; } + public void SetParent([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent) { } protected abstract void SetParentCore([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type? parent); public override string ToString() { throw null; } } diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.Mono.cs index d5daa61efdc6d..cac8aeb0bcfc0 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeModuleBuilder.Mono.cs @@ -473,7 +473,7 @@ public override Type[] GetTypes() return copy; } - public override int GetMetadataToken(MethodInfo method) + public override int GetMethodMetadataToken(MethodInfo method) { ArgumentNullException.ThrowIfNull(method); @@ -482,17 +482,17 @@ public override int GetMetadataToken(MethodInfo method) internal int GetArrayMethodToken(Type arrayClass, string methodName, CallingConventions callingConvention, Type? returnType, Type[]? parameterTypes) { - return GetMetadataToken(GetArrayMethod(arrayClass, methodName, callingConvention, returnType, parameterTypes)); + return GetMethodMetadataToken(GetArrayMethod(arrayClass, methodName, callingConvention, returnType, parameterTypes)); } - public override int GetMetadataToken(ConstructorInfo con) + public override int GetMethodMetadataToken(ConstructorInfo constructor) { - ArgumentNullException.ThrowIfNull(con); + ArgumentNullException.ThrowIfNull(constructor); - return con.MetadataToken; + return constructor.MetadataToken; } - public override int GetMetadataToken(FieldInfo field) + public override int GetFieldMetadataToken(FieldInfo field) { ArgumentNullException.ThrowIfNull(field); @@ -516,19 +516,19 @@ internal int GetSignatureToken(byte[] sigBytes, int sigLength) throw new NotImplementedException(); } - public override int GetMetadataToken(SignatureHelper sigHelper) + public override int GetSignatureMetadataToken(SignatureHelper signature) { - ArgumentNullException.ThrowIfNull(sigHelper); - return GetToken(sigHelper); + ArgumentNullException.ThrowIfNull(signature); + return GetToken(signature); } - public override int GetMetadataToken(string str) + public override int GetStringMetadataToken(string stringConstant) { - ArgumentNullException.ThrowIfNull(str); - return GetToken(str); + ArgumentNullException.ThrowIfNull(stringConstant); + return GetToken(stringConstant); } - public override int GetMetadataToken(Type type) + public override int GetTypeMetadataToken(Type type) { ArgumentNullException.ThrowIfNull(type); if (type.IsByRef) @@ -540,7 +540,7 @@ public override int GetMetadataToken(Type type) Justification = "Reflection.Emit is not subject to trimming")] internal int GetTypeToken(string name) { - return GetMetadataToken(GetType(name)!); + return GetTypeMetadataToken(GetType(name)!); } [MethodImplAttribute(MethodImplOptions.InternalCall)] diff --git a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs index 094d9e1ef31de..67d46428068c9 100644 --- a/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs +++ b/src/mono/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeTypeBuilder.Mono.cs @@ -602,6 +602,7 @@ private void append_method(RuntimeMethodBuilder mb) protected override MethodBuilder DefineMethodCore(string name, MethodAttributes attributes, CallingConventions callingConvention, Type? returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { + check_name(nameof(name), name); check_not_created(); if (IsInterface && ( !((attributes & MethodAttributes.Abstract) != 0) || @@ -635,6 +636,9 @@ protected override MethodBuilder DefinePInvokeMethodCore( CallingConvention nativeCallConv, CharSet nativeCharSet) { + check_name(nameof(name), name); + check_name(nameof(dllName), dllName); + check_name(nameof(entryName), entryName); if ((attributes & MethodAttributes.Abstract) != 0) throw new ArgumentException(SR.Argument_BadPInvokeMethod); if (IsInterface) @@ -710,6 +714,7 @@ protected override FieldBuilder DefineFieldCore(string fieldName, Type type, Typ protected override PropertyBuilder DefinePropertyCore(string name, PropertyAttributes attributes, CallingConventions callingConvention, Type returnType, Type[]? returnTypeRequiredCustomModifiers, Type[]? returnTypeOptionalCustomModifiers, Type[]? parameterTypes, Type[][]? parameterTypeRequiredCustomModifiers, Type[][]? parameterTypeOptionalCustomModifiers) { + check_name(nameof(name), name); if (parameterTypes != null) foreach (Type param in parameterTypes) if (param == null) @@ -1536,6 +1541,7 @@ protected override void SetCustomAttributeCore(ConstructorInfo con, byte[] binar protected override EventBuilder DefineEventCore(string name, EventAttributes attributes, Type eventtype) { + check_name(nameof(name), name); ArgumentNullException.ThrowIfNull(eventtype); check_not_created(); From 039a89a4b2fa1f4cb83d6324a4815777be024006 Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Thu, 26 Jan 2023 14:59:35 -0800 Subject: [PATCH 35/36] Add Assert --- .../src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs index 67a7ad8862408..dddc0c4fee188 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeAssemblyBuilder.cs @@ -91,6 +91,8 @@ internal RuntimeAssemblyBuilder(AssemblyName name, AssemblyLoadContext assemblyLoadContext, IEnumerable? assemblyAttributes) { + Debug.Assert(name is not null); + _access = access; _internalAssembly = CreateDynamicAssembly(assemblyLoadContext, name, access); From a16ce6ed9d0230be6bb5f2a59c18c90699c7b99d Mon Sep 17 00:00:00 2001 From: Buyaa Namnan Date: Thu, 26 Jan 2023 17:43:49 -0800 Subject: [PATCH 36/36] Fix API compat failures --- .../src/System/Reflection/Emit/RuntimeEnumBuilder.cs | 2 +- .../src/System/Reflection/Emit/ModuleBuilder.cs | 2 +- .../System.Reflection.Emit/ref/System.Reflection.Emit.cs | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.cs b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.cs index 5ac47e64da97f..de3a31ada9e47 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Reflection/Emit/RuntimeEnumBuilder.cs @@ -38,7 +38,7 @@ protected override FieldBuilder DefineLiteralCore(string literalName, object? li return fieldBuilder; } - [return: DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes.All)] + [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] protected override TypeInfo CreateTypeInfoCore() { return m_typeBuilder.CreateTypeInfo(); diff --git a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs index e8eda8e1f85a4..0e2a07f03ab2d 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Reflection/Emit/ModuleBuilder.cs @@ -136,7 +136,7 @@ public void SetCustomAttribute(CustomAttributeBuilder customBuilder) public abstract int GetTypeMetadataToken(Type type); public abstract int GetFieldMetadataToken(FieldInfo field); public abstract int GetMethodMetadataToken(MethodInfo method); - public abstract int GetMethodMetadataToken(ConstructorInfo contsuctor); + public abstract int GetMethodMetadataToken(ConstructorInfo constructor); public abstract int GetSignatureMetadataToken(SignatureHelper signature); public abstract int GetStringMetadataToken(string stringConstant); } diff --git a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs index b7ba1bb78bc6b..14b8c7b36d9c1 100644 --- a/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs +++ b/src/libraries/System.Reflection.Emit/ref/System.Reflection.Emit.cs @@ -123,6 +123,7 @@ protected EnumBuilder() { } public System.Type CreateType() { throw null; } [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] public System.Reflection.TypeInfo CreateTypeInfo() { throw null; } + [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] protected abstract System.Reflection.TypeInfo CreateTypeInfoCore(); public System.Reflection.Emit.FieldBuilder DefineLiteral(string literalName, object? literalValue) { throw null; } protected abstract System.Reflection.Emit.FieldBuilder DefineLiteralCore(string literalName, object? literalValue); @@ -416,6 +417,7 @@ public void CreateGlobalFunctions() { } public System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet) { throw null; } [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] public System.Reflection.Emit.MethodBuilder DefinePInvokeMethod(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet) { throw null; } + [System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("P/Invoke marshalling may dynamically access members that could be trimmed.")] protected abstract System.Reflection.Emit.MethodBuilder DefinePInvokeMethodCore(string name, string dllName, string entryName, System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type? returnType, System.Type[]? parameterTypes, System.Runtime.InteropServices.CallingConvention nativeCallConv, System.Runtime.InteropServices.CharSet nativeCharSet); public System.Reflection.Emit.TypeBuilder DefineType(string name) { throw null; } public System.Reflection.Emit.TypeBuilder DefineType(string name, System.Reflection.TypeAttributes attr) { throw null; } @@ -542,6 +544,7 @@ protected TypeBuilder() { } protected abstract System.Reflection.Emit.PackingSize PackingSizeCore { get; } public override System.Type? ReflectedType { get { throw null; } } public int Size { get { throw null; } } + protected abstract int SizeCore { get; } public override System.RuntimeTypeHandle TypeHandle { get { throw null; } } public override System.Type UnderlyingSystemType { get { throw null; } } public void AddInterfaceImplementation([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type interfaceType) { } @@ -550,6 +553,7 @@ public void AddInterfaceImplementation([System.Diagnostics.CodeAnalysis.Dynamica public System.Type CreateType() { throw null; } [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] public System.Reflection.TypeInfo CreateTypeInfo() { throw null; } + [return: System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] protected abstract System.Reflection.TypeInfo CreateTypeInfoCore(); public System.Reflection.Emit.ConstructorBuilder DefineConstructor(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type[]? parameterTypes) { throw null; } public System.Reflection.Emit.ConstructorBuilder DefineConstructor(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, System.Type[]? parameterTypes, System.Type[][]? requiredCustomModifiers, System.Type[][]? optionalCustomModifiers) { throw null; }