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.

Co-authored-by: sbomer <787361+sbomer@users.noreply.github.com>
@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