diff --git a/src/compiler/expressionToTypeNode.ts b/src/compiler/expressionToTypeNode.ts index 0df3a399b8f..10cdb4bbc2c 100644 --- a/src/compiler/expressionToTypeNode.ts +++ b/src/compiler/expressionToTypeNode.ts @@ -731,6 +731,9 @@ export function createSyntacticTypeNodeBuilder( case SyntaxKind.ConstructorType: case SyntaxKind.FunctionExpression: case SyntaxKind.ArrowFunction: + // Don't report inference fallback for function expressions that are arguments to call expressions + const shouldReportFallback = !(node.kind === SyntaxKind.FunctionExpression || node.kind === SyntaxKind.ArrowFunction) || !isCallExpression(node.parent); + return createReturnFromSignature(node, symbol, context, shouldReportFallback); case SyntaxKind.JSDocFunctionType: case SyntaxKind.JSDocSignature: return createReturnFromSignature(node, symbol, context); @@ -968,7 +971,9 @@ export function createSyntacticTypeNodeBuilder( return failed; } function typeFromFunctionLikeExpression(fnNode: FunctionExpression | ArrowFunction, context: SyntacticTypeNodeBuilderContext) { - const returnType = createReturnFromSignature(fnNode, /*symbol*/ undefined, context); + // Don't report inference fallback for function expressions that are arguments to call expressions + const shouldReportFallback = !isCallExpression(fnNode.parent); + const returnType = createReturnFromSignature(fnNode, /*symbol*/ undefined, context, shouldReportFallback); const typeParameters = reuseTypeParameters(fnNode.typeParameters, context); const parameters = fnNode.parameters.map(p => ensureParameter(p, context)); return syntacticResult( diff --git a/src/compiler/transformers/declarations.ts b/src/compiler/transformers/declarations.ts index 08a88dc776e..4b6941dc61f 100644 --- a/src/compiler/transformers/declarations.ts +++ b/src/compiler/transformers/declarations.ts @@ -94,7 +94,6 @@ import { isBinaryExpression, isBindingElement, isBindingPattern, - isCallExpression, isClassDeclaration, isClassElement, isComputedPropertyName, @@ -332,13 +331,6 @@ export function transformDeclarations(context: TransformationContext): Transform reportExpandoFunctionErrors(node); } else { - // Don't report errors for function expressions that are arguments to call expressions - if ( - (node.kind === SyntaxKind.FunctionExpression || node.kind === SyntaxKind.ArrowFunction) && - isCallExpression(node.parent) - ) { - return; - } context.addDiagnostic(getIsolatedDeclarationError(node)); } }