diff --git a/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart b/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart index 0f3a2b1d038c2..aec4def2ce6fd 100644 --- a/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart +++ b/pkg/analyzer/lib/src/dart/resolver/function_expression_resolver.dart @@ -69,7 +69,7 @@ class FunctionExpressionResolver { if (_flowAnalysis.flow != null && !isFunctionDeclaration) { var bodyContext = BodyInferenceContext.of(node.body); _resolver.checkForBodyMayCompleteNormally( - returnType: bodyContext.contextType, + returnType: bodyContext?.contextType, body: body, errorNode: body, ); diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart index 1d969028ba208..3467a0cd320b5 100644 --- a/pkg/analyzer/lib/src/generated/resolver.dart +++ b/pkg/analyzer/lib/src/generated/resolver.dart @@ -1166,8 +1166,8 @@ class ResolverVisitor extends ScopedVisitor { super.visitConstructorDeclaration(node); if (_flowAnalysis != null) { - var bodyContext = BodyInferenceContext.of(node.body); if (node.factoryKeyword != null) { + var bodyContext = BodyInferenceContext.of(node.body); checkForBodyMayCompleteNormally( returnType: bodyContext?.contextType, body: node.body, diff --git a/pkg/analyzer/test/generated/invalid_code_test.dart b/pkg/analyzer/test/generated/invalid_code_test.dart index 6fd7955948826..4464ab9d75953 100644 --- a/pkg/analyzer/test/generated/invalid_code_test.dart +++ b/pkg/analyzer/test/generated/invalid_code_test.dart @@ -389,6 +389,12 @@ class B { @reflectiveTest class InvalidCodeWithNullSafetyTest extends PubPackageResolutionTest with WithNullSafetyMixin { + test_functionExpression_emptyBody() async { + await _assertCanBeAnalyzed(r''' +var v = (); +'''); + } + test_issue_40837() async { await _assertCanBeAnalyzed(''' class A {