Skip to content

[release/10.0] Fix RoslynAnalyzer crash on indexer property parameters#121861

Merged
agocke merged 2 commits intorelease/10.0from
copilot/backport-runtime-fix-121603
Dec 5, 2025
Merged

[release/10.0] Fix RoslynAnalyzer crash on indexer property parameters#121861
agocke merged 2 commits intorelease/10.0from
copilot/backport-runtime-fix-121603

Conversation

Copy link
Contributor

Copilot AI commented Nov 20, 2025

Backport of #121603 to release/10.0

Customer Impact

  • Customer reported
  • Found internally

Reported by customer in #121546

Regression

  • Yes
  • [] No

Regressed in .NET 10 by analyzer changes that touched related code.

Testing

Verified on the provided repro.

Risk

Low. Adds an early return to the analysis in a place that doesn't have downstream effects.


Backports #121603 to release/10.0. Fixes #121546.

The RoslynAnalyzer crashes when analyzing indexer property parameter initializers because it assumes all parameters belong to methods, but Roslyn provides operation blocks for property indexer parameters that don't have a direct IL equivalent.

Changes

  • TrimAnalysisVisitor.cs: Guard against null parameterMethod in GetParameterTargetValue. Returns TopValue for parameters not owned by methods (e.g., indexer parameter initializers), preventing crashes while preserving correct analysis for method parameters.

  • PropertyDataFlow.cs: Add test coverage for annotated indexer parameters and indexers with default arguments to verify the analyzer handles these cases without crashing.

// Previously crashed on this pattern:
public Type this[[DynamicallyAccessedMembers(...)] Type index]
{
    get { ... }
    set { ... }
}
Original prompt

Backport #121603 to the release/10.0 branch.


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@dotnet-policy-service dotnet-policy-service bot added the linkable-framework Issues associated with delivering a linker friendly framework label Nov 20, 2025
Copilot AI changed the title [WIP] Backport runtime fix from PR 121603 to release/10.0 Backport PR #121603: Fix RoslynAnalyzer crash on indexer property parameters Nov 20, 2025
Copilot AI requested a review from sbomer November 20, 2025 22:44
@sbomer sbomer marked this pull request as ready for review December 1, 2025 21:26
@sbomer sbomer requested a review from marek-safar as a code owner December 1, 2025 21:26
Copilot AI review requested due to automatic review settings December 1, 2025 21:26
@sbomer sbomer changed the title Backport PR #121603: Fix RoslynAnalyzer crash on indexer property parameters [release/10.0] Fix RoslynAnalyzer crash on indexer property parameters Dec 1, 2025
@sbomer sbomer requested a review from jtschuster December 1, 2025 21:27
@sbomer sbomer added the Servicing-consider Issue for next servicing release review label Dec 1, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This is a backport that fixes a crash in the RoslynAnalyzer when analyzing indexer property parameters. The analyzer previously assumed all parameters belong to methods, but Roslyn provides operation blocks for property indexer parameters which don't have a direct method equivalent in IL.

  • Adds null guard in GetParameterTargetValue to handle parameters not owned by methods
  • Returns TopValue for indexer parameters in their initializer context, preventing crashes
  • Adds comprehensive test coverage for annotated indexer parameters and default arguments

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
src/tools/illink/src/ILLink.RoslynAnalyzer/TrimAnalysis/TrimAnalysisVisitor.cs Adds null guard for parameterMethod in GetParameterTargetValue to prevent crash when analyzing indexer parameter initializers by returning TopValue for non-method parameters
src/tools/illink/test/Mono.Linker.Tests.Cases/DataFlow/PropertyDataFlow.cs Adds test classes AnnotatedIndexerParameter and IndexerDefaultArgument to verify analyzer handles indexer parameters with DAM annotations and default arguments without crashing, with appropriate warning expectations

@agocke agocke added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Dec 5, 2025
@agocke
Copy link
Member

agocke commented Dec 5, 2025

/ba-g failures are wasm workload build

@agocke agocke merged commit 54c815c into release/10.0 Dec 5, 2025
89 of 102 checks passed
@agocke agocke deleted the copilot/backport-runtime-fix-121603 branch December 5, 2025 21:32
@rbhanda rbhanda added this to the 10.0.2 milestone Dec 5, 2025
@github-actions github-actions bot locked and limited conversation to collaborators Jan 5, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

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.

6 participants