Skip to content
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

[release/9.0-staging] Fix analyzer tracking of nullable enums #110331

Open
wants to merge 2 commits into
base: release/9.0-staging
Choose a base branch
from

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Dec 2, 2024

Backport of #109430 to release/9.0-staging

/cc @sbomer

Customer Impact

  • Customer reported
  • Found internally

Originally fixed in .NET 10 when found while investigating a related issue, and we got a customer report after the .NET 9 release. Customer reported via email when attempting to make an app NativeAOT and trim compatible. Impact is that there are unexpected analyzer warnings in source-generated code.

Simple example of a false positive warning customers could hit:

using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;

RuntimeHelpers.RunClassConstructor(typeof(Nullable<E>).TypeHandle); // unexpected warning

enum E { }

The actual customer-reported issue showed up in source-generated code not controlled by the customer, in a WinUI app:

IL2059: Unrecognized value passed to the parameter 'type' of method 'System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(RuntimeTypeHandle)'. It's not possible to guarantee the availability of the target static constructor.

for generated code like:

private void StaticInitializer_158_Nullable() => global::System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(typeof(global::System.Nullable<global::CommunityToolkit.WinUI.Animations.EasingType>).TypeHandle);

Regression

  • No

Testing

Added unit test which validates that the same pattern reported by the customer does not produces a warning.

Risk

Low. Analyzer-only change, doesn't impact runtime. Removes incorrect warnings produced by the trim analyzer.

@dotnet-issue-labeler dotnet-issue-labeler bot added the area-Tools-ILLink .NET linker development as well as trimming analyzers label Dec 2, 2024
@dotnet-policy-service dotnet-policy-service bot added the linkable-framework Issues associated with delivering a linker friendly framework label Dec 2, 2024
Copy link
Contributor

Tagging subscribers to this area: @dotnet/illink
See info in area-owners.md if you want to be subscribed.

@sbomer sbomer added the Servicing-consider Issue for next servicing release review label Dec 2, 2024
@sbomer sbomer requested review from agocke and a team December 2, 2024 21:49
@sbomer
Copy link
Member

sbomer commented Dec 2, 2024

This is surfacing existing test failures, fixing in #110340.

Copy link
Member

@jeffschwMSFT jeffschwMSFT left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm. please get a code review. we will take for consideration in 9.0.x

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-Tools-ILLink .NET linker development as well as trimming analyzers linkable-framework Issues associated with delivering a linker friendly framework Servicing-consider Issue for next servicing release review
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants