Fix for absent names of parameters in GenericFunctionType.

R=brianwilkerson@google.com

Change-Id: I9a6444cc076b5d6a79c4ebf33fae9deef85e2049
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99189
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 2184fd9..7383a7d 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -8349,17 +8349,25 @@
           );
         }
       } else {
-        var name = node.identifier.name;
-        var reference = containerRef.getChild(name);
-        if (reference.element == null) {
-          reference.node2 = node;
-          ParameterElementImpl.forLinkedNodeFactory(
+        if (node.identifier == null) {
+          return ParameterElementImpl.forLinkedNodeFactory(
             enclosing,
-            reference,
+            containerRef.getChild(''),
             node,
           );
+        } else {
+          var name = node.identifier.name;
+          var reference = containerRef.getChild(name);
+          if (reference.element == null) {
+            reference.node2 = node;
+            ParameterElementImpl.forLinkedNodeFactory(
+              enclosing,
+              reference,
+              node,
+            );
+          }
+          return reference.element as ParameterElement;
         }
-        return reference.element as ParameterElement;
       }
     }).toList();
   }
diff --git a/pkg/analyzer/lib/src/summary2/type_builder.dart b/pkg/analyzer/lib/src/summary2/type_builder.dart
index ccad03b..b52c055 100644
--- a/pkg/analyzer/lib/src/summary2/type_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/type_builder.dart
@@ -86,7 +86,7 @@
 
     var formalParameters = parameterList.parameters.map((parameter) {
       return ParameterElementImpl.synthetic(
-        parameter.identifier.name,
+        parameter.identifier?.name ?? '',
         LazyAst.getType(parameter),
         // ignore: deprecated_member_use_from_same_package
         parameter.kind,
diff --git a/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart b/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
index 99b8730..55a5f00 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
@@ -196,13 +196,6 @@
 
   @override
   @failingTest
-  test_class_notSimplyBounded_function_typed_bound_complex_via_parameter_type() async {
-    await super
-        .test_class_notSimplyBounded_function_typed_bound_complex_via_parameter_type();
-  }
-
-  @override
-  @failingTest
   test_class_type_parameters_bound() async {
     await super.test_class_type_parameters_bound();
   }
@@ -530,19 +523,6 @@
 
   @override
   @failingTest
-  test_typedef_generic() async {
-    await super.test_typedef_generic();
-  }
-
-  @override
-  @failingTest
-  test_typedef_notSimplyBounded_dependency_via_param_type_new_style_name_omitted() async {
-    await super
-        .test_typedef_notSimplyBounded_dependency_via_param_type_new_style_name_omitted();
-  }
-
-  @override
-  @failingTest
   test_typedef_type_parameters_bound() async {
     await super.test_typedef_type_parameters_bound();
   }