Skip to content

Commit 9528968

Browse files
authored
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.
1 parent af16f26 commit 9528968

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

lib/src/model.dart

+8-1
Original file line numberDiff line numberDiff line change
@@ -3235,6 +3235,8 @@ abstract class ModelElement extends Canonicalization
32353235
if (e is FunctionElement) {
32363236
newModelElement = ModelFunction(e, library, packageGraph);
32373237
} else if (e is GenericFunctionTypeElement) {
3238+
// TODO(scheglov) "e" cannot be both GenericFunctionTypeElement,
3239+
// and FunctionTypeAliasElement or GenericTypeAliasElement.
32383240
if (e is FunctionTypeAliasElement) {
32393241
assert(e.name != '');
32403242
newModelElement = ModelFunctionTypedef(e, library, packageGraph);
@@ -3495,7 +3497,9 @@ abstract class ModelElement extends Canonicalization
34953497
}
34963498

34973499
bool get canHaveParameters =>
3498-
element is ExecutableElement || element is FunctionTypedElement;
3500+
element is ExecutableElement ||
3501+
element is FunctionTypedElement ||
3502+
element is FunctionTypeAliasElement;
34993503

35003504
ModelElement _buildCanonicalModelElement() {
35013505
Container preferredClass;
@@ -4030,6 +4034,9 @@ abstract class ModelElement extends Canonicalization
40304034
params = (element as FunctionTypedElement).parameters;
40314035
}
40324036
}
4037+
if (params == null && element is FunctionTypeAliasElement) {
4038+
params = (element as FunctionTypeAliasElement).function.parameters;
4039+
}
40334040

40344041
_parameters = UnmodifiableListView<Parameter>(params
40354042
.map((p) => ModelElement.from(p, library, packageGraph) as Parameter)

0 commit comments

Comments
 (0)