Repository navigation
Cache undefined widening properties per symbol, not per name - #64728
Draft
Max Schwenk (maschwenk) wants to merge 1 commit into
Draft
Max Schwenk (maschwenk) wants to merge 1 commit into
Max Schwenk (maschwenk) wants to merge 1 commit into
Conversation
getUndefinedProperty cached its synthetic `prop?: undefined` symbol by property name. The first object literal to widen a given name won, and its declaration position decided where the property printed in later, unrelated types. So declaration output changed depending on which other files shared a checker, and therefore on --checkers. Key the cache by the source property symbol instead.
This branch has not been deployed
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 #64727
getUndefinedProperty cached the synthetic
prop?: undefinedsymbol by name, so the first object literal to widen a name decided how that property printed in later, unrelated types. declaration output then depended on which other files shared a checker, and on --checkers.this keys the cache by the source property symbol instead. it's a 4 line change in checker.go.
ai disclosure: written with claude code. i've read the change and will handle review myself.