Skip to content

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

Merged
jeffschwMSFT merged 3 commits into
release/9.0-stagingfrom
backport/pr-109430-to-release/9.0-staging
Jan 10, 2025
Merged

[release/9.0-staging] Fix analyzer tracking of nullable enums#110331
jeffschwMSFT merged 3 commits into
release/9.0-stagingfrom
backport/pr-109430-to-release/9.0-staging

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Dec 2, 2024

Copy link
Copy Markdown
Contributor

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:

usingSystem.Diagnostics.CodeAnalysis;usingSystem.Runtime.CompilerServices;RuntimeHelpers.RunClassConstructor(typeof(Nullable<E>).TypeHandle);// unexpected warningenumE{}

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:

privatevoidStaticInitializer_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.

@ghostghost added the area-Tools-ILLink .NET linker development as well as trimming analyzers label Dec 2, 2024
@dotnet-policy-servicedotnet-policy-serviceBot added the linkable-framework Issues associated with delivering a linker friendly framework label Dec 2, 2024
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@sbomersbomer added the Servicing-consider Issue for next servicing release review label Dec 2, 2024
@sbomer
sbomer requested review from a team and agockeDecember 2, 2024 21:49
@sbomer

sbomer commented Dec 2, 2024

Copy link
Copy Markdown
Member

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

@jeffschwMSFTjeffschwMSFT left a comment

Copy link
Copy Markdown
Member

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

@jeffschwMSFTjeffschwMSFT removed the Servicing-consider Issue for next servicing release review label Dec 12, 2024
@jeffschwMSFTjeffschwMSFT added the Servicing-consider Issue for next servicing release review label Jan 9, 2025
@jeffschwMSFTjeffschwMSFT added this to the 9.0.x milestone Jan 9, 2025
@sbomer
sbomer requested a review from jtschusterJanuary 9, 2025 21:34
@jeffschwMSFTjeffschwMSFT added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jan 10, 2025
@jeffschwMSFTjeffschwMSFT modified the milestones: 9.0.x, 9.0.2Jan 10, 2025
@jeffschwMSFT
jeffschwMSFT merged commit dd5962b into release/9.0-stagingJan 10, 2025
@agocke
agocke deleted the backport/pr-109430-to-release/9.0-staging branch January 10, 2025 23:36
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Feb 10, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Tools-ILLink.NET linker development as well as trimming analyzerslinkable-frameworkIssues associated with delivering a linker friendly frameworkServicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sbomer@agocke@jeffschwMSFT