@@ -17128,8 +17128,6 @@ namespace ts {
1712817128 }
1712917129
1713017130 const { min: minArgumentCount, max: maxNonRestParam } = minAndMax(candidates, getNumNonRestParameters);
17131- const hasRestParameter = candidates.some(c => c.hasRestParameter);
17132- const hasLiteralTypes = candidates.some(c => c.hasLiteralTypes);
1713317131 const parameters: ts.Symbol[] = [];
1713417132 for (let i = 0; i < maxNonRestParam; i++) {
1713517133 const symbols = mapDefined(candidates, ({ parameters, hasRestParameter }) => hasRestParameter ?
@@ -17139,23 +17137,23 @@ namespace ts {
1713917137 parameters.push(createCombinedSymbolFromTypes(symbols, mapDefined(candidates, candidate => tryGetTypeAtPosition(candidate, i))));
1714017138 }
1714117139
17140+ const restParameterSymbols = mapDefined(candidates, c => c.hasRestParameter ? last(c.parameters) : undefined);
17141+ const hasRestParameter = restParameterSymbols.length !== 0;
1714217142 if (hasRestParameter) {
17143- const symbols = mapDefined(candidates, c => c.hasRestParameter ? last(c.parameters) : undefined);
17144- Debug.assert(symbols.length !== 0);
1714517143 const type = createArrayType(getUnionType(mapDefined(candidates, tryGetRestTypeOfSignature), /*subtypeReduction*/ true));
17146- parameters.push(createCombinedSymbolForOverloadFailure(symbols , type));
17144+ parameters.push(createCombinedSymbolForOverloadFailure(restParameterSymbols , type));
1714717145 }
1714817146
1714917147 return createSignature(
1715017148 candidates[0].declaration,
17151- /*typeParameters*/ undefined,
17149+ /*typeParameters*/ undefined, // Before calling this we tested for `!candidates.some(c => !!c.typeParameters)`.
1715217150 thisParameter,
1715317151 parameters,
17154- /*resolvedReturnType*/ unknownType ,
17152+ /*resolvedReturnType*/ getIntersectionType(candidates.map(getReturnTypeOfSignature)) ,
1715517153 /*typePredicate*/ undefined,
1715617154 minArgumentCount,
1715717155 hasRestParameter,
17158- hasLiteralTypes);
17156+ /* hasLiteralTypes*/ candidates.some(c => c.hasLiteralTypes) );
1715917157 }
1716017158
1716117159 function createCombinedSymbolFromTypes(sources: ReadonlyArray<Symbol>, types: ReadonlyArray<Type>): Symbol {
0 commit comments