Remove the unneeded ModelFunctionAnonymous and related code (#2084)

* Strip anonymous construction?

* Remove unneeded 'anonymous' model and type
diff --git a/lib/src/element_type.dart b/lib/src/element_type.dart
index a8fe868..e9f7139 100644
--- a/lib/src/element_type.dart
+++ b/lib/src/element_type.dart
@@ -39,32 +39,21 @@
       if (f is FunctionType) {
         assert(f is ParameterizedType);
         if (isGenericTypeAlias) {
-          assert(element is! ModelFunctionAnonymous);
           return CallableGenericTypeAliasElementType(
               f, library, packageGraph, element, returnedFrom);
-        } else {
-          if (element is ModelFunctionAnonymous) {
-            return CallableAnonymousElementType(
-                f, library, packageGraph, element, returnedFrom);
-          } else {
-            assert(element is! ModelFunctionAnonymous);
-            return CallableElementType(
-                f, library, packageGraph, element, returnedFrom);
-          }
         }
+        return CallableElementType(
+            f, library, packageGraph, element, returnedFrom);
       } else if (isGenericTypeAlias) {
         assert(f is TypeParameterType);
-        assert(element is! ModelFunctionAnonymous);
         return GenericTypeAliasElementType(
             f, library, packageGraph, element, returnedFrom);
       }
       if (f is TypeParameterType) {
-        assert(element is! ModelFunctionAnonymous);
         return TypeParameterElementType(
             f, library, packageGraph, element, returnedFrom);
       }
       assert(f is ParameterizedType);
-      assert(element is! ModelFunctionAnonymous);
       return ParameterizedElementType(
           f, library, packageGraph, element, returnedFrom);
     }
@@ -329,10 +318,7 @@
           dartTypeArguments = type.typeFormals.map(_legacyTypeParameterType);
         }
       } else {
-        DefinedElementType elementType = returnedFrom as DefinedElementType;
-        if (type.typeFormals.isEmpty &&
-            element is! ModelFunctionAnonymous &&
-            elementType?.element is! ModelFunctionAnonymous) {
+        if (type.typeFormals.isEmpty) {
           dartTypeArguments = type.typeArguments;
         } else if (returnedFrom != null &&
             returnedFrom.type.element is GenericFunctionTypeElement) {
@@ -384,25 +370,6 @@
   String get superLinkedName => super.linkedName;
 }
 
-/// This is an anonymous function using the generic function syntax (declared
-/// literally with "Function").
-class CallableAnonymousElementType extends CallableElementType {
-  CallableAnonymousElementType(FunctionType t, Library library,
-      PackageGraph packageGraph, ModelElement element, ElementType returnedFrom)
-      : super(t, library, packageGraph, element, returnedFrom);
-  @override
-  String get name => 'Function';
-
-  @override
-  String get linkedName {
-    if (_linkedName == null) {
-      _linkedName =
-          CallableAnonymousElementTypeRendererHtml().renderLinkedName(this);
-    }
-    return _linkedName;
-  }
-}
-
 /// Types backed by a [GenericTypeAliasElement] that may or may not be callable.
 abstract class GenericTypeAliasElementTypeMixin {}
 
diff --git a/lib/src/model/model_element.dart b/lib/src/model/model_element.dart
index 0883572..9cde24d 100644
--- a/lib/src/model/model_element.dart
+++ b/lib/src/model/model_element.dart
@@ -246,22 +246,9 @@
         if (e is FunctionElement) {
           newModelElement = ModelFunction(e, library, packageGraph);
         } else if (e is GenericFunctionTypeElement) {
-          // TODO(scheglov) "e" cannot be both GenericFunctionTypeElement,
-          // and FunctionTypeAliasElement or GenericTypeAliasElement.
-          if (e is FunctionTypeAliasElement) {
-            assert(e.name != '');
-            newModelElement = ModelFunctionTypedef(e, library, packageGraph);
-          } else {
-            if (e.enclosingElement is GenericTypeAliasElement) {
-              assert(e.enclosingElement.name != '');
-              newModelElement = ModelFunctionTypedef(e, library, packageGraph);
-            } else {
-              // Allowing null here is allowed as a workaround for
-              // dart-lang/sdk#32005.
-              assert(e.name == '' || e.name == null);
-              newModelElement = ModelFunctionAnonymous(e, packageGraph);
-            }
-          }
+          assert(e.enclosingElement is GenericTypeAliasElement);
+          assert(e.enclosingElement.name != '');
+          newModelElement = ModelFunctionTypedef(e, library, packageGraph);
         }
         if (e is FunctionTypeAliasElement) {
           newModelElement = Typedef(e, library, packageGraph);
diff --git a/lib/src/model/model_function.dart b/lib/src/model/model_function.dart
index 3da5a20..da9f85c 100644
--- a/lib/src/model/model_function.dart
+++ b/lib/src/model/model_function.dart
@@ -24,34 +24,6 @@
   FunctionElement get _func => (element as FunctionElement);
 }
 
-/// A [ModelElement] for a [FunctionTypedElement] that is an
-/// explicit typedef.
-///
-/// Distinct from ModelFunctionTypedef in that it doesn't
-/// have a name, but we document it as "Function" to match how these are
-/// written in declarations.
-class ModelFunctionAnonymous extends ModelFunctionTyped {
-  ModelFunctionAnonymous(
-      FunctionTypedElement element, PackageGraph packageGraph)
-      : super(element, null, packageGraph);
-
-  @override
-  ModelElement get enclosingElement {
-    // These are not considered to be a part of libraries, so we can simply
-    // blindly instantiate a ModelElement for their enclosing element.
-    return ModelElement.fromElement(element.enclosingElement, packageGraph);
-  }
-
-  @override
-  String get name => 'Function';
-
-  @override
-  String get linkedName => 'Function';
-
-  @override
-  bool get isPublic => false;
-}
-
 /// A [ModelElement] for a [FunctionTypedElement] that is part of an
 /// explicit typedef.
 class ModelFunctionTypedef extends ModelFunctionTyped {
@@ -60,17 +32,7 @@
       : super(element, library, packageGraph);
 
   @override
-  String get name {
-    Element e = element;
-    while (e != null) {
-      if (e is FunctionTypeAliasElement || e is GenericTypeAliasElement) {
-        return e.name;
-      }
-      e = e.enclosingElement;
-    }
-    assert(false);
-    return super.name;
-  }
+  String get name => element.enclosingElement.name;
 }
 
 class ModelFunctionTyped extends ModelElement
diff --git a/lib/src/render/element_type_renderer.dart b/lib/src/render/element_type_renderer.dart
index 458aea6..eb62710 100644
--- a/lib/src/render/element_type_renderer.dart
+++ b/lib/src/render/element_type_renderer.dart
@@ -93,19 +93,3 @@
     return buf.toString();
   }
 }
-
-class CallableAnonymousElementTypeRendererHtml
-    extends ElementTypeRenderer<CallableAnonymousElementType> {
-  @override
-  String renderLinkedName(CallableAnonymousElementType elementType) {
-    StringBuffer buf = StringBuffer();
-    buf.write(elementType.returnType.linkedName);
-    buf.write(' ');
-    buf.write(elementType.superLinkedName);
-    buf.write('<span class="signature">(');
-    buf.write(ParameterRendererHtml()
-        .renderLinkedParams(elementType.element.parameters));
-    buf.write(')</span>');
-    return buf.toString();
-  }
-}
diff --git a/lib/src/render/parameter_renderer.dart b/lib/src/render/parameter_renderer.dart
index f4998c9..4cf6bcd 100644
--- a/lib/src/render/parameter_renderer.dart
+++ b/lib/src/render/parameter_renderer.dart
@@ -135,7 +135,6 @@
       if (showNames) {
         buf.write(' ${parameterName(param.name)}');
       } else if (paramModelType.isTypedef ||
-          paramModelType is CallableAnonymousElementType ||
           paramModelType.type is FunctionType) {
         buf.write(' ${parameterName(paramModelType.name)}');
       }