@@ -87,17 +87,6 @@ class TypesBuilder {
87
87
builder.build ();
88
88
}
89
89
90
- // TODO(scheglov): generalize
91
- _linker.elementNodes.forEach ((element, node) {
92
- if (element is GenericFunctionTypeElementImpl &&
93
- node is GenericFunctionType ) {
94
- element.returnType = node.returnType? .type ?? _dynamicType;
95
- }
96
- if (element is TypeParameterElementImpl && node is TypeParameter ) {
97
- element.bound = node.bound? .type;
98
- }
99
- });
100
-
101
90
for (var declaration in nodes.declarations) {
102
91
_declaration (declaration);
103
92
}
@@ -191,6 +180,8 @@ class TypesBuilder {
191
180
_functionTypeAlias (node);
192
181
} else if (node is FunctionTypedFormalParameter ) {
193
182
_functionTypedFormalParameter (node);
183
+ } else if (node is GenericFunctionTypeImpl ) {
184
+ _genericFunctionType (node);
194
185
} else if (node is GenericTypeAlias ) {
195
186
_genericTypeAlias (node);
196
187
} else if (node is MethodDeclaration ) {
@@ -213,6 +204,8 @@ class TypesBuilder {
213
204
element.type = node.type? .type ?? _dynamicType;
214
205
} else if (node is SuperFormalParameter ) {
215
206
_superFormalParameter (node);
207
+ } else if (node is TypeParameterImpl ) {
208
+ _typeParameter (node);
216
209
} else if (node is VariableDeclarationList ) {
217
210
var type = node.type? .type;
218
211
if (type != null ) {
@@ -289,6 +282,11 @@ class TypesBuilder {
289
282
element.type = type;
290
283
}
291
284
285
+ void _genericFunctionType (GenericFunctionTypeImpl node) {
286
+ var element = node.declaredElement! ;
287
+ element.returnType = node.returnType? .type ?? _dynamicType;
288
+ }
289
+
292
290
void _genericTypeAlias (GenericTypeAlias node) {
293
291
var element = node.declaredElement as TypeAliasElementImpl ;
294
292
var featureSet = element.library.featureSet;
@@ -342,6 +340,11 @@ class TypesBuilder {
342
340
}
343
341
}
344
342
343
+ void _typeParameter (TypeParameterImpl node) {
344
+ var element = node.declaredElement! ;
345
+ element.bound = node.bound? .type;
346
+ }
347
+
345
348
List <TypeParameterElement > _typeParameters (TypeParameterList ? node) {
346
349
if (node == null ) {
347
350
return const < TypeParameterElement > [];
0 commit comments