@@ -134,20 +134,8 @@ class NodeBuilder extends GeneralizingAstVisitor<DecoratedType> {
134134
135135 @override
136136 DecoratedType visitFieldFormalParameter (FieldFormalParameter node) {
137- // TODO(brianwilkerson)
138- _unimplemented (node, 'FieldFormalParameter' );
139- }
140-
141- @override
142- DecoratedType visitFormalParameter (FormalParameter node) {
143- // Do not visit children
144- // TODO(paulberry): handle all types of formal parameters
145- // - NormalFormalParameter
146- // - SimpleFormalParameter
147- // - FieldFormalParameter
148- // - FunctionTypedFormalParameter
149- // - DefaultFormalParameter
150- return null ;
137+ return _handleFormalParameter (node.declaredElement, node.metadata,
138+ node.type, node.typeParameters, node.parameters);
151139 }
152140
153141 @override
@@ -171,8 +159,8 @@ class NodeBuilder extends GeneralizingAstVisitor<DecoratedType> {
171159 @override
172160 DecoratedType visitFunctionTypedFormalParameter (
173161 FunctionTypedFormalParameter node) {
174- // TODO(brianwilkerson)
175- _unimplemented ( node, 'FunctionTypedFormalParameter' );
162+ return _handleFormalParameter (node.declaredElement, node.metadata,
163+ node.returnType, node.typeParameters, node.parameters );
176164 }
177165
178166 @override
@@ -212,17 +200,8 @@ $stackTrace''');
212200
213201 @override
214202 DecoratedType visitSimpleFormalParameter (SimpleFormalParameter node) {
215- var declaredElement = node.declaredElement;
216- var type = node.type != null
217- ? node.type.accept (this )
218- : DecoratedType .forImplicitType (declaredElement.type, _graph);
219- _variables.recordDecoratedElementType (declaredElement, type);
220- if (declaredElement.isNamed) {
221- _namedParameters[declaredElement.name] = type;
222- } else {
223- _positionalParameters.add (type);
224- }
225- return type;
203+ return _handleFormalParameter (
204+ node.declaredElement, node.metadata, node.type, null , null );
226205 }
227206
228207 @override
@@ -410,6 +389,28 @@ $stackTrace''');
410389 declaredElement, decoratedFunctionType);
411390 }
412391
392+ DecoratedType _handleFormalParameter (
393+ ParameterElement declaredElement,
394+ NodeList <Annotation > metadata,
395+ TypeAnnotation type,
396+ TypeParameterList typeParameters,
397+ FormalParameterList parameters) {
398+ if (typeParameters != null || parameters != null ) {
399+ _unimplemented (parameters, 'FunctionTypedFormalParameter' );
400+ }
401+ metadata? .accept (this );
402+ var decoratedType = type != null
403+ ? type.accept (this )
404+ : DecoratedType .forImplicitType (declaredElement.type, _graph);
405+ _variables.recordDecoratedElementType (declaredElement, decoratedType);
406+ if (declaredElement.isNamed) {
407+ _namedParameters[declaredElement.name] = decoratedType;
408+ } else {
409+ _positionalParameters.add (decoratedType);
410+ }
411+ return decoratedType;
412+ }
413+
413414 void _handleSupertypeClauses (
414415 ClassElement declaredElement,
415416 TypeName superclass,
0 commit comments