Skip to content

Fix analyzer RCS1246 for conditional access expressions - #1772

Merged
josefpihrt merged 7 commits into
dotnet:mainfrom
krajek:fix/expression-analyzer-for-nullable-ireadonlylist
Aug 8, 2026
Merged

Fix analyzer RCS1246 for conditional access expressions#1772
josefpihrt merged 7 commits into
dotnet:mainfrom
krajek:fix/expression-analyzer-for-nullable-ireadonlylist

Conversation

@krajek

@krajek krajek commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Smallest reproducible program I could come up with:

new { Values = new int[0] }?.Values.ElementAt(0);

Without the fix, the analyzer in that case throws NRE and fails the build.

@krajek

krajek commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

@dotnet-policy-service agree

@krajek

krajek commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

Hi, is there anything I could do to move this forward?

Comment thread ChangeLog.md Outdated
Comment thread src/Common/CSharp/Analysis/UseElementAccessAnalysis.cs Outdated
@josefpihrt

Copy link
Copy Markdown
Collaborator

@krajek Hey, thank you for your contribution and sorry for late review.

@josefpihrt
josefpihrt merged commit ba8de95 into dotnet:main Aug 8, 2026
17 checks passed
This was referenced Aug 8, 2026
vdolek pushed a commit to EvilBrainsTechnology/EvilCase that referenced this pull request Aug 10, 2026
Updated [Roslynator.Analyzers](https://github.com/dotnet/roslynator)
from 4.15.0 to 4.16.0.

<details>
<summary>Release notes</summary>

_Sourced from [Roslynator.Analyzers's
releases](https://github.com/dotnet/roslynator/releases)._

## 4.16.0

### Added

- [CLI] Suppress error code from Roslynator when it detects issues in
code but runs successfully
([PR](dotnet/roslynator#1756) by @​mdrybak)

### Fixed

- Fix analyzer
[RCS1118](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1118)
to not report local variable passed as 'in' argument
([PR](dotnet/roslynator#1782) by @​NoahStolk)
- Fix analyzer
[RCS1074](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1074)
([PR](dotnet/roslynator#1768) by @​cbersch)
- Fix enum contained flags check for partial matches in
[RCS1258](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1258)
([PR](dotnet/roslynator#1740) by @​ovska)
- Fix analyzer
[RCS1146](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1146)
([PR](dotnet/roslynator#1747))
- Fix analyzer
[RCS1194](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1194)
([PR](dotnet/roslynator#1733))
- Fix analyzer
[RCS1060](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1060)
to ignore classes marked with `file` modifier
([PR](dotnet/roslynator#1777) by @​cbersch)
- Fix analyzer
[RCS1231](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1231)
([PR](dotnet/roslynator#1774) by @​cbersch)
- Fix analyzer
[RCS1246](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1246)
for conditional access expressions
([PR](dotnet/roslynator#1772 by @​krajek))
- [CLI] Fix `fix` command ignoring `--include` / `--exclude` file filter
([PR](dotnet/roslynator#1758) by @​hashiiiii)
- [CLI] Fix loading of projects and solutions on .NET 10 SDK
([PR](dotnet/roslynator#1783))


Commits viewable in [compare
view](dotnet/roslynator@v4.15.0...v4.16.0).
</details>

Updated
[Roslynator.CodeAnalysis.Analyzers](https://github.com/dotnet/roslynator)
from 4.15.0 to 4.16.0.

<details>
<summary>Release notes</summary>

_Sourced from [Roslynator.CodeAnalysis.Analyzers's
releases](https://github.com/dotnet/roslynator/releases)._

## 4.16.0

### Added

- [CLI] Suppress error code from Roslynator when it detects issues in
code but runs successfully
([PR](dotnet/roslynator#1756) by @​mdrybak)

### Fixed

- Fix analyzer
[RCS1118](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1118)
to not report local variable passed as 'in' argument
([PR](dotnet/roslynator#1782) by @​NoahStolk)
- Fix analyzer
[RCS1074](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1074)
([PR](dotnet/roslynator#1768) by @​cbersch)
- Fix enum contained flags check for partial matches in
[RCS1258](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1258)
([PR](dotnet/roslynator#1740) by @​ovska)
- Fix analyzer
[RCS1146](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1146)
([PR](dotnet/roslynator#1747))
- Fix analyzer
[RCS1194](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1194)
([PR](dotnet/roslynator#1733))
- Fix analyzer
[RCS1060](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1060)
to ignore classes marked with `file` modifier
([PR](dotnet/roslynator#1777) by @​cbersch)
- Fix analyzer
[RCS1231](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1231)
([PR](dotnet/roslynator#1774) by @​cbersch)
- Fix analyzer
[RCS1246](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1246)
for conditional access expressions
([PR](dotnet/roslynator#1772 by @​krajek))
- [CLI] Fix `fix` command ignoring `--include` / `--exclude` file filter
([PR](dotnet/roslynator#1758) by @​hashiiiii)
- [CLI] Fix loading of projects and solutions on .NET 10 SDK
([PR](dotnet/roslynator#1783))


Commits viewable in [compare
view](dotnet/roslynator@v4.15.0...v4.16.0).
</details>

Updated
[Roslynator.Formatting.Analyzers](https://github.com/dotnet/roslynator)
from 4.15.0 to 4.16.0.

<details>
<summary>Release notes</summary>

_Sourced from [Roslynator.Formatting.Analyzers's
releases](https://github.com/dotnet/roslynator/releases)._

## 4.16.0

### Added

- [CLI] Suppress error code from Roslynator when it detects issues in
code but runs successfully
([PR](dotnet/roslynator#1756) by @​mdrybak)

### Fixed

- Fix analyzer
[RCS1118](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1118)
to not report local variable passed as 'in' argument
([PR](dotnet/roslynator#1782) by @​NoahStolk)
- Fix analyzer
[RCS1074](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1074)
([PR](dotnet/roslynator#1768) by @​cbersch)
- Fix enum contained flags check for partial matches in
[RCS1258](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1258)
([PR](dotnet/roslynator#1740) by @​ovska)
- Fix analyzer
[RCS1146](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1146)
([PR](dotnet/roslynator#1747))
- Fix analyzer
[RCS1194](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1194)
([PR](dotnet/roslynator#1733))
- Fix analyzer
[RCS1060](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1060)
to ignore classes marked with `file` modifier
([PR](dotnet/roslynator#1777) by @​cbersch)
- Fix analyzer
[RCS1231](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1231)
([PR](dotnet/roslynator#1774) by @​cbersch)
- Fix analyzer
[RCS1246](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1246)
for conditional access expressions
([PR](dotnet/roslynator#1772 by @​krajek))
- [CLI] Fix `fix` command ignoring `--include` / `--exclude` file filter
([PR](dotnet/roslynator#1758) by @​hashiiiii)
- [CLI] Fix loading of projects and solutions on .NET 10 SDK
([PR](dotnet/roslynator#1783))


Commits viewable in [compare
view](dotnet/roslynator@v4.15.0...v4.16.0).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This was referenced Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants