Fix union overload signature ordering instability - #64360
Open
ADİL ALPEREN ÇİFTCİ (adilalperenciftci) wants to merge 1 commit into
Open
ADİL ALPEREN ÇİFTCİ (adilalperenciftci) wants to merge 1 commit into
ADİL ALPEREN ÇİFTCİ (adilalperenciftci) wants to merge 1 commit into
Conversation
Author
|
@microsoft-github-policy-service agree |
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 #53614
this pr makes union overlaod resolution prefer a strictly more specfic signature when two compatble non generic signatures r directly comparable.
ive updated getunionsignatures in tsc/internal/checker/checker.go so that a more specific signature is placed before a less specific one while keeping the existing order for unrelated ones.
signatures are only reordered when their param counts, min arg counts, rest param shape and explicit this types are compatible and one signatures param types are strictly more specfic than the other.
also added some regression coverage in tsc/testdata/.../unionoverloadsignatureorder.ts for unprimed and primed cases, both union orders, revrsed decl order, multiple overloads and valid/invalid calls along with the compiler baselines