@@ -8177,8 +8177,7 @@ namespace ts {
81778177 function isSignatureAssignableTo(source: Signature,
81788178 target: Signature,
81798179 ignoreReturnTypes: boolean): boolean {
8180- return compareSignaturesRelated(source, target, /*strictVariance*/ false, ignoreReturnTypes, /*reportErrors*/ false,
8181- /*errorReporter*/ undefined, compareTypesAssignable) !== Ternary.False;
8180+ return compareSignaturesRelated(source, target, ignoreReturnTypes, /*reportErrors*/ false, /*errorReporter*/ undefined, compareTypesAssignable) !== Ternary.False;
81828181 }
81838182
81848183 type ErrorReporter = (message: DiagnosticMessage, arg0?: string, arg1?: string) => void;
@@ -8188,7 +8187,6 @@ namespace ts {
81888187 */
81898188 function compareSignaturesRelated(source: Signature,
81908189 target: Signature,
8191- strictVariance: boolean,
81928190 ignoreReturnTypes: boolean,
81938191 reportErrors: boolean,
81948192 errorReporter: ErrorReporter,
@@ -8231,17 +8229,9 @@ namespace ts {
82318229 const sourceParams = source.parameters;
82328230 const targetParams = target.parameters;
82338231 for (let i = 0; i < checkCount; i++) {
8234- const sourceType = i < sourceMax ? getTypeOfParameter(sourceParams[i]) : getRestTypeOfSignature(source);
8235- const targetType = i < targetMax ? getTypeOfParameter(targetParams[i]) : getRestTypeOfSignature(target);
8236- const sourceSig = getSingleCallSignature(sourceType);
8237- const targetSig = getSingleCallSignature(targetType);
8238- // If the source and target parameters both have function types with a single call signature we are
8239- // relating two callback parameters. In that case we compare the callback signatures with strict
8240- // variance, meaning we require the callback parameters to be pairwise co-variant (because, similar
8241- // to return values, callback parameters are output positions).
8242- const related = sourceSig && targetSig ?
8243- compareSignaturesRelated(targetSig, sourceSig, /*strictVariance*/ true, /*ignoreReturnTypes*/ false, reportErrors, errorReporter, compareTypes) :
8244- !strictVariance && compareTypes(sourceType, targetType, /*reportErrors*/ false) || compareTypes(targetType, sourceType, reportErrors);
8232+ const s = i < sourceMax ? getTypeOfParameter(sourceParams[i]) : getRestTypeOfSignature(source);
8233+ const t = i < targetMax ? getTypeOfParameter(targetParams[i]) : getRestTypeOfSignature(target);
8234+ const related = compareTypes(s, t, /*reportErrors*/ false) || compareTypes(t, s, reportErrors);
82458235 if (!related) {
82468236 if (reportErrors) {
82478237 errorReporter(Diagnostics.Types_of_parameters_0_and_1_are_incompatible,
@@ -9241,7 +9231,7 @@ namespace ts {
92419231 * See signatureAssignableTo, compareSignaturesIdentical
92429232 */
92439233 function signatureRelatedTo(source: Signature, target: Signature, reportErrors: boolean): Ternary {
9244- return compareSignaturesRelated(source, target, /*strictVariance*/ false, /* ignoreReturnTypes*/ false, reportErrors, reportError, isRelatedTo);
9234+ return compareSignaturesRelated(source, target, /*ignoreReturnTypes*/ false, reportErrors, reportError, isRelatedTo);
92459235 }
92469236
92479237 function signaturesIdenticalTo(source: Type, target: Type, kind: SignatureKind): Ternary {
0 commit comments