-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Add DynamicallyAccessedMembers attributes to UIsInstT methods in variance tests #121833
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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.