Add Annotation support to LinterVisitor and NodeLintRegistry

Bug: https://github.com/dart-lang/linter/issues/1073
Change-Id: I891e4b6322a13781220efc52c23ee9ca3c557418
Reviewed-on: https://dart-review.googlesource.com/c/88162
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
This commit is contained in:
Sam Rawlins 2019-01-02 19:07:33 +00:00 committed by commit-bot@chromium.org
parent 428629efd8
commit 983795d26a

View file

@ -18,6 +18,12 @@ class LinterVisitor extends RecursiveAstVisitor<void> {
LinterVisitor(this.registry, this.exceptionHandler);
@override
void visitAnnotation(Annotation node) {
_runSubscriptions(node, registry._forAnnotation);
super.visitAnnotation(node);
}
@override
void visitAsExpression(AsExpression node) {
_runSubscriptions(node, registry._forAsExpression);
@ -680,6 +686,7 @@ class LinterVisitor extends RecursiveAstVisitor<void> {
/// The container to register visitors for separate AST node types.
class NodeLintRegistry {
final bool enableTiming;
final List<_Subscription<Annotation>> _forAnnotation = [];
final List<_Subscription<AsExpression>> _forAsExpression = [];
final List<_Subscription<AssertInitializer>> _forAssertInitializer = [];
final List<_Subscription<AssertStatement>> _forAssertStatement = [];
@ -808,6 +815,10 @@ class NodeLintRegistry {
NodeLintRegistry(this.enableTiming);
void addAnnotation(LintRule linter, AstVisitor visitor) {
_forAnnotation.add(new _Subscription(linter, visitor, _getTimer(linter)));
}
void addAsExpression(LintRule linter, AstVisitor visitor) {
_forAsExpression.add(new _Subscription(linter, visitor, _getTimer(linter)));
}