Add DynamicallyAccessedMembers attributes to UIsInstT methods in variance tests#121833
Conversation
|
@copilot for C# source files under src/tests/Loader/classloader/generics/Variance/IL, find the following method in each of the files: public static bool UIsInstT<T,U>(bool expected). Add an attribute like this: public static bool UIsInstT<T, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] U>(bool expected). The namespace of the attribute is System.Diagnostics.CodeAnalysis. |
1 similar comment
|
@copilot for C# source files under src/tests/Loader/classloader/generics/Variance/IL, find the following method in each of the files: public static bool UIsInstT<T,U>(bool expected). Add an attribute like this: public static bool UIsInstT<T, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] U>(bool expected). The namespace of the attribute is System.Diagnostics.CodeAnalysis. |
Co-authored-by: MichalStrehovsky <[email protected]>
Completed - see commit bfd0090.
Added |
67c6b16
into
MichalStrehovsky-patch-1
Fixes Issue
main PR
Description
Added
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]attribute to theUtype parameter in theUIsInstT<T,U>method across six variance test files (IsInst001.cs through IsInst006.cs) undersrc/tests/Loader/classloader/generics/Variance/IL.This annotation is required because the method calls
Activator.CreateInstance(typeof(U)), which needs the type to have a public parameterless constructor. Without this attribute, the trimmer removes the constructor when building withTrimMode=full, causing test failures.Also added the required
using System.Diagnostics.CodeAnalysis;namespace to all six files.Customer Impact
Ensures proper test coverage for trimming scenarios. Without these attributes, variance tests would fail when built with TrimMode=full, reducing our confidence in the trimming behavior of variance-related functionality.
Regression
Not applicable - this is new work for trimming compatibility to enable building the test tree with TrimMode=full.
Testing
UnboxUToTInternalmethodsRisk
Low - changes only add trimming annotations to test code without altering test logic or functionality.
Package authoring no longer needed in .NET 9
IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.