Elements. Deprecate TypeDefiningElement.

Change-Id: Ibb24c4b509eb86efe2f82fdf1c05acdb9bb403bd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/418834
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/api.txt b/pkg/analyzer/api.txt
index 4e96d9e..b1c07a2 100644
--- a/pkg/analyzer/api.txt
+++ b/pkg/analyzer/api.txt
@@ -3507,7 +3507,7 @@
     isAugmentation (getter: bool)
     name (getter: String)
     instantiate (method: DartType Function({required NullabilitySuffix nullabilitySuffix, required List<DartType> typeArguments}))
-  TypeDefiningElement (class extends Object implements Element):
+  TypeDefiningElement (class extends Object implements Element, deprecated):
     new (constructor: TypeDefiningElement Function())
   TypeParameterElement (class extends Object implements TypeDefiningElement, deprecated):
     new (constructor: TypeParameterElement Function())
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index e1a244b..cd58976 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -2235,6 +2235,7 @@
 /// An element that defines a type.
 ///
 /// Clients may not extend, implement or mix-in this class.
+@Deprecated('Use TypeDefiningElement2 instead')
 abstract class TypeDefiningElement implements Element {}
 
 /// A type parameter.
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 5f92347..cabab95 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -2037,7 +2037,10 @@
 
 /// The synthetic element representing the declaration of the type `dynamic`.
 class DynamicElementImpl extends ElementImpl
-    implements TypeDefiningElement, TypeDefiningFragment {
+    implements
+        // ignore:deprecated_member_use_from_same_package
+        TypeDefiningElement,
+        TypeDefiningFragment {
   /// The unique instance of this class.
   static final DynamicElementImpl instance = DynamicElementImpl._();
 
@@ -9157,7 +9160,10 @@
 
 /// The synthetic element representing the declaration of the type `Never`.
 class NeverElementImpl extends ElementImpl
-    implements TypeDefiningElement, TypeDefiningFragment {
+    implements
+        // ignore:deprecated_member_use_from_same_package
+        TypeDefiningElement,
+        TypeDefiningFragment {
   /// The unique instance of this class.
   static final instance = NeverElementImpl._();