From 13f99335d4d4ed1f12a0174cef9e126decb1dbbe Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Mon, 7 Dec 2020 17:25:11 -0600 Subject: [PATCH 1/3] Address remaining Ref.Emit warnings in Mono. Contributes to #45623 --- .../src/ILLink/ILLink.Suppressions.xml | 17 ----------------- .../Reflection/Emit/MethodOnTypeBuilderInst.cs | 3 +++ .../System/Reflection/Emit/TypeBuilder.Mono.cs | 4 +++- 3 files changed, 6 insertions(+), 18 deletions(-) delete mode 100644 src/mono/netcore/System.Private.CoreLib/src/ILLink/ILLink.Suppressions.xml diff --git a/src/mono/netcore/System.Private.CoreLib/src/ILLink/ILLink.Suppressions.xml b/src/mono/netcore/System.Private.CoreLib/src/ILLink/ILLink.Suppressions.xml deleted file mode 100644 index ea4c3cc3a9eec1..00000000000000 --- a/src/mono/netcore/System.Private.CoreLib/src/ILLink/ILLink.Suppressions.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - ILLink - IL2060 - member - M:System.Reflection.Emit.MethodOnTypeBuilderInst.RuntimeResolve - - - ILLink - IL2074 - member - M:System.Reflection.Emit.TypeBuilder.ResolveUserTypes - - - \ No newline at end of file diff --git a/src/mono/netcore/System.Private.CoreLib/src/System/Reflection/Emit/MethodOnTypeBuilderInst.cs b/src/mono/netcore/System.Private.CoreLib/src/System/Reflection/Emit/MethodOnTypeBuilderInst.cs index 50c9711ec306cf..98c09481bfbdc3 100644 --- a/src/mono/netcore/System.Private.CoreLib/src/System/Reflection/Emit/MethodOnTypeBuilderInst.cs +++ b/src/mono/netcore/System.Private.CoreLib/src/System/Reflection/Emit/MethodOnTypeBuilderInst.cs @@ -100,6 +100,9 @@ private static MethodInfo ExtractBaseMethod(MethodInfo info) } // Called from the runtime to return the corresponding finished MethodInfo object + [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2060:MakeGenericMethod", + Justification = "MethodOnTypeBuilderInst is Reflection.Emit's underlying implementation of MakeGenericMethod. " + + "Callers of the outer calls to MakeGenericMethod will be warned as appropriate.")] internal MethodInfo RuntimeResolve() { Type type = instantiation.InternalResolve(); diff --git a/src/mono/netcore/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs b/src/mono/netcore/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs index b1d1c061930850..2078fedb78c3e1 100644 --- a/src/mono/netcore/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs +++ b/src/mono/netcore/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs @@ -910,6 +910,8 @@ private bool has_ctor_method() return this; } + [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2074:UnrecognizedReflectionPattern", + Justification = "Linker doesn't analyze ResolveUserType but it's an identity function")] private void ResolveUserTypes() { parent = ResolveUserType(parent); @@ -1615,7 +1617,7 @@ public FieldBuilder DefineUninitializedData(string name, int size, FieldAttribut public override int MetadataToken => 0x02000000 | table_idx; [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2074:UnrecognizedReflectionPattern", - Justification = "Linker doesn't recongnize ResolveUserType")] + Justification = "Linker doesn't analyze ResolveUserType but it's an identity function")] public void SetParent([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? parent) { check_not_created(); From 53086b36abed24d3dfad899836147692bd67b146 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Mon, 7 Dec 2020 17:30:14 -0600 Subject: [PATCH 2/3] Remove mono suppressions file from illink-sharedframework.targets --- src/libraries/illink-sharedframework.targets | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libraries/illink-sharedframework.targets b/src/libraries/illink-sharedframework.targets index 5b1df7c13de168..5daa06860fa73b 100644 --- a/src/libraries/illink-sharedframework.targets +++ b/src/libraries/illink-sharedframework.targets @@ -72,7 +72,6 @@ <_SuppressionsXmls Include="$(CoreLibSharedILLinkSuppressionsFilesPrefix).xml" /> <_SuppressionsXmls Condition="'$(TargetOS)' != 'windows'" Include="$(CoreLibSharedILLinkSuppressionsFilesPrefix).NonWindows.xml" /> - <_SuppressionsXmls Condition="'$(RuntimeFlavor)' == 'Mono'" Include="$(MonoProjectRoot)netcore\System.Private.CoreLib\$(ProjectILLinkSuppressionsFile).xml" /> From c395d9f52e39a0ddf7195e1177b8f8eed85fe2f7 Mon Sep 17 00:00:00 2001 From: Eric Erhardt Date: Mon, 7 Dec 2020 17:32:40 -0600 Subject: [PATCH 3/3] Fix typeo. --- .../src/System/Reflection/Emit/TypeBuilder.Mono.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/netcore/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs b/src/mono/netcore/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs index 2078fedb78c3e1..3febd6041e523c 100644 --- a/src/mono/netcore/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs +++ b/src/mono/netcore/System.Private.CoreLib/src/System/Reflection/Emit/TypeBuilder.Mono.cs @@ -1056,7 +1056,7 @@ public override Type GetElementType() /* Needed to keep signature compatibility with MS.NET */ [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents)] [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2085:UnrecognizedReflectionPattern", - Justification = "Linker doesn't recongnize GetEvents(BindingFlags.Public) but this is what the body is doing")] + Justification = "Linker doesn't recognize GetEvents(BindingFlags.Public) but this is what the body is doing")] public override EventInfo[] GetEvents() { const BindingFlags DefaultBindingFlags = BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance;