@@ -7247,9 +7247,11 @@ namespace ts {
7247
7247
}
7248
7248
7249
7249
function combineUnionParameters(left: Signature, right: Signature) {
7250
- const longest = getParameterCount(left) >= getParameterCount(right) ? left : right;
7250
+ const leftCount = getParameterCount(left);
7251
+ const rightCount = getParameterCount(right);
7252
+ const longest = leftCount >= rightCount ? left : right;
7251
7253
const shorter = longest === left ? right : left;
7252
- const longestCount = getParameterCount( longest) ;
7254
+ const longestCount = longest === left ? leftCount : rightCount ;
7253
7255
const eitherHasEffectiveRest = (hasEffectiveRestParameter(left) || hasEffectiveRestParameter(right));
7254
7256
const needsExtraRestElement = eitherHasEffectiveRest && !hasEffectiveRestParameter(longest);
7255
7257
const params = new Array<Symbol>(longestCount + (needsExtraRestElement ? 1 : 0));
@@ -7259,11 +7261,16 @@ namespace ts {
7259
7261
const unionParamType = getIntersectionType([longestParamType, shorterParamType]);
7260
7262
const isRestParam = eitherHasEffectiveRest && !needsExtraRestElement && i === (longestCount - 1);
7261
7263
const isOptional = i >= getMinArgumentCount(longest) && i >= getMinArgumentCount(shorter);
7262
- const leftName = getParameterNameAtPosition(left, i);
7263
- const rightName = getParameterNameAtPosition(right, i);
7264
+ const leftName = i >= leftCount ? undefined : getParameterNameAtPosition(left, i);
7265
+ const rightName = i >= rightCount ? undefined : getParameterNameAtPosition(right, i);
7266
+
7267
+ const paramName = leftName === rightName ? leftName :
7268
+ !leftName ? rightName :
7269
+ !rightName ? leftName :
7270
+ undefined;
7264
7271
const paramSymbol = createSymbol(
7265
7272
SymbolFlags.FunctionScopedVariable | (isOptional && !isRestParam ? SymbolFlags.Optional : 0),
7266
- leftName === rightName ? leftName : `arg${i}` as __String
7273
+ paramName || `arg${i}` as __String
7267
7274
);
7268
7275
paramSymbol.type = isRestParam ? createArrayType(unionParamType) : unionParamType;
7269
7276
params[i] = paramSymbol;
0 commit comments