@@ -7275,7 +7275,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
72757275 typeParameters = signature.typeParameters && signature.typeParameters.map(parameter => typeParameterToDeclaration(parameter, context));
72767276 }
72777277
7278- const expandedParams = getExpandedParameters(signature, /*skipUnionExpanding*/ true)[0] ;
7278+ const expandedParams = getExpandedParameters(signature, /*skipUnionExpanding*/ true);
72797279
72807280 // For regular function/method declarations, the enclosing declaration will already be signature.declaration,
72817281 // so this is a no-op, but for arrow functions and function expressions, the enclosing declaration will be
@@ -12604,18 +12604,21 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1260412604 return result;
1260512605 }
1260612606
12607- function getExpandedParameters(sig: Signature, skipUnionExpanding?: boolean): readonly (readonly Symbol[])[] {
12607+ function getExpandedParameters(sig: Signature): readonly (readonly Symbol[])[]
12608+ function getExpandedParameters(sig: Signature, skipUnionExpanding: true): readonly Symbol[]
12609+ function getExpandedParameters(sig: Signature, skipUnionExpanding?: boolean): readonly Symbol[] | readonly (readonly Symbol[])[] {
1260812610 if (signatureHasRestParameter(sig)) {
1260912611 const restIndex = sig.parameters.length - 1;
1261012612 const restType = getTypeOfSymbol(sig.parameters[restIndex]);
1261112613 if (isTupleType(restType)) {
12612- return [expandSignatureParametersWithTupleMembers(restType, restIndex)];
12614+ const expanded = expandSignatureParametersWithTupleMembers(restType, restIndex);
12615+ return skipUnionExpanding ? expanded : [expanded]
1261312616 }
1261412617 else if (!skipUnionExpanding && restType.flags & TypeFlags.Union && every((restType as UnionType).types, isTupleType)) {
1261512618 return map((restType as UnionType).types, t => expandSignatureParametersWithTupleMembers(t as TupleTypeReference, restIndex));
1261612619 }
1261712620 }
12618- return [sig.parameters];
12621+ return skipUnionExpanding ? sig.parameters : [sig.parameters];
1261912622
1262012623 function expandSignatureParametersWithTupleMembers(restType: TupleTypeReference, restIndex: number) {
1262112624 const elementTypes = getTypeArguments(restType);
0 commit comments