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

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

Issue 2663063004: Don't resolve FieldFormalParameter field if not in constructor. (Closed)
Patch Set: Created 3 years, 11 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/lib/src/dart/element/element.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 cfda5c033c7920812df67f5f114b72c3eab0d8fe..3524404323de2f2e5177700051118ae99cc5fffd 100644
--- a/pkg/analyzer/lib/src/dart/element/builder.dart
+++ b/pkg/analyzer/lib/src/dart/element/builder.dart
@@ -231,18 +231,14 @@ class ApiElementBuilder extends _BaseElementBuilder {
Object visitFieldFormalParameter(FieldFormalParameter node) {
if (node.parent is! DefaultFormalParameter) {
SimpleIdentifier parameterName = node.identifier;
- FieldElement field =
- _fieldMap == null ? null : _fieldMap[parameterName.name];
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;
- if (field != null) {
- parameter.field = field;
- }
_currentHolder.addParameter(parameter);
parameterName.staticElement = parameter;
}
@@ -734,10 +730,13 @@ class ApiElementBuilder extends _BaseElementBuilder {
}
@override
- void _setFieldParameterField(FieldFormalParameterElementImpl parameter) {
- FieldElement field = _fieldMap == null ? null : _fieldMap[parameter.name];
- if (field != null) {
- parameter.field = field;
+ void _setFieldParameterField(
+ FormalParameter node, FieldFormalParameterElementImpl element) {
+ if (node.parent?.parent is ConstructorDeclaration) {
+ FieldElement field = _fieldMap == null ? null : _fieldMap[element.name];
+ if (field != null) {
+ element.field = field;
+ }
}
}
}
@@ -1389,7 +1388,7 @@ abstract class _BaseElementBuilder extends RecursiveAstVisitor<Object> {
if (normalParameter is FieldFormalParameter) {
DefaultFieldFormalParameterElementImpl fieldParameter =
new DefaultFieldFormalParameterElementImpl.forNode(parameterName);
- _setFieldParameterField(fieldParameter);
+ _setFieldParameterField(node, fieldParameter);
parameter = fieldParameter;
} else {
parameter = new DefaultParameterElementImpl.forNode(parameterName);
@@ -1516,7 +1515,8 @@ abstract class _BaseElementBuilder extends RecursiveAstVisitor<Object> {
element.setCodeRange(node.offset, node.length);
}
- void _setFieldParameterField(FieldFormalParameterElementImpl parameter) {}
+ void _setFieldParameterField(
+ FormalParameter node, FieldFormalParameterElementImpl element) {}
/**
* Sets the visible source range for formal parameter.
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/dart/element/element.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698