mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-07 23:08:20 -06:00
Addressing CR feedback
This commit is contained in:
parent
a27ed01516
commit
31331ff6d1
@ -5603,28 +5603,30 @@ namespace ts {
|
||||
return compareTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp));
|
||||
}
|
||||
|
||||
// A source signature matches a target signature if the two signatures have the same number of required,
|
||||
// optional, and rest parameters.
|
||||
function isMatchingSignature(source: Signature, target: Signature) {
|
||||
return source.parameters.length === target.parameters.length &&
|
||||
function isMatchingSignature(source: Signature, target: Signature, partialMatch: boolean) {
|
||||
// A source signature matches a target signature if the two signatures have the same number of required,
|
||||
// optional, and rest parameters.
|
||||
if (source.parameters.length === target.parameters.length &&
|
||||
source.minArgumentCount === target.minArgumentCount &&
|
||||
source.hasRestParameter === target.hasRestParameter;
|
||||
}
|
||||
|
||||
// A source signature partially matches a target signature if the target signature has no fewer required
|
||||
// parameters and no more overall parameters than the source signature (where a signature with a rest
|
||||
// parameter is always considered to have more overall parameters than one without).
|
||||
function isPartiallyMatchingSignature(source: Signature, target: Signature) {
|
||||
return source.minArgumentCount <= target.minArgumentCount && (
|
||||
source.hasRestParameter === target.hasRestParameter) {
|
||||
return true;
|
||||
}
|
||||
// A source signature partially matches a target signature if the target signature has no fewer required
|
||||
// parameters and no more overall parameters than the source signature (where a signature with a rest
|
||||
// parameter is always considered to have more overall parameters than one without).
|
||||
if (partialMatch && source.minArgumentCount <= target.minArgumentCount && (
|
||||
source.hasRestParameter && !target.hasRestParameter ||
|
||||
source.hasRestParameter === target.hasRestParameter && source.parameters.length >= target.parameters.length);
|
||||
source.hasRestParameter === target.hasRestParameter && source.parameters.length >= target.parameters.length)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function compareSignatures(source: Signature, target: Signature, partialMatch: boolean, ignoreReturnTypes: boolean, compareTypes: (s: Type, t: Type) => Ternary): Ternary {
|
||||
if (source === target) {
|
||||
return Ternary.True;
|
||||
}
|
||||
if (!(isMatchingSignature(source, target) || partialMatch && isPartiallyMatchingSignature(source, target))) {
|
||||
if (!(isMatchingSignature(source, target, partialMatch))) {
|
||||
return Ternary.False;
|
||||
}
|
||||
let result = Ternary.True;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user