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

Unified Diff: pkg/analyzer/lib/src/generated/resolver.dart

Issue 2967183002: Change UnusedLocalElementsVerifier to AST visitor. (Closed)
Patch Set: Created 3 years, 5 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 | « pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart ('k') | pkg/analyzer/lib/src/task/dart.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/generated/resolver.dart
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index c82c479bd1f7ded7ac0fa640a1e13f6db5058c2f..73fcb2600b2713334b9f72a6b7a4011df52eadca 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -12,7 +12,6 @@ import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/dart/element/visitor.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/exception/exception.dart';
@@ -10308,11 +10307,11 @@ class TypeResolverVisitor extends ScopedVisitor {
}
/**
- * Instances of the class [UnusedLocalElementsVerifier] traverse an element
- * structure looking for cases of [HintCode.UNUSED_ELEMENT],
- * [HintCode.UNUSED_FIELD], [HintCode.UNUSED_LOCAL_VARIABLE], etc.
+ * Instances of the class [UnusedLocalElementsVerifier] traverse an AST
+ * looking for cases of [HintCode.UNUSED_ELEMENT], [HintCode.UNUSED_FIELD],
+ * [HintCode.UNUSED_LOCAL_VARIABLE], etc.
*/
-class UnusedLocalElementsVerifier extends RecursiveElementVisitor {
+class UnusedLocalElementsVerifier extends GeneralizingAstVisitor {
Brian Wilkerson 2017/07/05 17:07:23 I think a RecursiveAstVisitor would work and be mo
scheglov 2017/07/05 17:11:54 Acknowledged.
/**
* The error listener to which errors will be reported.
*/
@@ -10328,73 +10327,25 @@ class UnusedLocalElementsVerifier extends RecursiveElementVisitor {
*/
UnusedLocalElementsVerifier(this._errorListener, this._usedElements);
- @override
- visitClassElement(ClassElement element) {
- if (!_isUsedElement(element)) {
- _reportErrorForElement(HintCode.UNUSED_ELEMENT, element,
- [element.kind.displayName, element.displayName]);
- }
- super.visitClassElement(element);
- }
-
- @override
- visitFieldElement(FieldElement element) {
- if (!_isReadMember(element)) {
- _reportErrorForElement(
- HintCode.UNUSED_FIELD, element, [element.displayName]);
- }
- super.visitFieldElement(element);
- }
-
- @override
- visitFunctionElement(FunctionElement element) {
- if (!_isUsedElement(element)) {
- _reportErrorForElement(HintCode.UNUSED_ELEMENT, element,
- [element.kind.displayName, element.displayName]);
- }
- super.visitFunctionElement(element);
- }
-
- @override
- visitFunctionTypeAliasElement(FunctionTypeAliasElement element) {
- if (!_isUsedElement(element)) {
- _reportErrorForElement(HintCode.UNUSED_ELEMENT, element,
- [element.kind.displayName, element.displayName]);
- }
- super.visitFunctionTypeAliasElement(element);
- }
-
- @override
- visitLocalVariableElement(LocalVariableElement element) {
- if (!_isUsedElement(element) && !_isNamedUnderscore(element)) {
- HintCode errorCode;
- if (_usedElements.isCatchException(element)) {
- errorCode = HintCode.UNUSED_CATCH_CLAUSE;
- } else if (_usedElements.isCatchStackTrace(element)) {
- errorCode = HintCode.UNUSED_CATCH_STACK;
- } else {
- errorCode = HintCode.UNUSED_LOCAL_VARIABLE;
+ visitSimpleIdentifier(SimpleIdentifier node) {
+ if (node.inDeclarationContext()) {
+ var element = node.staticElement;
+ if (element is ClassElement) {
+ _visitClassElement(element);
+ } else if (element is FieldElement) {
+ _visitFieldElement(element);
+ } else if (element is FunctionElement) {
+ _visitFunctionElement(element);
+ } else if (element is FunctionTypeAliasElement) {
+ _visitFunctionTypeAliasElement(element);
+ } else if (element is LocalVariableElement) {
+ _visitLocalVariableElement(element);
+ } else if (element is MethodElement) {
+ _visitMethodElement(element);
+ } else if (element is PropertyAccessorElement) {
+ _visitPropertyAccessorElement(element);
}
- _reportErrorForElement(errorCode, element, [element.displayName]);
- }
- }
-
- @override
- visitMethodElement(MethodElement element) {
- if (!_isUsedMember(element)) {
- _reportErrorForElement(HintCode.UNUSED_ELEMENT, element,
- [element.kind.displayName, element.displayName]);
- }
- super.visitMethodElement(element);
- }
-
- @override
- visitPropertyAccessorElement(PropertyAccessorElement element) {
- if (!_isUsedMember(element)) {
- _reportErrorForElement(HintCode.UNUSED_ELEMENT, element,
- [element.kind.displayName, element.displayName]);
}
- super.visitPropertyAccessorElement(element);
}
bool _isNamedUnderscore(LocalVariableElement element) {
@@ -10456,6 +10407,62 @@ class UnusedLocalElementsVerifier extends RecursiveElementVisitor {
element.nameOffset, element.nameLength, errorCode, arguments));
}
}
+
+ _visitClassElement(ClassElement element) {
+ if (!_isUsedElement(element)) {
+ _reportErrorForElement(HintCode.UNUSED_ELEMENT, element,
+ [element.kind.displayName, element.displayName]);
+ }
+ }
+
+ _visitFieldElement(FieldElement element) {
+ if (!_isReadMember(element)) {
+ _reportErrorForElement(
+ HintCode.UNUSED_FIELD, element, [element.displayName]);
+ }
+ }
+
+ _visitFunctionElement(FunctionElement element) {
+ if (!_isUsedElement(element)) {
+ _reportErrorForElement(HintCode.UNUSED_ELEMENT, element,
+ [element.kind.displayName, element.displayName]);
+ }
+ }
+
+ _visitFunctionTypeAliasElement(FunctionTypeAliasElement element) {
+ if (!_isUsedElement(element)) {
+ _reportErrorForElement(HintCode.UNUSED_ELEMENT, element,
+ [element.kind.displayName, element.displayName]);
+ }
+ }
+
+ _visitLocalVariableElement(LocalVariableElement element) {
+ if (!_isUsedElement(element) && !_isNamedUnderscore(element)) {
+ HintCode errorCode;
+ if (_usedElements.isCatchException(element)) {
+ errorCode = HintCode.UNUSED_CATCH_CLAUSE;
+ } else if (_usedElements.isCatchStackTrace(element)) {
+ errorCode = HintCode.UNUSED_CATCH_STACK;
+ } else {
+ errorCode = HintCode.UNUSED_LOCAL_VARIABLE;
+ }
+ _reportErrorForElement(errorCode, element, [element.displayName]);
+ }
+ }
+
+ _visitMethodElement(MethodElement element) {
+ if (!_isUsedMember(element)) {
+ _reportErrorForElement(HintCode.UNUSED_ELEMENT, element,
+ [element.kind.displayName, element.displayName]);
+ }
+ }
+
+ _visitPropertyAccessorElement(PropertyAccessorElement element) {
+ if (!_isUsedMember(element)) {
+ _reportErrorForElement(HintCode.UNUSED_ELEMENT, element,
+ [element.kind.displayName, element.displayName]);
+ }
+ }
}
/**
« no previous file with comments | « pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart ('k') | pkg/analyzer/lib/src/task/dart.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698