Skip to content

Commit b7290a7

Browse files
authored
Remove unnecessary isTupleType checks in inferFromObjectTypes (#52026)
1 parent 18794c7 commit b7290a7

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/compiler/checker.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24443,7 +24443,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2444324443
else {
2444424444
const middleLength = targetArity - startLength - endLength;
2444524445
if (middleLength === 2) {
24446-
if (elementFlags[startLength] & elementFlags[startLength + 1] & ElementFlags.Variadic && isTupleType(source)) {
24446+
if (elementFlags[startLength] & elementFlags[startLength + 1] & ElementFlags.Variadic) {
2444724447
// Middle of target is [...T, ...U] and source is tuple type
2444824448
const targetInfo = getInferenceInfoForType(elementTypes[startLength]);
2444924449
if (targetInfo && targetInfo.impliedArity !== undefined) {
@@ -24463,7 +24463,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2446324463
inferFromTypes(getElementTypeOfSliceOfTupleType(source, startLength + impliedArity, endLength)!, elementTypes[startLength + 1]);
2446424464
}
2446524465
}
24466-
else if (elementFlags[startLength] & ElementFlags.Rest && elementFlags[startLength + 1] & ElementFlags.Variadic && isTupleType(source)) {
24466+
else if (elementFlags[startLength] & ElementFlags.Rest && elementFlags[startLength + 1] & ElementFlags.Variadic) {
2446724467
// Middle of target is [...rest, ...T] and source is tuple type
2446824468
// if T is constrained by a fixed-size tuple we might be able to use its arity to infer T
2446924469
const param = getInferenceInfoForType(elementTypes[startLength + 1])?.typeParameter;
@@ -24484,12 +24484,12 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2448424484
// Middle of target is exactly one variadic element. Infer the slice between the fixed parts in the source.
2448524485
// If target ends in optional element(s), make a lower priority a speculative inference.
2448624486
const endsInOptional = target.target.elementFlags[targetArity - 1] & ElementFlags.Optional;
24487-
const sourceSlice = isTupleType(source) ? sliceTupleType(source, startLength, endLength) : createArrayType(getTypeArguments(source)[0]);
24487+
const sourceSlice = sliceTupleType(source, startLength, endLength);
2448824488
inferWithPriority(sourceSlice, elementTypes[startLength], endsInOptional ? InferencePriority.SpeculativeTuple : 0);
2448924489
}
2449024490
else if (middleLength === 1 && elementFlags[startLength] & ElementFlags.Rest) {
2449124491
// Middle of target is exactly one rest element. If middle of source is not empty, infer union of middle element types.
24492-
const restType = isTupleType(source) ? getElementTypeOfSliceOfTupleType(source, startLength, endLength) : getTypeArguments(source)[0];
24492+
const restType = getElementTypeOfSliceOfTupleType(source, startLength, endLength);
2449324493
if (restType) {
2449424494
inferFromTypes(restType, elementTypes[startLength]);
2449524495
}

0 commit comments

Comments
 (0)