@@ -8655,25 +8655,23 @@ namespace ts {
86558655 function getContextuallyTypedParameterType(parameter: ParameterDeclaration): Type {
86568656 const func = parameter.parent;
86578657 if (isContextSensitiveFunctionOrObjectLiteralMethod(func)) {
8658- if (func.kind === SyntaxKind.FunctionExpression || func.kind === SyntaxKind.ArrowFunction) {
8659- const iife = getImmediatelyInvokedFunctionExpression(func);
8660- if (iife) {
8661- const indexOfParameter = indexOf(func.parameters, parameter);
8662- if (iife.arguments && indexOfParameter < iife.arguments.length) {
8663- if (parameter.dotDotDotToken) {
8664- const restTypes: Type[] = [];
8665- for (let i = indexOfParameter; i < iife.arguments.length; i++) {
8666- restTypes.push(getTypeOfExpression(iife.arguments[i]));
8667- }
8668- return createArrayType(getUnionType(restTypes));
8658+ const iife = getImmediatelyInvokedFunctionExpression(func);
8659+ if (iife) {
8660+ const indexOfParameter = indexOf(func.parameters, parameter);
8661+ if (iife.arguments && indexOfParameter < iife.arguments.length) {
8662+ if (parameter.dotDotDotToken) {
8663+ const restTypes: Type[] = [];
8664+ for (let i = indexOfParameter; i < iife.arguments.length; i++) {
8665+ restTypes.push(getTypeOfExpression(iife.arguments[i]));
86698666 }
8670- const links = getNodeLinks(iife);
8671- const cached = links.resolvedSignature;
8672- links.resolvedSignature = anySignature;
8673- const type = checkExpression(iife.arguments[indexOfParameter]);
8674- links.resolvedSignature = cached;
8675- return type;
8667+ return createArrayType(getUnionType(restTypes));
86768668 }
8669+ const links = getNodeLinks(iife);
8670+ const cached = links.resolvedSignature;
8671+ links.resolvedSignature = anySignature;
8672+ const type = checkExpression(iife.arguments[indexOfParameter]);
8673+ links.resolvedSignature = cached;
8674+ return type;
86778675 }
86788676 }
86798677 const contextualSignature = getContextualSignature(func);
0 commit comments