Skip to content
This repository was archived by the owner on Nov 20, 2024. It is now read-only.

Commit b677397

Browse files
authored
Require analyze 4.4.0, stop using deprecated APIs. (#3587)
* Require analyze 4.4.0, stop using deprecated APIs. * Comment out 'combinators_ordering'.
1 parent ee965f1 commit b677397

File tree

94 files changed

+490
-415
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+490
-415
lines changed

analysis_options.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ linter:
3636
- cancel_subscriptions
3737
# - cascade_invocations
3838
- cast_nullable_to_non_nullable
39-
- combinators_ordering
39+
# - combinators_ordering
4040
# - close_sinks # https://github.com/dart-lang/linter/issues/268
4141
- comment_references
4242
- directives_ordering

lib/src/ast.dart

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
/// Common AST helpers.
66
import 'package:analyzer/dart/ast/ast.dart';
7+
import 'package:analyzer/dart/ast/syntactic_entity.dart';
78
import 'package:analyzer/dart/ast/token.dart';
89
import 'package:analyzer/dart/element/element.dart';
910
import 'package:analyzer/dart/element/visitor.dart';
@@ -34,10 +35,10 @@ CompilationUnit? getCompilationUnit(AstNode node) =>
3435

3536
/// Returns a field identifier with the given [name] in the given [decl]'s
3637
/// variable declaration list or `null` if none is found.
37-
SimpleIdentifier? getFieldIdentifier(FieldDeclaration decl, String name) {
38+
Token? getFieldName(FieldDeclaration decl, String name) {
3839
for (var v in decl.fields.variables) {
39-
if (v.name.name == name) {
40-
return v.name;
40+
if (v.name2.lexeme == name) {
41+
return v.name2;
4142
}
4243
}
4344
return null;
@@ -57,7 +58,7 @@ int? getIntValue(Expression expression, LinterContext? context) {
5758
}
5859

5960
/// Returns the most specific AST node appropriate for associating errors.
60-
AstNode getNodeToAnnotate(Declaration node) {
61+
SyntacticEntity getNodeToAnnotate(Declaration node) {
6162
var mostSpecific = _getNodeToAnnotate(node);
6263
return mostSpecific ?? node;
6364
}
@@ -91,17 +92,17 @@ bool hasOverrideAnnotation(Element element) => element.hasOverride;
9192
bool inPrivateMember(AstNode node) {
9293
var parent = node.parent;
9394
if (parent is NamedCompilationUnitMember) {
94-
return isPrivate(parent.name);
95+
return isPrivate(parent.name2);
9596
}
9697
if (parent is ExtensionDeclaration) {
97-
return parent.name == null || isPrivate(parent.name);
98+
return parent.name2 == null || isPrivate(parent.name2);
9899
}
99100
return false;
100101
}
101102

102103
/// Returns `true` if this element is the `==` method declaration.
103104
bool isEquals(ClassMember element) =>
104-
element is MethodDeclaration && element.name.name == '==';
105+
element is MethodDeclaration && element.name2.lexeme == '==';
105106

106107
/// Returns `true` if the keyword associated with this token is `final` or
107108
/// `const`.
@@ -150,8 +151,8 @@ bool isKeyWord(String id) => Keyword.keywords.containsKey(id);
150151
bool isMethod(ClassMember m) => m is MethodDeclaration;
151152

152153
/// Check if the given identifier has a private name.
153-
bool isPrivate(SimpleIdentifier? identifier) =>
154-
identifier != null ? Identifier.isPrivateName(identifier.name) : false;
154+
bool isPrivate(Token? name) =>
155+
name != null ? Identifier.isPrivateName(name.lexeme) : false;
155156

156157
/// Returns `true` if the given [ClassMember] is a public method.
157158
bool isPublicMethod(ClassMember m) {
@@ -276,10 +277,10 @@ bool _checkForSimpleGetter(MethodDeclaration getter, Expression? expression) {
276277
if (expression is SimpleIdentifier) {
277278
var staticElement = expression.staticElement;
278279
if (staticElement is PropertyAccessorElement) {
279-
var enclosingElement = getter.declaredElement?.enclosingElement2;
280+
var enclosingElement = getter.declaredElement?.enclosingElement3;
280281
// Skipping library level getters, test that the enclosing element is
281282
// the same
282-
if (staticElement.enclosingElement2 == enclosingElement) {
283+
if (staticElement.enclosingElement3 == enclosingElement) {
283284
return staticElement.isSynthetic && staticElement.variable.isPrivate;
284285
}
285286
}
@@ -345,45 +346,45 @@ int? _getIntValue(Expression expression, LinterContext? context,
345346
return negated ? -value : value;
346347
}
347348

348-
AstNode? _getNodeToAnnotate(Declaration node) {
349+
SyntacticEntity? _getNodeToAnnotate(Declaration node) {
349350
if (node is MethodDeclaration) {
350-
return node.name;
351+
return node.name2;
351352
}
352353
if (node is ConstructorDeclaration) {
353-
return node.name;
354+
return node.name2;
354355
}
355356
if (node is FieldDeclaration) {
356357
return node.fields;
357358
}
358359
if (node is ClassTypeAlias) {
359-
return node.name;
360+
return node.name2;
360361
}
361362
if (node is FunctionTypeAlias) {
362-
return node.name;
363+
return node.name2;
363364
}
364365
if (node is ClassDeclaration) {
365-
return node.name;
366+
return node.name2;
366367
}
367368
if (node is EnumDeclaration) {
368-
return node.name;
369+
return node.name2;
369370
}
370371
if (node is ExtensionDeclaration) {
371-
return node.name;
372+
return node.name2;
372373
}
373374
if (node is FunctionDeclaration) {
374-
return node.name;
375+
return node.name2;
375376
}
376377
if (node is TopLevelVariableDeclaration) {
377378
return node.variables;
378379
}
379380
if (node is EnumConstantDeclaration) {
380-
return node.name;
381+
return node.name2;
381382
}
382383
if (node is TypeParameter) {
383-
return node.name;
384+
return node.name2;
384385
}
385386
if (node is VariableDeclaration) {
386-
return node.name;
387+
return node.name2;
387388
}
388389
return null;
389390
}
@@ -416,8 +417,8 @@ Element? _getWriteElement(AstNode node) {
416417
}
417418

418419
bool _hasFieldOrMethod(ClassMember element, String name) =>
419-
(element is MethodDeclaration && element.name.name == name) ||
420-
(element is FieldDeclaration && getFieldIdentifier(element, name) != null);
420+
(element is MethodDeclaration && element.name2.lexeme == name) ||
421+
(element is FieldDeclaration && getFieldName(element, name) != null);
421422

422423
/// An [Element] processor function type.
423424
/// If `true` is returned, children of [element] will be visited.

lib/src/extensions.dart

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'package:analyzer/dart/constant/value.dart';
77
import 'package:analyzer/dart/element/element.dart';
88
import 'package:analyzer/dart/element/type.dart';
99
import 'package:analyzer/src/dart/element/member.dart'; // ignore: implementation_imports
10+
import 'package:collection/collection.dart';
1011

1112
import 'util/dart_type_utilities.dart';
1213

@@ -127,6 +128,13 @@ extension ClassElementExtension on ClassElement {
127128
bool get isEnumLikeClass => asEnumLikeClass != null;
128129
}
129130

131+
extension InterfaceElementExtension on InterfaceElement {
132+
/// Returns whether this element is exactly [otherName] declared in
133+
/// [otherLibrary].
134+
bool isClass(String otherName, String otherLibrary) =>
135+
name == otherName && library.name == otherLibrary;
136+
}
137+
130138
extension AstNodeExtension on AstNode? {
131139
Element? get canonicalElement {
132140
var self = this;
@@ -159,16 +167,29 @@ extension BlockExtension on Block {
159167
}
160168
}
161169

170+
extension ClassMemberListExtension on List<ClassMember> {
171+
MethodDeclaration? getMethod(String name) => whereType<MethodDeclaration>()
172+
.firstWhereOrNull((node) => node.name2.lexeme == name);
173+
}
174+
162175
extension DartTypeExtension on DartType? {
163-
bool extendsClass(String? className, String library) =>
164-
_extendsClass(this, <ClassElement>{}, className, library);
176+
bool extendsClass(String? className, String library) {
177+
var self = this;
178+
if (self is InterfaceType) {
179+
return _extendsClass(self, <InterfaceElement>{}, className, library);
180+
}
181+
return false;
182+
}
165183

166-
static bool _extendsClass(DartType? type, Set<ClassElement> seenTypes,
167-
String? className, String? library) =>
168-
type is InterfaceType &&
169-
seenTypes.add(type.element) &&
184+
static bool _extendsClass(
185+
InterfaceType? type,
186+
Set<InterfaceElement> seenElements,
187+
String? className,
188+
String? library) =>
189+
type != null &&
190+
seenElements.add(type.element2) &&
170191
(DartTypeUtilities.isClass(type, className, library) ||
171-
_extendsClass(type.superclass, seenTypes, className, library));
192+
_extendsClass(type.superclass, seenElements, className, library));
172193
}
173194

174195
extension ExpressionExtension on Expression? {
@@ -179,9 +200,11 @@ extension InterfaceTypeExtension on InterfaceType {
179200
/// Returns the collection of all interfaces that this type implements,
180201
/// including itself.
181202
Iterable<InterfaceType> get implementedInterfaces {
182-
void searchSupertypes(InterfaceType? type, Set<ClassElement> alreadyVisited,
203+
void searchSupertypes(
204+
InterfaceType? type,
205+
Set<InterfaceElement> alreadyVisited,
183206
List<InterfaceType> interfaceTypes) {
184-
if (type == null || !alreadyVisited.add(type.element)) {
207+
if (type == null || !alreadyVisited.add(type.element2)) {
185208
return;
186209
}
187210
interfaceTypes.add(type);

lib/src/rules/always_declare_return_types.dart

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,26 +83,26 @@ class _Visitor extends SimpleAstVisitor<void> {
8383
@override
8484
void visitFunctionDeclaration(FunctionDeclaration node) {
8585
if (!node.isSetter && node.returnType == null) {
86-
rule.reportLint(node.name,
87-
arguments: [node.name.name], errorCode: functionCode);
86+
rule.reportLintForToken(node.name2,
87+
arguments: [node.name2.lexeme], errorCode: functionCode);
8888
}
8989
}
9090

9191
@override
9292
void visitFunctionTypeAlias(FunctionTypeAlias node) {
9393
if (node.returnType == null) {
94-
rule.reportLint(node.name,
95-
arguments: [node.name.name], errorCode: functionCode);
94+
rule.reportLintForToken(node.name2,
95+
arguments: [node.name2.lexeme], errorCode: functionCode);
9696
}
9797
}
9898

9999
@override
100100
void visitMethodDeclaration(MethodDeclaration node) {
101101
if (!node.isSetter &&
102102
node.returnType == null &&
103-
node.name.token.type != TokenType.INDEX_EQ) {
104-
rule.reportLint(node.name,
105-
arguments: [node.name.name], errorCode: methodCode);
103+
node.name2.type != TokenType.INDEX_EQ) {
104+
rule.reportLintForToken(node.name2,
105+
arguments: [node.name2.lexeme], errorCode: methodCode);
106106
}
107107
}
108108
}

lib/src/rules/always_put_required_named_parameters_first.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ class _Visitor extends SimpleAstVisitor<void> {
6363
var element = param.declaredElement;
6464
if (element != null && (element.hasRequired || element.isRequiredNamed)) {
6565
if (nonRequiredSeen) {
66-
var identifier = param.identifier;
67-
if (identifier != null) {
68-
rule.reportLintForToken(identifier.token);
66+
var name = param.name;
67+
if (name != null) {
68+
rule.reportLintForToken(name);
6969
}
7070
}
7171
} else {

lib/src/rules/always_require_non_null_named_parameters.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,9 @@ class _Visitor extends SimpleAstVisitor<void> {
9898
void _checkAssert(
9999
Expression assertExpression, List<DefaultFormalParameter> params) {
100100
for (var param in params) {
101-
var identifier = param.identifier;
102-
if (identifier != null &&
103-
_hasAssertNotNull(assertExpression, identifier.name)) {
104-
rule.reportLintForToken(identifier.beginToken);
101+
var name = param.name;
102+
if (name != null && _hasAssertNotNull(assertExpression, name.lexeme)) {
103+
rule.reportLintForToken(name);
105104
params.remove(param);
106105
return;
107106
}

lib/src/rules/always_specify_types.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,8 @@ class _Visitor extends SimpleAstVisitor<void> {
129129

130130
@override
131131
void visitSimpleFormalParameter(SimpleFormalParameter param) {
132-
var identifier = param.identifier;
133-
if (identifier != null &&
134-
param.type == null &&
135-
!identifier.name.isJustUnderscores) {
132+
var name = param.name;
133+
if (name != null && param.type == null && !name.lexeme.isJustUnderscores) {
136134
if (param.keyword != null) {
137135
rule.reportLintForToken(param.keyword);
138136
} else {

lib/src/rules/always_use_package_imports.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class _Visitor extends SimpleAstVisitor<void> {
7575
_Visitor(this.rule);
7676

7777
bool isRelativeImport(ImportDirective node) {
78-
var uriContent = node.uriContent;
78+
var uriContent = node.uri.stringValue;
7979
if (uriContent != null) {
8080
var uri = Uri.tryParse(uriContent);
8181
return uri != null && uri.scheme.isEmpty;

lib/src/rules/annotate_overrides.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analyzer/dart/ast/ast.dart';
6+
import 'package:analyzer/dart/ast/token.dart';
67
import 'package:analyzer/dart/ast/visitor.dart';
78
import 'package:analyzer/dart/element/element.dart';
89

@@ -68,12 +69,12 @@ class _Visitor extends SimpleAstVisitor<void> {
6869

6970
_Visitor(this.rule, this.context);
7071

71-
void check(Element? element, AstNode target) {
72+
void check(Element? element, Token target) {
7273
if (element == null || element.hasOverride) return;
7374

7475
var member = getOverriddenMember(element);
7576
if (member != null) {
76-
rule.reportLint(target);
77+
rule.reportLintForToken(target);
7778
}
7879
}
7980

@@ -99,14 +100,14 @@ class _Visitor extends SimpleAstVisitor<void> {
99100
if (node.isStatic) return;
100101

101102
for (var field in node.fields.variables) {
102-
check(field.declaredElement, field);
103+
check(field.declaredElement, field.name2);
103104
}
104105
}
105106

106107
@override
107108
void visitMethodDeclaration(MethodDeclaration node) {
108109
if (node.isStatic) return;
109110

110-
check(node.declaredElement, node.name);
111+
check(node.declaredElement, node.name2);
111112
}
112113
}

lib/src/rules/avoid_classes_with_only_static_members.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class _Visitor extends SimpleAstVisitor<void> {
8686
var interface = context.inheritanceManager.getInterface(declaredElement);
8787
var map = interface.map;
8888
for (var member in map.values) {
89-
var enclosingElement = member.enclosingElement2;
89+
var enclosingElement = member.enclosingElement3;
9090
if (enclosingElement is ClassElement &&
9191
!enclosingElement.isDartCoreObject) {
9292
return;

0 commit comments

Comments
 (0)