Skip to content

Commit 55dcb0b

Browse files
pqCommit Queue
authored andcommitted
[element model] migrate avoid_field_initializers_in_const_classes
Bug: https://github.com/dart-lang/linter/issues/5099 Change-Id: I1d7f2f842c0c60e808086dc244fdcc2d19e0b5b0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/392980 Reviewed-by: Brian Wilkerson <[email protected]> Auto-Submit: Phil Quitslund <[email protected]> Commit-Queue: Brian Wilkerson <[email protected]>
1 parent 25952fd commit 55dcb0b

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

pkg/linter/lib/src/rules/avoid_field_initializers_in_const_classes.dart

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'package:analyzer/dart/ast/ast.dart';
66
import 'package:analyzer/dart/ast/visitor.dart';
7-
import 'package:analyzer/dart/element/element.dart';
7+
import 'package:analyzer/dart/element/element2.dart';
88

99
import '../analyzer.dart';
1010
import '../extensions.dart';
@@ -32,15 +32,17 @@ class AvoidFieldInitializersInConstClasses extends LintRule {
3232
}
3333

3434
class HasParameterReferenceVisitor extends RecursiveAstVisitor<void> {
35-
Iterable<ParameterElement?> parameters;
35+
Iterable<FormalParameterElement?> parameters;
3636

3737
bool useParameter = false;
3838

39-
HasParameterReferenceVisitor(this.parameters);
39+
HasParameterReferenceVisitor(
40+
Iterable<FormalParameterFragment?> fragmentParameters)
41+
: parameters = fragmentParameters.map((p) => p?.element);
4042

4143
@override
4244
void visitSimpleIdentifier(SimpleIdentifier node) {
43-
if (parameters.contains(node.staticElement)) {
45+
if (parameters.contains(node.element)) {
4446
useParameter = true;
4547
} else {
4648
super.visitSimpleIdentifier(node);
@@ -61,14 +63,14 @@ class _Visitor extends SimpleAstVisitor<void> {
6163
var classDecl = declaration.thisOrAncestorOfType<ClassDeclaration>();
6264
if (classDecl == null) return;
6365

64-
var element = classDecl.declaredElement;
66+
var element = classDecl.declaredFragment?.element;
6567
if (element == null) return;
6668

6769
// no lint if several constructors
68-
if (element.allConstructors.length > 1) return;
70+
if (element.constructors2.length > 1) return;
6971

7072
var visitor = HasParameterReferenceVisitor(
71-
declaration.parameters.parameterElements);
73+
declaration.parameters.parameterFragments);
7274
node.expression.accept(visitor);
7375
if (!visitor.useParameter) {
7476
rule.reportLint(node);
@@ -84,10 +86,10 @@ class _Visitor extends SimpleAstVisitor<void> {
8486
// only const class
8587
var parent = node.parent;
8688
if (parent is ClassDeclaration) {
87-
var declaredElement = parent.declaredElement;
89+
var declaredElement = parent.declaredFragment?.element;
8890
if (declaredElement == null) return;
8991

90-
if (declaredElement.allConstructors.every((e) => !e.isConst)) {
92+
if (declaredElement.constructors2.every((e) => !e.isConst)) {
9193
return;
9294
}
9395
for (var variable in node.fields.variables) {

0 commit comments

Comments
 (0)