Stop using resolutionMap. (#1700)
diff --git a/lib/src/ast.dart b/lib/src/ast.dart
index b2e64b5..98ea0b0 100644
--- a/lib/src/ast.dart
+++ b/lib/src/ast.dart
@@ -4,7 +4,6 @@
/// Common AST helpers.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/visitor.dart';
@@ -169,8 +168,7 @@
declaration.metadata.any((Annotation a) => a.name.name == 'protected');
/// Returns `true` if the given [ClassMember] is a public method.
-bool isPublicMethod(ClassMember m) =>
- isMethod(m) && resolutionMap.elementDeclaredByDeclaration(m).isPublic;
+bool isPublicMethod(ClassMember m) => isMethod(m) && m.declaredElement.isPublic;
/// Returns `true` if the given method [declaration] is a "simple getter".
///
@@ -268,7 +266,7 @@
var leftHandSide = assignment.leftHandSide;
var rightHandSide = assignment.rightHandSide;
if (leftHandSide is SimpleIdentifier && rightHandSide is SimpleIdentifier) {
- var leftElement = resolutionMap.staticElementForIdentifier(leftHandSide);
+ var leftElement = leftHandSide.staticElement;
if (leftElement is! PropertyAccessorElement || !leftElement.isSynthetic) {
return false;
}
diff --git a/lib/src/rules/annotate_overrides.dart b/lib/src/rules/annotate_overrides.dart
index ecdf313..7e2eca1 100644
--- a/lib/src/rules/annotate_overrides.dart
+++ b/lib/src/rules/annotate_overrides.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:linter/src/analyzer.dart';
@@ -91,11 +90,9 @@
@override
void visitFieldDeclaration(FieldDeclaration node) {
for (VariableDeclaration field in node.fields.variables) {
- if (field?.declaredElement != null &&
- !resolutionMap
- .elementDeclaredByVariableDeclaration(field)
- .hasOverride) {
- Element member = getOverriddenMember(field.declaredElement);
+ var element = field.declaredElement;
+ if (element != null && !element.hasOverride) {
+ Element member = getOverriddenMember(element);
if (member != null) {
rule.reportLint(field);
}
@@ -105,9 +102,9 @@
@override
void visitMethodDeclaration(MethodDeclaration node) {
- if (node?.declaredElement != null &&
- !resolutionMap.elementDeclaredByMethodDeclaration(node).hasOverride) {
- Element member = getOverriddenMember(node.declaredElement);
+ var element = node.declaredElement;
+ if (element != null && !element.hasOverride) {
+ Element member = getOverriddenMember(element);
if (member != null) {
rule.reportLint(node.name);
}
diff --git a/lib/src/rules/implementation_imports.dart b/lib/src/rules/implementation_imports.dart
index 1685fe1..f12c87e 100644
--- a/lib/src/rules/implementation_imports.dart
+++ b/lib/src/rules/implementation_imports.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:linter/src/analyzer.dart';
@@ -80,9 +79,7 @@
@override
void visitImportDirective(ImportDirective node) {
Uri importUri = node?.uriSource?.uri;
- Uri sourceUri = node == null
- ? null
- : resolutionMap.elementDeclaredByDirective(node)?.source?.uri;
+ Uri sourceUri = node?.element?.source?.uri;
// Test for 'package:*/src/'.
if (!isImplementation(importUri)) {
diff --git a/lib/src/rules/invariant_booleans.dart b/lib/src/rules/invariant_booleans.dart
index 8f59527..0bd6743 100644
--- a/lib/src/rules/invariant_booleans.dart
+++ b/lib/src/rules/invariant_booleans.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:linter/src/analyzer.dart';
@@ -141,8 +140,7 @@
@override
visitCondition(Expression node) {
// Right part discards reporting a subexpression already reported.
- if (node == null ||
- resolutionMap.staticTypeForExpression(node)?.name != 'bool') {
+ if (node?.staticType?.name != 'bool') {
return;
}
diff --git a/lib/src/rules/package_prefixed_library_names.dart b/lib/src/rules/package_prefixed_library_names.dart
index 82587f8..efc9887 100644
--- a/lib/src/rules/package_prefixed_library_names.dart
+++ b/lib/src/rules/package_prefixed_library_names.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:linter/src/analyzer.dart';
@@ -82,6 +81,7 @@
_Visitor(this.rule);
DartProject get project => rule.project;
+
@override
void visitLibraryDirective(LibraryDirective node) {
// If no project info is set, bail early.
@@ -89,13 +89,13 @@
if (project == null) {
return;
}
- Source source = resolutionMap.elementDeclaredByDirective(node).source;
+ Source source = node.element.source;
var prefix = Analyzer.facade.createLibraryNamePrefix(
libraryPath: source.fullName,
projectRoot: project.root.absolute.path,
packageName: project.name);
- var libraryName = resolutionMap.elementDeclaredByDirective(node).name;
+ var libraryName = node.element.name;
if (!matchesOrIsPrefixedBy(libraryName, prefix)) {
rule.reportLint(node.name);
}
diff --git a/lib/src/rules/public_member_api_docs.dart b/lib/src/rules/public_member_api_docs.dart
index 914e451..aff44bb 100644
--- a/lib/src/rules/public_member_api_docs.dart
+++ b/lib/src/rules/public_member_api_docs.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:linter/src/analyzer.dart';
@@ -205,9 +204,7 @@
isInLibFolder = isDefinedInLib(node);
if (!isInLibFolder) return;
- LibraryElement library = node == null
- ? null
- : resolutionMap.elementDeclaredByCompilationUnit(node)?.library;
+ LibraryElement library = node.declaredElement?.library;
manager = library == null
? null
: InheritanceManager2(library.context.typeSystem);
diff --git a/lib/src/rules/test_types_in_equals.dart b/lib/src/rules/test_types_in_equals.dart
index 400e0f9..bf3a0dc 100644
--- a/lib/src/rules/test_types_in_equals.dart
+++ b/lib/src/rules/test_types_in_equals.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:linter/src/analyzer.dart';
@@ -100,12 +99,7 @@
SimpleIdentifier identifier = node.expression as SimpleIdentifier;
var parameters = declaration.parameters;
- String parameterName = parameters == null
- ? null
- : resolutionMap
- .parameterElementsForFormalParameterList(parameters)
- ?.first
- ?.name;
+ String parameterName = parameters?.parameterElements?.first?.name;
if (identifier.name == parameterName) {
rule.reportLint(node);
}
diff --git a/lib/src/rules/unawaited_futures.dart b/lib/src/rules/unawaited_futures.dart
index 3d6abf6..991bc15 100644
--- a/lib/src/rules/unawaited_futures.dart
+++ b/lib/src/rules/unawaited_futures.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:linter/src/analyzer.dart';
@@ -80,8 +79,7 @@
var expr = node?.expression;
if (expr is AssignmentExpression) return;
- var type =
- expr == null ? null : resolutionMap.staticTypeForExpression(expr);
+ var type = expr?.staticType;
if (type?.isDartAsyncFuture == true) {
// Ignore a couple of special known cases.
if (_isFutureDelayedInstanceCreationWithComputation(expr) ||
@@ -106,12 +104,7 @@
/// computation.
bool _isFutureDelayedInstanceCreationWithComputation(Expression expr) =>
expr is InstanceCreationExpression &&
- resolutionMap
- .staticElementForConstructorReference(expr)
- ?.enclosingElement
- ?.type
- ?.isDartAsyncFuture ==
- true &&
+ expr.staticElement?.enclosingElement?.type?.isDartAsyncFuture == true &&
expr.constructorName?.name?.name == 'delayed' &&
expr.argumentList.arguments.length == 2;
@@ -122,7 +115,5 @@
bool _isMapPutIfAbsentInvocation(Expression expr) =>
expr is MethodInvocation &&
expr.methodName.name == 'putIfAbsent' &&
- _isMapClass(resolutionMap
- .staticElementForIdentifier(expr.methodName)
- ?.enclosingElement);
+ _isMapClass(expr.methodName.staticElement?.enclosingElement);
}
diff --git a/lib/src/rules/unrelated_type_equality_checks.dart b/lib/src/rules/unrelated_type_equality_checks.dart
index 10c3894..dd9c736 100644
--- a/lib/src/rules/unrelated_type_equality_checks.dart
+++ b/lib/src/rules/unrelated_type_equality_checks.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -170,8 +169,6 @@
}
class _Visitor extends SimpleAstVisitor<void> {
- static const String _boolClassName = 'bool';
-
final LintRule rule;
final TypeSystem typeSystem;
@@ -179,10 +176,7 @@
@override
void visitBinaryExpression(BinaryExpression node) {
- bool isDartCoreBoolean = resolutionMap.staticTypeForExpression(node).name ==
- _boolClassName &&
- resolutionMap.staticTypeForExpression(node).element?.library?.name ==
- _dartCoreLibraryName;
+ bool isDartCoreBoolean = node.staticType.isDartCoreBool;
if (!isDartCoreBoolean ||
(node.operator.type != TokenType.EQ_EQ &&
node.operator.type != TokenType.BANG_EQ)) {
diff --git a/lib/src/rules/valid_regexps.dart b/lib/src/rules/valid_regexps.dart
index 01f2923..050d18d 100644
--- a/lib/src/rules/valid_regexps.dart
+++ b/lib/src/rules/valid_regexps.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:linter/src/analyzer.dart';
@@ -53,9 +52,7 @@
@override
void visitInstanceCreationExpression(InstanceCreationExpression node) {
- ClassElement element = resolutionMap
- .staticElementForConstructorReference(node)
- ?.enclosingElement;
+ ClassElement element = node.staticElement?.enclosingElement;
if (element?.name == 'RegExp' && element?.library?.name == 'dart.core') {
NodeList<Expression> args = node.argumentList.arguments;
if (args.isEmpty) {
diff --git a/lib/src/util/leak_detector_visitor.dart b/lib/src/util/leak_detector_visitor.dart
index ef3ce44..fea0967 100644
--- a/lib/src/util/leak_detector_visitor.dart
+++ b/lib/src/util/leak_detector_visitor.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -38,8 +37,8 @@
LintRule rule,
Map<DartTypePredicate, String> predicates) =>
(VariableDeclaration variable) {
- if (!predicates.keys.any((DartTypePredicate p) => p(
- resolutionMap.elementDeclaredByVariableDeclaration(variable).type))) {
+ if (!predicates.keys
+ .any((DartTypePredicate p) => p(variable.declaredElement.type))) {
return;
}
@@ -76,9 +75,7 @@
containerNodes.whereType<PrefixedIdentifier>();
return prefixedIdentifiers.where((n) =>
n.prefix.staticElement == variable.name.staticElement &&
- _hasMatch(
- predicates,
- resolutionMap.elementDeclaredByVariableDeclaration(variable).type,
+ _hasMatch(predicates, variable.declaredElement.type,
n.identifier.token.lexeme));
}
@@ -98,11 +95,7 @@
Map<DartTypePredicate, String> predicates) =>
classNodes.where((AstNode n) =>
n is MethodInvocation &&
- ((_hasMatch(
- predicates,
- resolutionMap
- .elementDeclaredByVariableDeclaration(variable)
- .type,
+ ((_hasMatch(predicates, variable.declaredElement.type,
n.methodName.name) &&
(_isSimpleIdentifierElementEqualToVariable(
n.realTarget, variable) ||
diff --git a/lib/src/util/unrelated_types_visitor.dart b/lib/src/util/unrelated_types_visitor.dart
index 16a8298..1a70893 100644
--- a/lib/src/util/unrelated_types_visitor.dart
+++ b/lib/src/util/unrelated_types_visitor.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_resolution_map.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:linter/src/analyzer.dart';
@@ -115,13 +114,9 @@
if (classDeclaration == null) {
targetType = null;
} else if (classDeclaration is ClassDeclaration) {
- targetType = resolutionMap
- .elementDeclaredByClassDeclaration(classDeclaration)
- ?.type;
+ targetType = classDeclaration.declaredElement?.type;
} else if (classDeclaration is MixinDeclaration) {
- targetType = resolutionMap
- .elementDeclaredByMixinDeclaration(classDeclaration)
- ?.type;
+ targetType = classDeclaration.declaredElement?.type;
}
}
Expression argument = node.argumentList.arguments.first;