Map stale empty object type in union into fresh empty object type after spread is complete #34839
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 #34690
In the example given,
false | { foo: Record<never, never> }
is mapped into{} | { foo: Record<never, never> }
by the spread operator, except the{}
isn't a fresh literal object type - it's just the plain ole stale vanilla empty object type used globally throughout the checker. This change maps that stale empty object into a brand new fresh empty object, as occurs in the non-union spread case.