[analyzer] Resolve nullability of generic function types

Change-Id: Ie14ae8844b83f54b5e2c9d1d5424ca8f015bb5d0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101463
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 9502121..ee1cc5a 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -7908,6 +7908,12 @@
   @override
   void visitGenericFunctionType(GenericFunctionType node) {
     GenericFunctionTypeElementImpl element = node.type?.element;
+    if (node.type != null) {
+      var nullability =
+          _typeNameResolver._getNullability(node.question != null);
+      (node as GenericFunctionTypeImpl).type =
+          (node.type as TypeImpl).withNullability(nullability);
+    }
     if (element != null) {
       super.visitGenericFunctionType(node);
       element.returnType =
diff --git a/pkg/analyzer/test/src/diagnostics/unchecked_use_of_nullable_value_test.dart b/pkg/analyzer/test/src/diagnostics/unchecked_use_of_nullable_value_test.dart
index ce2c1f0..5ee8a4e 100644
--- a/pkg/analyzer/test/src/diagnostics/unchecked_use_of_nullable_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unchecked_use_of_nullable_value_test.dart
@@ -177,10 +177,7 @@
 ''');
   }
 
-  @failingTest
   test_invoke_nullable() async {
-    // test is failing because nullable function invocations aren't being
-    // resolved correctly
     await assertErrorCodesInCode(r'''
 m() {
   Function()? x;