analyzer: Deprecate AnalysisTarget

Change-Id: Iaca9ffb8f25ada45efabd13622fa4990ca23af3f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/417908
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/api.txt b/pkg/analyzer/api.txt
index 25aa494..9e5d55cc 100644
--- a/pkg/analyzer/api.txt
+++ b/pkg/analyzer/api.txt
@@ -5292,7 +5292,7 @@
 package:analyzer/src/lint/linter.dart:
   LintRule (non-public)
 package:analyzer/src/task/api/model.dart:
-  AnalysisTarget (class extends Object):
+  AnalysisTarget (class extends Object, deprecated):
     new (constructor: AnalysisTarget Function())
     librarySource (getter: Source?)
     source (getter: Source?)
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index 56e2ebd..6734122 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -55,6 +55,7 @@
 import 'package:analyzer/src/dart/resolver/scope.dart' show Namespace;
 import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
 import 'package:analyzer/src/generated/utilities_dart.dart';
+// ignore: deprecated_member_use_from_same_package
 import 'package:analyzer/src/task/api/model.dart' show AnalysisTarget;
 import 'package:meta/meta.dart';
 import 'package:pub_semver/pub_semver.dart';
@@ -390,6 +391,7 @@
 /// represent the semantic structure of the program.
 ///
 /// Clients may not extend, implement or mix-in this class.
+// ignore: deprecated_member_use_from_same_package
 abstract class Element implements AnalysisTarget {
   /// A list of this element's children.
   ///
diff --git a/pkg/analyzer/lib/src/dart/constant/evaluation.dart b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
index 5ebba9b..e442855 100644
--- a/pkg/analyzer/lib/src/dart/constant/evaluation.dart
+++ b/pkg/analyzer/lib/src/dart/constant/evaluation.dart
@@ -519,11 +519,13 @@
   }
 }
 
+// ignore: deprecated_member_use_from_same_package
 /// Interface for [AnalysisTarget]s for which constant evaluation can be
 /// performed.
 @AnalyzerPublicApi(
     message: 'exposed because it is implemented by various elements')
 // TODO(scheglov): consider implementing only in Impl or removing
+// ignore: deprecated_member_use_from_same_package
 abstract class ConstantEvaluationTarget extends AnalysisTarget {
   /// Return the [AnalysisContext] which should be used to evaluate this
   /// constant.
diff --git a/pkg/analyzer/lib/src/task/api/model.dart b/pkg/analyzer/lib/src/task/api/model.dart
index 1566b0d2..f565d29 100644
--- a/pkg/analyzer/lib/src/task/api/model.dart
+++ b/pkg/analyzer/lib/src/task/api/model.dart
@@ -11,6 +11,7 @@
 /// Instances of this type are used in hashed data structures, so subtypes are
 /// required to correctly implement [==] and [hashCode].
 @AnalyzerPublicApi(message: 'exposed by Element (superclass)')
+@Deprecated('To be removed without replacement')
 abstract class AnalysisTarget {
   /// If this target is associated with a library, return the source of the
   /// library's defining compilation unit; otherwise return `null`.