Adapt to the state when FunctionTypeAliasElement does not implement FunctionTypedElement. (#2051)
* Adapt to the state when FunctionTypeAliasElement does not implement FunctionTypedElement.
* TODO for GenericFunctionTypeElement and FunctionTypeAliasElement.
diff --git a/lib/src/model.dart b/lib/src/model.dart
index b7bb0da..4be99f7 100644
--- a/lib/src/model.dart
+++ b/lib/src/model.dart
@@ -3235,6 +3235,8 @@
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);
@@ -3495,7 +3497,9 @@
}
bool get canHaveParameters =>
- element is ExecutableElement || element is FunctionTypedElement;
+ element is ExecutableElement ||
+ element is FunctionTypedElement ||
+ element is FunctionTypeAliasElement;
ModelElement _buildCanonicalModelElement() {
Container preferredClass;
@@ -4030,6 +4034,9 @@
params = (element as FunctionTypedElement).parameters;
}
}
+ if (params == null && element is FunctionTypeAliasElement) {
+ params = (element as FunctionTypeAliasElement).function.parameters;
+ }
_parameters = UnmodifiableListView<Parameter>(params
.map((p) => ModelElement.from(p, library, packageGraph) as Parameter)