4
4
5
5
import 'package:analyzer/dart/ast/ast.dart' ;
6
6
import 'package:analyzer/dart/ast/visitor.dart' ;
7
- import 'package:analyzer/dart/element/element .dart' ;
7
+ import 'package:analyzer/dart/element/element2 .dart' ;
8
8
9
9
import '../analyzer.dart' ;
10
10
import '../extensions.dart' ;
@@ -32,14 +32,14 @@ Iterable<ConstructorFieldInitializer>
32
32
ConstructorDeclaration node) =>
33
33
node.initializers.whereType <ConstructorFieldInitializer >();
34
34
35
- Element ? _getLeftElement (AssignmentExpression assignment) =>
36
- assignment.writeElement ? .canonicalElement ;
35
+ Element2 ? _getLeftElement (AssignmentExpression assignment) =>
36
+ assignment.writeElement2 ? .canonicalElement2 ;
37
37
38
- Iterable <Element ?> _getParameters (ConstructorDeclaration node) =>
39
- node.parameters.parameters.map ((e) => e.declaredElement );
38
+ Iterable <FormalParameterElement ?> _getParameters (ConstructorDeclaration node) =>
39
+ node.parameters.parameters.map ((e) => e.declaredFragment ? .element );
40
40
41
- Element ? _getRightElement (AssignmentExpression assignment) =>
42
- assignment.rightHandSide.canonicalElement ;
41
+ Element2 ? _getRightElement (AssignmentExpression assignment) =>
42
+ assignment.rightHandSide.canonicalElement2 ;
43
43
44
44
class PreferInitializingFormals extends LintRule {
45
45
PreferInitializingFormals ()
@@ -73,24 +73,24 @@ class _Visitor extends SimpleAstVisitor<void> {
73
73
}
74
74
75
75
var parameters = _getParameters (node);
76
- var parametersUsedOnce = < Element ? > {};
77
- var parametersUsedMoreThanOnce = < Element ? > {};
76
+ var parametersUsedOnce = < Element2 ? > {};
77
+ var parametersUsedMoreThanOnce = < Element2 ? > {};
78
78
79
79
bool isAssignmentExpressionToLint (AssignmentExpression assignment) {
80
80
var leftElement = _getLeftElement (assignment);
81
81
var rightElement = _getRightElement (assignment);
82
82
return leftElement != null &&
83
83
rightElement != null &&
84
- leftElement.name == rightElement.name &&
84
+ leftElement.name3 == rightElement.name3 &&
85
85
! leftElement.isPrivate &&
86
- leftElement is FieldElement &&
86
+ leftElement is FieldElement2 &&
87
87
! leftElement.isSynthetic &&
88
- leftElement.enclosingElement3 ==
89
- node.declaredElement ? .enclosingElement3 &&
88
+ leftElement.enclosingElement2 ==
89
+ node.declaredFragment ? .element.enclosingElement2 &&
90
90
parameters.contains (rightElement) &&
91
91
(! parametersUsedMoreThanOnce.contains (rightElement) &&
92
- ! (rightElement as ParameterElement ).isNamed ||
93
- leftElement.name == rightElement.name );
92
+ ! (rightElement as FormalParameterElement ).isNamed ||
93
+ leftElement.name3 == rightElement.name3 );
94
94
}
95
95
96
96
bool isConstructorFieldInitializerToLint (
@@ -101,28 +101,30 @@ class _Visitor extends SimpleAstVisitor<void> {
101
101
if (fieldName.name != expression.name) {
102
102
return false ;
103
103
}
104
- var staticElement = expression.staticElement ;
105
- return staticElement is ParameterElement &&
106
- ! (constructorFieldInitializer.fieldName.staticElement ? .isPrivate ??
104
+ var staticElement = expression.element ;
105
+ return staticElement is FormalParameterElement &&
106
+ ! (constructorFieldInitializer.fieldName.element ? .isPrivate ??
107
107
true ) &&
108
108
parameters.contains (staticElement) &&
109
- (! parametersUsedMoreThanOnce.contains (expression.staticElement ) &&
109
+ (! parametersUsedMoreThanOnce.contains (expression.element ) &&
110
110
! staticElement.isNamed ||
111
- (constructorFieldInitializer.fieldName.staticElement ? .name ==
112
- expression.staticElement ? .name ));
111
+ (constructorFieldInitializer.fieldName.element ? .name3 ==
112
+ expression.element ? .name3 ));
113
113
}
114
114
return false ;
115
115
}
116
116
117
- void processElement (Element ? element) {
117
+ void processElement (Element2 ? element) {
118
118
if (! parametersUsedOnce.add (element)) {
119
119
parametersUsedMoreThanOnce.add (element);
120
120
}
121
121
}
122
122
123
- var parameterElements = node.parameters.parameterElements;
124
- for (var parameter in parameterElements) {
125
- if (parameter? .isInitializingFormal ?? false ) {
123
+ for (var parameterFragment in node.parameters.parameterFragments) {
124
+ if (parameterFragment == null ) continue ;
125
+
126
+ var parameter = parameterFragment.element;
127
+ if (parameter.isInitializingFormal) {
126
128
processElement (parameter);
127
129
}
128
130
}
@@ -137,8 +139,7 @@ class _Visitor extends SimpleAstVisitor<void> {
137
139
var initializers = _getConstructorFieldInitializersInInitializers (node);
138
140
for (var initializer in initializers) {
139
141
if (isConstructorFieldInitializerToLint (initializer)) {
140
- processElement (
141
- (initializer.expression as SimpleIdentifier ).staticElement);
142
+ processElement ((initializer.expression as SimpleIdentifier ).element);
142
143
}
143
144
}
144
145
@@ -151,7 +152,7 @@ class _Visitor extends SimpleAstVisitor<void> {
151
152
152
153
for (var initializer in initializers) {
153
154
if (isConstructorFieldInitializerToLint (initializer)) {
154
- var name = initializer.fieldName.staticElement ! .name ! ;
155
+ var name = initializer.fieldName.element ! .name3 ! ;
155
156
rule.reportLint (initializer, arguments: [name]);
156
157
}
157
158
}
0 commit comments