| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
The generated IL remains correct and doesn't require a .volatile prefix for the generated accessor. This is based off of what Roslyn currently emits if a getter was available.
|
Tagging subscribers to this area: @dotnet/area-system-runtime-compilerservices |
Sorry, something went wrong.
There was a problem hiding this comment.
lgtm. we will take for consideration in 9.0.x
Sorry, something went wrong.
|
If it helps support this, this issue is also blocking ComputeSharp on .NET 9 when using primary constructors. I noticed it there because my CI runs started failing when I tried to bump the TFM of my samples to .NET 9 (see here). |
Sorry, something went wrong.
|
/ba-g "WASM timeouts not detected" |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
Backport of #109694 to release/9.0-staging
/cc @AaronRobinsonMSFT
Customer Impact
Customer reported issue: #109665. This was originally found in a MSBuild BinLog reader scenario. The specific issue is fields that are marked as volatile in C# aren't discoverable when using UnsafeAccessors and as such if someone writes the following, it is unable to be accessed.
This can't be discovered because the volatile in C# is embedded via a modreq and there is no place to describe that using the UnsafeAccessorAttribute.
The general issue is that when discovering the target field member, we currently require a complete match for fields. One could imagine we add some support for this, but given they are generally considered compiler directives, there is little value in considering them in this lookup scenario and so they should be ignored on fields. This is already done in the method case, but the relaxation was missed on field discovery.
Regression
Early in the .NET 9 release, the logic for signature comparrison was rewritten and regressed some unsupported issues and has uncovered a regression in a supported scenario.
Testing
Tests for the particular issue were added. I reached out to the Roslyn compiler team and verified the added test case is the only scenario where this occurs.
Risk
Low This is a permissive change on the way fields are looked-up and their types compared. Since C#/VB.NET don't provide other modopts/modreqs it is unlikely this will impact any other scenario.