Do not allow freshness to move errors out of the current file, ensure json documents are deeply unfreshened and fully widened #35048
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 #34997
So, the two issues at play:
checkTypeRelatedToAndOptionallyElaborate
and only traverse the AST)getRegularTypeOfObjectLiteral
is used in checking in a few places to get a relatively shallow unfreshed object, whilegetWidenedType
does full deep unfreshening, accounting for arrays and object contexts (do note: these are cached separately, as they are observably different transforms). We were usinggetRegularTypeOfObjectLiteral
outside of theisRelatedTo
context it is appropriate within, and should have usedgetWidenedType
instead, and now we do. This should also have the side effect of producing the nicer context-sensitive object types we produce during assignments from json document types, too (as can be seen in thejsDeclarationsJson.types
baseline).