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)}');
}