Chromium Code Reviews| 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 ecfe2049c611843dc861a4ce6229e8b30173263d..cbe793ef2575dbbc6ef3b3de6d57d67f666646a4 100644 |
| --- a/pkg/analyzer/lib/src/generated/resolver.dart |
| +++ b/pkg/analyzer/lib/src/generated/resolver.dart |
| @@ -4001,6 +4001,7 @@ class GatherUsedImportedElementsVisitor extends RecursiveAstVisitor { |
| * An [AstVisitor] that fills [UsedLocalElements]. |
| */ |
| class GatherUsedLocalElementsVisitor extends RecursiveAstVisitor { |
| + final List<Element> definedElements = <Element>[]; |
| final UsedLocalElements usedElements = new UsedLocalElements(); |
| final LibraryElement _enclosingLibrary; |
| @@ -4070,10 +4071,11 @@ class GatherUsedLocalElementsVisitor extends RecursiveAstVisitor { |
| @override |
| visitSimpleIdentifier(SimpleIdentifier node) { |
| + Element element = node.staticElement; |
| if (node.inDeclarationContext()) { |
| + definedElements.add(element); |
| return; |
| } |
| - Element element = node.staticElement; |
| bool isIdentifierRead = _isReadIdentifier(node); |
| if (element is LocalVariableElement) { |
| if (isIdentifierRead) { |
| @@ -12148,7 +12150,7 @@ class TypeResolverVisitor extends ScopedVisitor { |
| * structure looking for cases of [HintCode.UNUSED_ELEMENT], |
| * [HintCode.UNUSED_FIELD], [HintCode.UNUSED_LOCAL_VARIABLE], etc. |
| */ |
| -class UnusedLocalElementsVerifier extends RecursiveElementVisitor { |
| +class UnusedLocalElementsVerifier extends SimpleElementVisitor { |
| /** |
| * The error listener to which errors will be reported. |
| */ |
| @@ -12173,6 +12175,24 @@ class UnusedLocalElementsVerifier extends RecursiveElementVisitor { |
| super.visitClassElement(element); |
| } |
| + visitElement(Element element) { |
|
Paul Berry
2016/02/09 20:34:25
Why not simply:
element.accept(this);
Or bet
Brian Wilkerson
2016/02/09 20:35:57
I was about to make the same comment. After all, o
|
| + 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); |
| + } |
| + } |
| + |
| @override |
| visitFieldElement(FieldElement element) { |
| if (!_isReadMember(element)) { |