Skip to content

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.

@ghost ghost 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

@jeffschwMSFT jeffschwMSFT removed the Servicing-consider Issue for next servicing release review label Dec 12, 2024
@jeffschwMSFT jeffschwMSFT added the Servicing-consider Issue for next servicing release review label Jan 9, 2025
@jeffschwMSFT jeffschwMSFT added this to the 9.0.x milestone Jan 9, 2025
@sbomer sbomer requested a review from jtschuster January 9, 2025 21:34
@jeffschwMSFT jeffschwMSFT added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jan 10, 2025
@jeffschwMSFT jeffschwMSFT modified the milestones: 9.0.x, 9.0.2 Jan 10, 2025
@jeffschwMSFT jeffschwMSFT merged commit dd5962b into release/9.0-staging Jan 10, 2025
10 checks passed
@agocke agocke deleted the backport/pr-109430-to-release/9.0-staging branch January 10, 2025 23:36
@github-actions github-actions bot locked and limited conversation to collaborators Feb 10, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-Tools-ILLink .NET linker development as well as trimming analyzers linkable-framework Issues associated with delivering a linker friendly framework Servicing-approved Approved for servicing release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants