diff options
author | Sven Boemer <sbomer@gmail.com> | 2022-06-15 19:28:50 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-15 19:28:50 +0300 |
commit | 226107b9117b9d166e38dd00e30f9ab54399e658 (patch) | |
tree | 410de8da2b0f1555d977b78938f7ced082a32c72 /eng | |
parent | 2abcee1070e38d2994a25777023dfa61615ea498 (diff) |
Analyze implicit indexer reference operations (#2839)
Adds support for `IImplicitIndexerReferenceOperation`, which
represents an implicit access to an indexer that uses
`System.Index`. Implicit means that there is no `System.Index`
accessor in IL, but the compiler supports `System.Index` access
via an existing indexer (for example one that takes int) for
types that satisfy certain criteria. See
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/ranges#implicit-index-support
for details.
This operation only showed up in the CFG with a more recent
version of the Roslyn APIs, so this includes an update to match
the one used in dotnet/runtime. This resulted in a few changes to
the generated code that required tweaking some of the test
validation:
- Delegate cache fields are emitted. This reuses an existing
attribute originally designed for mcs, but it has been updated to
check for these compiler-generated fields.
- `<PrivateImplementationDetails>.ThrowSwitchExpressionException`
is emitted for an implicit unhandled case in switch
expressions. This change includes a new attribute to check that
this is kept in a few of the tests.
Diffstat (limited to 'eng')
-rw-r--r-- | eng/Versions.props | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/eng/Versions.props b/eng/Versions.props index 285436be0..f3a76f0c0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -21,7 +21,7 @@ <MicrosoftDotNetApiCompatVersion>7.0.0-beta.22313.1</MicrosoftDotNetApiCompatVersion> <MicrosoftDotNetCodeAnalysisVersion>6.0.0-beta.21271.1</MicrosoftDotNetCodeAnalysisVersion> <MicrosoftCodeAnalysisCSharpCodeStyleVersion>3.10.0-2.final</MicrosoftCodeAnalysisCSharpCodeStyleVersion> - <MicrosoftCodeAnalysisVersion>4.0.1</MicrosoftCodeAnalysisVersion> + <MicrosoftCodeAnalysisVersion>4.3.0-1.22206.2</MicrosoftCodeAnalysisVersion> <MicrosoftCodeAnalysisCSharpAnalyzerTestingXunitVersion>1.0.1-beta1.*</MicrosoftCodeAnalysisCSharpAnalyzerTestingXunitVersion> <MicrosoftCodeAnalysisBannedApiAnalyzersVersion>3.3.2</MicrosoftCodeAnalysisBannedApiAnalyzersVersion> <!-- This controls the version of the cecil package, or the version of cecil in the project graph |