mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-30 01:04:49 -05:00
Fixed parenthesized array literal expressions spread in calls not being tupleized (#54623)
This commit is contained in:
committed by
GitHub
parent
dd3e81a675
commit
18e19492be
@@ -29965,6 +29965,11 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
|
||||
(node.kind === SyntaxKind.BinaryExpression && (node as BinaryExpression).operatorToken.kind === SyntaxKind.EqualsToken);
|
||||
}
|
||||
|
||||
function isSpreadIntoCallOrNew(node: ArrayLiteralExpression) {
|
||||
const parent = walkUpParenthesizedExpressions(node.parent);
|
||||
return isSpreadElement(parent) && isCallOrNewExpression(parent.parent);
|
||||
}
|
||||
|
||||
function checkArrayLiteral(node: ArrayLiteralExpression, checkMode: CheckMode | undefined, forceTuple: boolean | undefined): Type {
|
||||
const elements = node.elements;
|
||||
const elementCount = elements.length;
|
||||
@@ -29972,10 +29977,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
|
||||
const elementFlags: ElementFlags[] = [];
|
||||
pushCachedContextualType(node);
|
||||
const inDestructuringPattern = isAssignmentTarget(node);
|
||||
const isSpreadIntoCallOrNew = isSpreadElement(node.parent) && isCallOrNewExpression(node.parent.parent);
|
||||
const inConstContext = isSpreadIntoCallOrNew || isConstContext(node);
|
||||
const inConstContext = isConstContext(node);
|
||||
const contextualType = getApparentTypeOfContextualType(node, /*contextFlags*/ undefined);
|
||||
const inTupleContext = isSpreadIntoCallOrNew || !!contextualType && someType(contextualType, isTupleLikeType);
|
||||
const inTupleContext = isSpreadIntoCallOrNew(node) || !!contextualType && someType(contextualType, isTupleLikeType);
|
||||
let hasOmittedExpression = false;
|
||||
for (let i = 0; i < elementCount; i++) {
|
||||
const e = elements[i];
|
||||
|
||||
Reference in New Issue
Block a user