Do not classify recursive self-reference ref cells as mutable#19918
Open
T-Gro wants to merge 3 commits into
Open
Do not classify recursive self-reference ref cells as mutable#19918T-Gro wants to merge 3 commits into
T-Gro wants to merge 3 commits into
Conversation
…bleVar) Adds positive and negative coverage for SemanticClassification of `as this` self-references in class bodies. These tests currently fail because isValRefMutable in SemanticClassification.fs treats the internal ref-cell compilation of CtorThisVal as a user-written mutable binding. Sprint 02 applies the surgical fix to make them pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The compiler compiles recursive object self-references (`as this`, recursive `let rec` self-refs) through a ref cell for initialization. SemanticClassification.isValRefMutable previously treated that internal ref cell as a user-written mutable binding, causing the IDE colorizer to paint the self-reference with the MutableVar shade. Mirror the existing guard in FSharpMemberOrFunctionOrValue.IsMutable (src/Compiler/Symbols/Symbols.fs) by excluding vref.IsCtorThisVal from the isRefCellTy branch. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Apply dotnet fantomas to the SemanticClassification fix and its regression tests (both already conformant, no diff); add a release-notes entry for the service-side change. No production logic changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
❗ Release notes requiredYou can open this PR in browser to add release notes: open in github.dev
Warning No PR link found in some release notes, please consider adding it.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #5229
SemanticClassification.isValRefMutabletreated compiler-generated refcells for recursive self-references (
as this,let recself-refs) asuser-written mutable bindings, causing wrong IDE colorization.