From 273bb3e6de4211bf41ee79c8bfcced854b415a19 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Fri, 20 Dec 2019 14:30:34 -0800 Subject: [PATCH] Fix parameter list length check --- src/compiler/checker.ts | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 4f60cef1ee9..571ab2f83f4 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14028,17 +14028,10 @@ namespace ts { } const targetCount = getParameterCount(target); - if (checkMode & SignatureCheckMode.StrictArity) { - const sourceHasRest = hasEffectiveRestParameter(source); - const targetHasRest = hasEffectiveRestParameter(target); - if (sourceHasRest && !targetHasRest || sourceHasRest === targetHasRest && getParameterCount(source) > getParameterCount(target)) { - return Ternary.False; - } - } - else { - if (!hasEffectiveRestParameter(target) && getMinArgumentCount(source) > targetCount) { - return Ternary.False; - } + const sourceHasMoreParameters = !hasEffectiveRestParameter(target) && + (checkMode & SignatureCheckMode.StrictArity ? hasEffectiveRestParameter(source) || getParameterCount(source) > targetCount : getMinArgumentCount(source) > targetCount); + if (sourceHasMoreParameters) { + return Ternary.False; } if (source.typeParameters && source.typeParameters !== target.typeParameters) {