Add ImplicitCallReference to NodeLintRegistry

Towards https://github.com/dart-lang/language/issues/2399

Change-Id: I4e31bec7703504711a5827e282b2b52d14ae6b05
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/254465
Auto-Submit: Nate Bosch <nbosch@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index 02ab12d..cbd1507 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -1,3 +1,6 @@
+## 4.7.0-dev
+* Add `addImplicitCallReference` to `NodeLintRegistry`.
+
 ## 4.6.0
 * Added `DartType.element2`, so that `InterfaceType.element2` overrides it.
 
diff --git a/pkg/analyzer/lib/src/lint/linter_visitor.dart b/pkg/analyzer/lib/src/lint/linter_visitor.dart
index 3383df0..9c059a2 100644
--- a/pkg/analyzer/lib/src/lint/linter_visitor.dart
+++ b/pkg/analyzer/lib/src/lint/linter_visitor.dart
@@ -403,6 +403,12 @@
   }
 
   @override
+  void visitImplicitCallReference(ImplicitCallReference node) {
+    _runSubscriptions(node, registry._forImplicitCallReference);
+    super.visitImplicitCallReference(node);
+  }
+
+  @override
   void visitImportDirective(ImportDirective node) {
     _runSubscriptions(node, registry._forImportDirective);
     super.visitImportDirective(node);
@@ -861,6 +867,8 @@
   final List<_Subscription<IfElement>> _forIfElement = [];
   final List<_Subscription<IfStatement>> _forIfStatement = [];
   final List<_Subscription<ImplementsClause>> _forImplementsClause = [];
+  final List<_Subscription<ImplicitCallReference>> _forImplicitCallReference =
+      [];
   final List<_Subscription<ImportDirective>> _forImportDirective = [];
   final List<_Subscription<IndexExpression>> _forIndexExpression = [];
   final List<_Subscription<InstanceCreationExpression>>
@@ -1215,6 +1223,11 @@
     _forImplementsClause.add(_Subscription(linter, visitor, _getTimer(linter)));
   }
 
+  void addImplicitCallReference(LintRule linter, AstVisitor visitor) {
+    _forImplicitCallReference
+        .add(_Subscription(linter, visitor, _getTimer(linter)));
+  }
+
   void addImportDirective(LintRule linter, AstVisitor visitor) {
     _forImportDirective.add(_Subscription(linter, visitor, _getTimer(linter)));
   }
diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml
index 54cf576..9196fd8 100644
--- a/pkg/analyzer/pubspec.yaml
+++ b/pkg/analyzer/pubspec.yaml
@@ -1,5 +1,5 @@
 name: analyzer
-version: 4.6.0
+version: 4.7.0-dev
 description: This package provides a library that performs static analysis of Dart code.
 repository: https://github.com/dart-lang/sdk/tree/main/pkg/analyzer