Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Unified Diff: pkg/analyzer/lib/src/dart/element/builder.dart

Issue 2800443002: Build elements for FieldFormalParameter(s) even for local functions. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/analyzer/test/dart/element/builder_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/dart/element/builder.dart
diff --git a/pkg/analyzer/lib/src/dart/element/builder.dart b/pkg/analyzer/lib/src/dart/element/builder.dart
index f90698a8b044d1eec932c459c47a119e19e10524..bd5767ab9d65224c82cb787e34f1571f3892e62c 100644
--- a/pkg/analyzer/lib/src/dart/element/builder.dart
+++ b/pkg/analyzer/lib/src/dart/element/builder.dart
@@ -229,35 +229,6 @@ class ApiElementBuilder extends _BaseElementBuilder {
}
@override
- Object visitFieldFormalParameter(FieldFormalParameter node) {
- if (node.parent is! DefaultFormalParameter) {
- SimpleIdentifier parameterName = node.identifier;
- FieldFormalParameterElementImpl parameter =
- new FieldFormalParameterElementImpl.forNode(parameterName);
- _setCodeRange(parameter, node);
- _setFieldParameterField(node, parameter);
- parameter.isConst = node.isConst;
- parameter.isExplicitlyCovariant = node.covariantKeyword != null;
- parameter.isFinal = node.isFinal;
- parameter.parameterKind = node.kind;
- _currentHolder.addParameter(parameter);
- parameterName.staticElement = parameter;
- }
- //
- // The children of this parameter include any parameters defined on the type
- // of this parameter.
- //
- ElementHolder holder = new ElementHolder();
- _visitChildren(holder, node);
- ParameterElementImpl element = node.element;
- element.metadata = _createElementAnnotations(node.metadata);
- element.parameters = holder.parameters;
- element.typeParameters = holder.typeParameters;
- holder.validate();
- return null;
- }
-
- @override
Object visitFunctionDeclaration(FunctionDeclaration node) {
FunctionExpression expression = node.functionExpression;
if (expression != null) {
@@ -1452,6 +1423,35 @@ abstract class _BaseElementBuilder extends RecursiveAstVisitor<Object> {
}
@override
+ Object visitFieldFormalParameter(FieldFormalParameter node) {
Brian Wilkerson 2017/04/04 20:00:34 What's up with the sort order? This method shouldn
scheglov 2017/04/04 20:02:28 I moved it manually from one class (ApiElementBuil
Brian Wilkerson 2017/04/04 20:11:56 And unlike 'git diff', this tool doesn't provide t
+ if (node.parent is! DefaultFormalParameter) {
+ SimpleIdentifier parameterName = node.identifier;
+ FieldFormalParameterElementImpl parameter =
+ new FieldFormalParameterElementImpl.forNode(parameterName);
+ _setCodeRange(parameter, node);
+ _setFieldParameterField(node, parameter);
+ parameter.isConst = node.isConst;
+ parameter.isExplicitlyCovariant = node.covariantKeyword != null;
+ parameter.isFinal = node.isFinal;
+ parameter.parameterKind = node.kind;
+ _currentHolder.addParameter(parameter);
+ parameterName.staticElement = parameter;
+ }
+ //
+ // The children of this parameter include any parameters defined on the type
+ // of this parameter.
+ //
+ ElementHolder holder = new ElementHolder();
+ _visitChildren(holder, node);
+ ParameterElementImpl element = node.element;
+ element.metadata = _createElementAnnotations(node.metadata);
+ element.parameters = holder.parameters;
+ element.typeParameters = holder.typeParameters;
+ holder.validate();
+ return null;
+ }
+
+ @override
Object visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
if (node.parent is! DefaultFormalParameter) {
SimpleIdentifier parameterName = node.identifier;
« no previous file with comments | « no previous file | pkg/analyzer/test/dart/element/builder_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698