meta: Use TargetKind.overridableMember on MustBeOverridden

Change-Id: I6f19eeac5efac2c56eabecd32bc6e2032d1ba764
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/369526
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/analyzer/lib/src/error/annotation_verifier.dart b/pkg/analyzer/lib/src/error/annotation_verifier.dart
index a981e52..a541203 100644
--- a/pkg/analyzer/lib/src/error/annotation_verifier.dart
+++ b/pkg/analyzer/lib/src/error/annotation_verifier.dart
@@ -44,8 +44,6 @@
       _checkInternal(node);
     } else if (element.isLiteral) {
       _checkLiteral(node);
-    } else if (element.isMustBeOverridden) {
-      _checkMustBeOverridden(node);
     } else if (element.isNonVirtual) {
       _checkNonVirtual(node);
     } else if (element.isReopen) {
@@ -204,23 +202,6 @@
     }
   }
 
-  /// Reports a warning [node] if its parent is not a valid target for a
-  /// `@mustBeOverridden` annotation.
-  void _checkMustBeOverridden(Annotation node) {
-    var parent = node.parent;
-    if ((parent is MethodDeclaration && parent.isStatic) ||
-        (parent is FieldDeclaration && parent.isStatic) ||
-        parent.parent is ExtensionDeclaration ||
-        parent.parent is ExtensionTypeDeclaration ||
-        parent.parent is EnumDeclaration) {
-      _errorReporter.atNode(
-        node.name,
-        WarningCode.INVALID_ANNOTATION_TARGET,
-        arguments: [node.name.name, 'instance members of classes and mixins'],
-      );
-    }
-  }
-
   /// Reports a warning at [node] if its parent is not a valid target for a
   /// `@nonVirtual` annotation.
   void _checkNonVirtual(Annotation node) {
diff --git a/pkg/analyzer/lib/src/test_utilities/mock_packages.dart b/pkg/analyzer/lib/src/test_utilities/mock_packages.dart
index 559bcdb..955290b 100644
--- a/pkg/analyzer/lib/src/test_utilities/mock_packages.dart
+++ b/pkg/analyzer/lib/src/test_utilities/mock_packages.dart
@@ -256,10 +256,7 @@
 }
 
 @Target({
-  TargetKind.field,
-  TargetKind.getter,
-  TargetKind.method,
-  TargetKind.setter,
+  TargetKind.overridableMember,
 })
 class _MustBeOverridden {
   const _MustBeOverridden();
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_annotation_target_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_annotation_target_test.dart
index 707ce22..86d418c 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_annotation_target_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_annotation_target_test.dart
@@ -157,19 +157,6 @@
     ]);
   }
 
-  test_extensionType_instance_method() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-
-extension type E(int i) {
-  @mustBeOverridden
-  void m() { }
-}
-''', [
-      error(WarningCode.INVALID_ANNOTATION_TARGET, 63, 16),
-    ]);
-  }
-
   test_mixin_instance_method() async {
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
diff --git a/pkg/analyzer_utilities/lib/test/mock_packages/package_content/meta/lib/meta.dart b/pkg/analyzer_utilities/lib/test/mock_packages/package_content/meta/lib/meta.dart
index 62609e9..08f66ba 100644
--- a/pkg/analyzer_utilities/lib/test/mock_packages/package_content/meta/lib/meta.dart
+++ b/pkg/analyzer_utilities/lib/test/mock_packages/package_content/meta/lib/meta.dart
@@ -677,10 +677,7 @@
 }
 
 @Target({
-  TargetKind.field,
-  TargetKind.getter,
-  TargetKind.method,
-  TargetKind.setter,
+  TargetKind.overridableMember,
 })
 class _MustBeOverridden {
   const _MustBeOverridden();
diff --git a/pkg/meta/CHANGELOG.md b/pkg/meta/CHANGELOG.md
index b6c0881..d498f3c 100644
--- a/pkg/meta/CHANGELOG.md
+++ b/pkg/meta/CHANGELOG.md
@@ -3,9 +3,9 @@
 - Require that `@Immutable` is only used on classes, extensions, and mixins.
   Previously, this behavior was custom-wired into the Dart analyzer, but now it
   is specified with TargetKinds.
-- Require that `@mustCallSuper` is only used on overridable members. Previously,
-  this behavior was custom-wired into the Dart analyzer, but now it is
-  specified with TargetKinds.
+- Require that `@mustBeOverridden` and `@mustCallSuper` are only used on
+  overridable members. Previously, this behavior was custom-wired into the Dart
+  analyzer, but now it is specified with TargetKinds.
 
 ## 1.15.0
 
diff --git a/pkg/meta/lib/meta.dart b/pkg/meta/lib/meta.dart
index 6884c98..32daea2 100644
--- a/pkg/meta/lib/meta.dart
+++ b/pkg/meta/lib/meta.dart
@@ -708,10 +708,7 @@
 }
 
 @Target({
-  TargetKind.field,
-  TargetKind.getter,
-  TargetKind.method,
-  TargetKind.setter,
+  TargetKind.overridableMember,
 })
 class _MustBeOverridden {
   const _MustBeOverridden();