Skip to content

Commit 808b18b

Browse files
author
Andy Hanson
committed
Make a bit neater
1 parent 2dec11c commit 808b18b

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/compiler/checker.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)