@@ -17128,8 +17128,6 @@ namespace ts {
17128
17128
}
17129
17129
17130
17130
const { min: minArgumentCount, max: maxNonRestParam } = minAndMax(candidates, getNumNonRestParameters);
17131
- const hasRestParameter = candidates.some(c => c.hasRestParameter);
17132
- const hasLiteralTypes = candidates.some(c => c.hasLiteralTypes);
17133
17131
const parameters: ts.Symbol[] = [];
17134
17132
for (let i = 0; i < maxNonRestParam; i++) {
17135
17133
const symbols = mapDefined(candidates, ({ parameters, hasRestParameter }) => hasRestParameter ?
@@ -17139,23 +17137,23 @@ namespace ts {
17139
17137
parameters.push(createCombinedSymbolFromTypes(symbols, mapDefined(candidates, candidate => tryGetTypeAtPosition(candidate, i))));
17140
17138
}
17141
17139
17140
+ const restParameterSymbols = mapDefined(candidates, c => c.hasRestParameter ? last(c.parameters) : undefined);
17141
+ const hasRestParameter = restParameterSymbols.length !== 0;
17142
17142
if (hasRestParameter) {
17143
- const symbols = mapDefined(candidates, c => c.hasRestParameter ? last(c.parameters) : undefined);
17144
- Debug.assert(symbols.length !== 0);
17145
17143
const type = createArrayType(getUnionType(mapDefined(candidates, tryGetRestTypeOfSignature), /*subtypeReduction*/ true));
17146
- parameters.push(createCombinedSymbolForOverloadFailure(symbols , type));
17144
+ parameters.push(createCombinedSymbolForOverloadFailure(restParameterSymbols , type));
17147
17145
}
17148
17146
17149
17147
return createSignature(
17150
17148
candidates[0].declaration,
17151
- /*typeParameters*/ undefined,
17149
+ /*typeParameters*/ undefined, // Before calling this we tested for `!candidates.some(c => !!c.typeParameters)`.
17152
17150
thisParameter,
17153
17151
parameters,
17154
- /*resolvedReturnType*/ unknownType ,
17152
+ /*resolvedReturnType*/ getIntersectionType(candidates.map(getReturnTypeOfSignature)) ,
17155
17153
/*typePredicate*/ undefined,
17156
17154
minArgumentCount,
17157
17155
hasRestParameter,
17158
- hasLiteralTypes);
17156
+ /* hasLiteralTypes*/ candidates.some(c => c.hasLiteralTypes) );
17159
17157
}
17160
17158
17161
17159
function createCombinedSymbolFromTypes(sources: ReadonlyArray<Symbol>, types: ReadonlyArray<Type>): Symbol {
0 commit comments