Bump linter to include deprecated_member_use_from_same_package

We also stop reporting
`HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE` and
`HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE`
as these are now replaced by the new lint rule.

The biggest change here is in the DEPRECATED_MEMBER_USE tests,
as most of these tests have
`DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE` reported (since it's
easier to write tests with files in one package). We move all
of those tests to `DEPRECATED_MEMBER_USE` tests, without losing
coverage.

Bug: https://github.com/dart-lang/sdk/issues/50796
Change-Id: I7cada44265cd0e1e47ab77d4354de9a5571db614
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289444
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Kevin Moore <kevmoo@google.com>
Reviewed-by: Nate Bosch <nbosch@google.com>
diff --git a/DEPS b/DEPS
index 75c5e03..689f3a8 100644
--- a/DEPS
+++ b/DEPS
@@ -145,7 +145,7 @@
   "http_parser_rev": "b3b283b9f139640b932d604e8815460bbd3ecab5",
   "intl_rev": "fca552f2ec5d682b5fa36f02bdd72a5a4e2edcee",
   "json_rpc_2_rev": "0280ac6cb4f3905d81c47ba927123ba2b95f7940",
-  "linter_rev": "07c4d177bca9e3b670ab67a7c9a8cffeb90aa318", # disable rev_sdk_deps.dart
+  "linter_rev": "7c7db85d29b46af51e3f4a5e0a33440c4e3791fc", # disable rev_sdk_deps.dart
   "lints_rev": "dfded5e265015f21ce154577fe8488dc244e33c2",
   "logging_rev": "abef3717d958158eb8b0ddb2871f4b15a9804cd4",
   "markdown_rev": "ecbffa9bf9109d490b9388e9cb1f2bb801aee63c",
diff --git a/pkg/analysis_server/lib/src/lsp/mapping.dart b/pkg/analysis_server/lib/src/lsp/mapping.dart
index 7a11548..2135f67 100644
--- a/pkg/analysis_server/lib/src/lsp/mapping.dart
+++ b/pkg/analysis_server/lib/src/lsp/mapping.dart
@@ -35,10 +35,8 @@
 final diagnosticTagsForErrorCode = <String, List<lsp.DiagnosticTag>>{
   _errorCode(WarningCode.DEAD_CODE): [lsp.DiagnosticTag.Unnecessary],
   _errorCode(HintCode.DEPRECATED_MEMBER_USE): [lsp.DiagnosticTag.Deprecated],
-  _errorCode(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE): [
-    lsp.DiagnosticTag.Deprecated
-  ],
-  _errorCode(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE): [
+  'deprecated_member_use_from_same_package': [lsp.DiagnosticTag.Deprecated],
+  'deprecated_member_use_from_same_package_with_message': [
     lsp.DiagnosticTag.Deprecated
   ],
   _errorCode(HintCode.DEPRECATED_MEMBER_USE_WITH_MESSAGE): [
@@ -1360,9 +1358,8 @@
   final supportsDocumentChanges = capabilities.documentChanges;
   if (supportsDocumentChanges) {
     final supportsCreate = capabilities.createResourceOperations;
-    final changes = <
-        Either4<lsp.CreateFile, lsp.DeleteFile, lsp.RenameFile,
-            lsp.TextDocumentEdit>>[];
+    final changes = <Either4<lsp.CreateFile, lsp.DeleteFile, lsp.RenameFile,
+        lsp.TextDocumentEdit>>[];
 
     // Convert each SourceEdit to either a TextDocumentEdit or a
     // CreateFile + a TextDocumentEdit depending on whether it's a new
diff --git a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
index a78dc35..47e07ed 100644
--- a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
@@ -132,15 +132,9 @@
     HintCode.DEPRECATED_MEMBER_USE: [
       DataDriven.new,
     ],
-    HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE: [
-      DataDriven.new,
-    ],
     HintCode.DEPRECATED_MEMBER_USE_WITH_MESSAGE: [
       DataDriven.new,
     ],
-    HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE: [
-      DataDriven.new,
-    ],
     WarningCode.OVERRIDE_ON_NON_OVERRIDING_METHOD: [
       DataDriven.new,
     ],
@@ -457,6 +451,16 @@
         if (isCancelled) {
           return;
         }
+        var multiGenerators = FixProcessor.lintMultiProducerMap[codeName];
+        if (multiGenerators != null) {
+          for (var multiGenerator in multiGenerators) {
+            var multiProducer = multiGenerator();
+            multiProducer.configure(context);
+            for (var producer in await multiProducer.producers) {
+              await _generateFix(context, producer, codeName);
+            }
+          }
+        }
       } else {
         var generators = FixProcessor.nonLintProducerMap[errorCode] ?? [];
         await bulkApply(generators, codeName);
diff --git a/pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml b/pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml
index 5e6dfef..68ecc26 100644
--- a/pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml
+++ b/pkg/analysis_server/lib/src/services/correction/error_fix_status.yaml
@@ -1637,6 +1637,14 @@
   status: needsFix
 LintCode.deprecated_consistency:
   status: needsEvaluation
+LintCode.deprecated_member_use_from_same_package:
+  status: needsFix
+  notes: |-
+    Should probably be able to use `DataDriven`.
+LintCode.deprecated_member_use_from_same_package_with_message:
+  status: needsFix
+  notes: |-
+    Should probably be able to use `DataDriven`.
 LintCode.diagnostic_describe_all_properties:
   status: hasFix
 LintCode.directives_ordering:
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 0fbdb42..438dad5 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -361,6 +361,13 @@
 
 /// The computer for Dart fixes.
 class FixProcessor extends BaseProcessor {
+  static final Map<String, List<MultiProducerGenerator>> lintMultiProducerMap =
+      {
+    LintNames.deprecated_member_use_from_same_package: [
+      DataDriven.new,
+    ],
+  };
+
   /// A map from the names of lint rules to a list of the generators that are
   /// used to create correction producers. The generators are then used to build
   /// fixes for those diagnostics. The generators used for non-lint diagnostics
diff --git a/pkg/analysis_server/lib/src/services/linter/lint_names.dart b/pkg/analysis_server/lib/src/services/linter/lint_names.dart
index b11a5f8..1743c25 100644
--- a/pkg/analysis_server/lib/src/services/linter/lint_names.dart
+++ b/pkg/analysis_server/lib/src/services/linter/lint_names.dart
@@ -57,6 +57,8 @@
       'curly_braces_in_flow_control_structures';
   static const String dangling_library_doc_comments =
       'dangling_library_doc_comments';
+  static const String deprecated_member_use_from_same_package =
+      'deprecated_member_use_from_same_package';
   static const String diagnostic_describe_all_properties =
       'diagnostic_describe_all_properties';
   static const String directives_ordering = 'directives_ordering';
diff --git a/pkg/analysis_server/test/lsp/diagnostic_test.dart b/pkg/analysis_server/test/lsp/diagnostic_test.dart
index 5c11923..3b9e7f1 100644
--- a/pkg/analysis_server/test/lsp/diagnostic_test.dart
+++ b/pkg/analysis_server/test/lsp/diagnostic_test.dart
@@ -5,6 +5,7 @@
 import 'dart:async';
 
 import 'package:analysis_server/lsp_protocol/protocol.dart';
+import 'package:analyzer/src/test_utilities/package_config_file_builder.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart' as plugin;
 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
 import 'package:linter/src/rules.dart';
@@ -175,10 +176,18 @@
   }
 
   Future<void> test_diagnosticTag_deprecated() async {
-    newFile(mainFilePath, '''
+    var onePackagePath = convertPath('/home/one');
+    writePackageConfig(
+      projectFolderPath,
+      config: PackageConfigFileBuilder()
+        ..add(name: 'one', rootPath: onePackagePath),
+    );
+    newFile(convertPath('$onePackagePath/lib/one.dart'), '''
     @deprecated
     int? dep;
-
+    ''');
+    newFile(mainFilePath, r'''
+    import 'package:one/one.dart';
     void f() => print(dep);
     ''');
 
@@ -189,15 +198,23 @@
     final diagnostics = await diagnosticsUpdate;
     expect(diagnostics, hasLength(1));
     final diagnostic = diagnostics!.first;
-    expect(diagnostic.code, equals('deprecated_member_use_from_same_package'));
+    expect(diagnostic.code, equals('deprecated_member_use'));
     expect(diagnostic.tags, contains(DiagnosticTag.Deprecated));
   }
 
   Future<void> test_diagnosticTag_notSupported() async {
-    newFile(mainFilePath, '''
+    var onePackagePath = convertPath('/home/one');
+    writePackageConfig(
+      projectFolderPath,
+      config: PackageConfigFileBuilder()
+        ..add(name: 'one', rootPath: onePackagePath),
+    );
+    newFile(convertPath('$onePackagePath/lib/one.dart'), '''
     @deprecated
     int? dep;
-
+    ''');
+    newFile(mainFilePath, r'''
+    import 'package:one/one.dart';
     void f() => print(dep);
     ''');
 
@@ -206,7 +223,7 @@
     final diagnostics = await diagnosticsUpdate;
     expect(diagnostics, hasLength(1));
     final diagnostic = diagnostics!.first;
-    expect(diagnostic.code, equals('deprecated_member_use_from_same_package'));
+    expect(diagnostic.code, equals('deprecated_member_use'));
     expect(diagnostic.tags, isNull);
   }
 
diff --git a/pkg/analyzer/lib/src/dart/error/hint_codes.g.dart b/pkg/analyzer/lib/src/dart/error/hint_codes.g.dart
index d9438af..23aceae 100644
--- a/pkg/analyzer/lib/src/dart/error/hint_codes.g.dart
+++ b/pkg/analyzer/lib/src/dart/error/hint_codes.g.dart
@@ -61,6 +61,9 @@
 
   ///  Parameters:
   ///  0: the name of the member
+  ///
+  ///  This code is deprecated in favor of the
+  ///  'deprecated_member_from_same_package' lint rule, and will be removed.
   static const HintCode DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE = HintCode(
     'DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE',
     "'{0}' is deprecated and shouldn't be used.",
@@ -72,6 +75,9 @@
   ///  Parameters:
   ///  0: the name of the member
   ///  1: message details
+  ///
+  ///  This code is deprecated in favor of the
+  ///  'deprecated_member_from_same_package' lint rule, and will be removed.
   static const HintCode DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE =
       HintCode(
     'DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE',
diff --git a/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart b/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
index 8fff94e..cf5590e 100644
--- a/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
+++ b/pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart
@@ -306,13 +306,14 @@
   void reportError(
       AstNode errorNode, Element element, String displayName, String? message) {
     var library = element is LibraryElement ? element : element.library;
+    if (_isLibraryInWorkspacePackage(library)) {
+      return;
+    }
 
     message = message?.trim();
     if (message == null || message.isEmpty || message == '.') {
       _errorReporter.reportErrorForNode(
-        _isLibraryInWorkspacePackage(library)
-            ? HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE
-            : HintCode.DEPRECATED_MEMBER_USE,
+        HintCode.DEPRECATED_MEMBER_USE,
         errorNode,
         [displayName],
       );
@@ -323,9 +324,7 @@
         message = '$message.';
       }
       _errorReporter.reportErrorForNode(
-        _isLibraryInWorkspacePackage(library)
-            ? HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE
-            : HintCode.DEPRECATED_MEMBER_USE_WITH_MESSAGE,
+        HintCode.DEPRECATED_MEMBER_USE_WITH_MESSAGE,
         errorNode,
         [displayName, message],
       );
diff --git a/pkg/analyzer/messages.yaml b/pkg/analyzer/messages.yaml
index 5ed1fc2..fd68912 100644
--- a/pkg/analyzer/messages.yaml
+++ b/pkg/analyzer/messages.yaml
@@ -19377,6 +19377,9 @@
     comment: |-
       Parameters:
       0: the name of the member
+
+      This code is deprecated in favor of the
+      'deprecated_member_from_same_package' lint rule, and will be removed.
     documentation: |-
       #### Description
 
@@ -19407,6 +19410,9 @@
       Parameters:
       0: the name of the member
       1: message details
+
+      This code is deprecated in favor of the
+      'deprecated_member_from_same_package' lint rule, and will be removed.
   DIVISION_OPTIMIZATION:
     problemMessage: The operator x ~/ y is more efficient than (x / y).toInt().
     correctionMessage: "Try re-writing the expression to use the '~/' operator."
diff --git a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
index d1d0de4..60415ce 100644
--- a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
@@ -7,6 +7,7 @@
 import 'package:analyzer/src/utilities/legacy.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
+import '../../generated/test_support.dart';
 import '../dart/resolution/context_collection_resolution.dart';
 
 main() {
@@ -18,16 +19,6 @@
     defineReflectiveTests(DeprecatedMemberUse_BlazeWorkspaceTest);
     defineReflectiveTests(DeprecatedMemberUse_GnWorkspaceTest);
     defineReflectiveTests(DeprecatedMemberUse_PackageBuildWorkspaceTest);
-
-    defineReflectiveTests(
-      DeprecatedMemberUseFromSamePackage_BasicWorkspaceTest,
-    );
-    defineReflectiveTests(
-      DeprecatedMemberUseFromSamePackage_BlazeWorkspaceTest,
-    );
-    defineReflectiveTests(
-      DeprecatedMemberUseFromSamePackage_PackageBuildWorkspaceTest,
-    );
   });
 }
 
@@ -39,6 +30,46 @@
 @reflectiveTest
 class DeprecatedMemberUse_BasicWorkspaceTest extends PubPackageResolutionTest
     with DeprecatedMemberUse_BasicWorkspaceTestCases {
+  test_inDeprecatedEnum() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+@deprecated
+void f() {}
+''',
+      code: r'''
+@deprecated
+enum E {
+  one, two;
+
+  void m() {
+    f();
+  }
+}
+''',
+    );
+  }
+
+  test_inEnum() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+void f() {}
+''',
+      code: r'''
+enum E {
+  one, two;
+
+  void m() {
+    f();
+  }
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 68, 1),
+      ],
+    );
+  }
+
   test_instanceCreation_namedParameter_fromLegacy() async {
     noSoundNullSafety = false;
     newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
@@ -119,6 +150,35 @@
 }
 
 mixin DeprecatedMemberUse_BasicWorkspaceTestCases on PubPackageResolutionTest {
+  String get externalLibPath => '$workspaceRootPath/aaa/lib/a.dart';
+
+  String get externalLibUri => 'package:aaa/a.dart';
+
+  Future<void> assertErrorsInCode2(
+    List<ExpectedError> expectedErrors, {
+    required String externalCode,
+    required String code,
+  }) async {
+    newFile(externalLibPath, externalCode);
+
+    await assertErrorsInCode('''
+import '$externalLibUri';
+$code
+''', expectedErrors);
+  }
+
+  Future<void> assertNoErrorsInCode2({
+    required String externalCode,
+    required String code,
+  }) async {
+    newFile(externalLibPath, externalCode);
+
+    await assertNoErrorsInCode('''
+import '$externalLibUri';
+$code
+''');
+  }
+
   @override
   void setUp() {
     super.setUp();
@@ -129,6 +189,145 @@
     );
   }
 
+  test_assignmentExpression_compound_deprecatedGetter() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int get x => 0;
+
+set x(int _) {}
+''',
+      code: r'''
+void f() {
+  x += 2;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 42, 1),
+      ],
+    );
+  }
+
+  test_assignmentExpression_compound_deprecatedSetter() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+int get x => 0;
+
+@deprecated
+set x(int _) {}
+''',
+      code: r'''
+void f() {
+  x += 2;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 42, 1),
+      ],
+    );
+  }
+
+  test_assignmentExpression_simple_deprecatedGetter() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int get x => 0;
+
+set x(int _) {}
+''',
+      code: r'''
+void f() {
+  x = 0;
+}
+''',
+    );
+  }
+
+  test_assignmentExpression_simple_deprecatedGetterSetter() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+void f() {
+  x = 0;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 42, 1),
+      ],
+    );
+  }
+
+  test_assignmentExpression_simple_deprecatedSetter() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+int get x => 0;
+
+@deprecated
+set x(int _) {}
+''',
+      code: r'''
+void f() {
+  x = 0;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 42, 1),
+      ],
+    );
+  }
+
+  test_call() async {
+    await assertErrorsInCode2(externalCode: r'''
+class A {
+  @deprecated
+  call() {}
+}
+''', code: r'''
+void f(A a) {
+  a();
+}
+''', [
+      error(HintCode.DEPRECATED_MEMBER_USE, 45, 3),
+    ]);
+  }
+
+  test_class() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+class A {}
+''',
+      code: r'''
+void f(A a) {}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 36, 1),
+      ],
+    );
+  }
+
+  test_compoundAssignment() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+class A {
+  @deprecated
+  A operator+(A a) { return a; }
+}
+''',
+      code: r'''
+f(A a, A b) {
+  a += b;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 45, 6),
+      ],
+    );
+  }
+
   test_export() async {
     newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
 @deprecated
@@ -142,6 +341,63 @@
     ]);
   }
 
+  test_extensionOverride() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+extension E on int {
+  int get foo => 0;
+}
+''',
+      code: '''
+void f() {
+  E(0).foo;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 42, 1),
+      ],
+    );
+  }
+
+  test_field_implicitGetter() async {
+    newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
+class A {
+  @deprecated
+  int foo = 0;
+}
+''');
+
+    await assertErrorsInCode(r'''
+import 'package:aaa/a.dart';
+
+void f(A a) {
+  a.foo;
+}
+''', [
+      error(HintCode.DEPRECATED_MEMBER_USE, 48, 3),
+    ]);
+  }
+
+  test_field_implicitSetter() async {
+    newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
+class A {
+  @deprecated
+  int foo = 0;
+}
+''');
+
+    await assertErrorsInCode(r'''
+import 'package:aaa/a.dart';
+
+void f(A a) {
+  a.foo = 0;
+}
+''', [
+      error(HintCode.DEPRECATED_MEMBER_USE, 48, 3),
+    ]);
+  }
+
   test_field_inDeprecatedConstructor() async {
     newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
 class A {
@@ -163,42 +419,15 @@
 ''');
   }
 
-  test_fieldGet_implicitGetter() async {
-    newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
-class A {
-  @deprecated
-  int foo = 0;
-}
+  test_hideCombinator() async {
+    newFile(externalLibPath, r'''
+@deprecated
+class A {}
 ''');
-
-    await assertErrorsInCode(r'''
-import 'package:aaa/a.dart';
-
-void f(A a) {
-  a.foo;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE, 48, 3),
-    ]);
-  }
-
-  test_fieldSet_implicitSetter() async {
-    newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
-class A {
-  @deprecated
-  int foo = 0;
-}
+    await assertNoErrorsInCode('''
+// ignore: unused_import
+import '$externalLibUri' hide A;
 ''');
-
-    await assertErrorsInCode(r'''
-import 'package:aaa/a.dart';
-
-void f(A a) {
-  a.foo = 0;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE, 48, 3),
-    ]);
   }
 
   test_import() async {
@@ -216,26 +445,237 @@
     ]);
   }
 
-  test_method_inDeprecatedConstructor() async {
-    newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
-class A {
-  @deprecated
-  void foo() {}
+  test_inDeprecatedClass() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+@deprecated
+f() {}
+''',
+      code: r'''
+@deprecated
+class C {
+  m() {
+    f();
+  }
 }
-''');
+''',
+    );
+  }
 
-    await assertNoErrorsInCode(r'''
-import 'package:aaa/a.dart';
+  test_inDeprecatedExtension() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+@deprecated
+void f() {}
+''',
+      code: r'''
+@deprecated
+extension E on int {
+  void m() {
+    f();
+  }
+}
+''',
+    );
+  }
 
-class B extends A {
+  test_inDeprecatedField() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+@deprecated
+class C {}
+''',
+      code: r'''
+class X {
   @deprecated
-  B() {
-    foo();
+  C f;
+  X(this.f);
+}
+''',
+    );
+  }
+
+  test_inDeprecatedFunction() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+@deprecated
+f() {}
+''',
+      code: '''
+@deprecated
+g() {
+  f();
+}
+''',
+    );
+  }
+
+  test_inDeprecatedLibrary() async {
+    newFile(externalLibPath, r'''
+@deprecated
+f() {}
+''');
+    await assertNoErrorsInCode('''
+@deprecated
+library lib;
+import '$externalLibUri';
+
+class C {
+  m() {
+    f();
   }
 }
 ''');
   }
 
+  test_inDeprecatedMethod() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+@deprecated
+f() {}
+''',
+      code: '''
+class C {
+  @deprecated
+  m() {
+    f();
+  }
+}
+''',
+    );
+  }
+
+  test_inDeprecatedMethod_inDeprecatedClass() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+@deprecated
+f() {}
+''',
+      code: '''
+@deprecated
+class C {
+  @deprecated
+  m() {
+    f();
+  }
+}
+''',
+    );
+  }
+
+  test_inDeprecatedMixin() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+@deprecated
+f() {}
+''',
+      code: '''
+@deprecated
+mixin M {
+  m() {
+    f();
+  }
+}
+''',
+    );
+  }
+
+  test_inDeprecatedTopLevelVariable() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+@deprecated
+class C {}
+var x = C();
+''',
+      code: r'''
+@deprecated
+C v = x;
+''',
+    );
+  }
+
+  test_indexExpression() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+class A {
+  @deprecated
+  operator[](int i) {}
+}
+''',
+      code: r'''
+void f(A a) {
+  return a[1];
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 52, 4),
+      ],
+    );
+  }
+
+  test_inExtension() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+void f() {}
+''',
+      code: r'''
+extension E on int {
+  void m() {
+    f();
+  }
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 67, 1),
+      ],
+    );
+  }
+
+  test_instanceCreation_namedConstructor() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+class A {
+  @deprecated
+  A.named(int i) {}
+}
+''',
+      code: r'''
+f() {
+  return new A.named(1);
+}
+''',
+      [
+        error(
+          HintCode.DEPRECATED_MEMBER_USE,
+          48,
+          7,
+          // TODO(srawlins): Fix this message!
+          messageContains: ["'A.A.named' is deprecated and shouldn't be used."],
+        ),
+      ],
+    );
+  }
+
+  test_instanceCreation_unnamedConstructor() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+class A {
+  @deprecated
+  A(int i) {}
+}
+''',
+      code: r'''
+f() {
+  return new A(1);
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 48, 1),
+      ],
+    );
+  }
+
   test_methodInvocation() async {
     newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
 class A {
@@ -255,6 +695,111 @@
     ]);
   }
 
+  test_methodInvocation_constantAnnotation() async {
+    await assertErrorsInCode2(externalCode: r'''
+@deprecated
+int f() => 0;
+''', code: r'''
+var x = f();
+''', [
+      error(HintCode.DEPRECATED_MEMBER_USE, 37, 1),
+    ]);
+  }
+
+  test_methodInvocation_constructorAnnotation() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@Deprecated('0.9')
+int f() => 0;
+''',
+      code: r'''
+var x = f();
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE_WITH_MESSAGE, 37, 1,
+            text: "'f' is deprecated and shouldn't be used. 0.9."),
+      ],
+    );
+  }
+
+  test_methodInvocation_constructorAnnotation_dot() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@Deprecated('0.9.')
+int f() => 0;
+''',
+      code: r'''
+var x = f();
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE_WITH_MESSAGE, 37, 1,
+            text: "'f' is deprecated and shouldn't be used. 0.9."),
+      ],
+    );
+  }
+
+  test_methodInvocation_constructorAnnotation_exclamationMark() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@Deprecated(' Really! ')
+int f() => 0;
+''',
+      code: r'''
+var x = f();
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE_WITH_MESSAGE, 37, 1,
+            text: "'f' is deprecated and shouldn't be used. Really!"),
+      ],
+    );
+  }
+
+  test_methodInvocation_constructorAnnotation_onlyDot() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@Deprecated('.')
+int f() => 0;
+''',
+      code: r'''
+var x = f();
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 37, 1,
+            text: "'f' is deprecated and shouldn't be used."),
+      ],
+    );
+  }
+
+  test_methodInvocation_constructorAnnotation_questionMark() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@Deprecated('Are you sure?')
+int f() => 0;
+''',
+      code: r'''
+var x = f();
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE_WITH_MESSAGE, 37, 1,
+            text: "'f' is deprecated and shouldn't be used. Are you sure?"),
+      ],
+    );
+  }
+
+  test_methodInvocation_inDeprecatedConstructor() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  @deprecated
+  A() {
+    foo();
+  }
+
+  @deprecated
+  void foo() {}
+}
+''');
+  }
+
   test_methodInvocation_withMessage() async {
     newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
 class A {
@@ -275,24 +820,129 @@
     ]);
   }
 
-  test_methodInvocation_withMessage_dot() async {
-    newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
+  test_operator() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
 class A {
-  @Deprecated('0.9.')
-  void foo() {}
+  @deprecated
+  operator+(A a) {}
+}
+''',
+      code: r'''
+f(A a, A b) {
+  return a + b;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 52, 5),
+      ],
+    );
+  }
+
+  test_parameter_named() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+void f({@deprecated int x = 0}) {}
+''',
+      code: r'''
+void g() => f(x: 1);
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 43, 1),
+      ],
+    );
+  }
+
+  test_parameter_named_inDefiningConstructor_asFieldFormalParameter() async {
+    await assertNoErrorsInCode(r'''
+class C {
+  int x;
+  C({@deprecated this.x = 0});
 }
 ''');
+  }
 
-    await assertErrorsInCode(r'''
-import 'package:aaa/a.dart';
-
-void f(A a) {
-  a.foo();
+  test_parameter_named_inDefiningConstructor_assertInitializer() async {
+    await assertNoErrorsInCode(r'''
+class C {
+  C({@deprecated int y = 0}) : assert(y > 0);
 }
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_WITH_MESSAGE, 48, 3,
-          text: "'foo' is deprecated and shouldn't be used. 0.9."),
-    ]);
+''');
+  }
+
+  test_parameter_named_inDefiningConstructor_fieldInitializer() async {
+    await assertNoErrorsInCode(r'''
+class C {
+  int x;
+  C({@deprecated int y = 0}) : x = y;
+}
+''');
+  }
+
+  test_parameter_named_inDefiningConstructor_inFieldFormalParameter_notName() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+class A {}
+
+@deprecated
+class B extends A {
+  const B();
+}
+
+const B instance = const B();
+''',
+      code: r'''
+class C {
+  final A a;
+  C({B this.a = instance});
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 57, 1),
+      ],
+    );
+  }
+
+  test_parameter_named_inDefiningFunction() async {
+    await assertNoErrorsInCode(r'''
+f({@deprecated int x = 0}) => x;
+''');
+  }
+
+  test_parameter_named_inDefiningLocalFunction() async {
+    await assertNoErrorsInCode(r'''
+class C {
+  m() {
+    f({@deprecated int x = 0}) {
+      return x;
+    }
+    return f();
+  }
+}
+''');
+  }
+
+  test_parameter_named_inDefiningMethod() async {
+    await assertNoErrorsInCode(r'''
+class C {
+  m({@deprecated int x = 0}) {
+    return x;
+  }
+}
+''');
+  }
+
+  test_parameter_named_inNestedLocalFunction() async {
+    await assertNoErrorsInCode(r'''
+class C {
+  m({@deprecated int x = 0}) {
+    f() {
+      return x;
+    }
+    return f();
+  }
+}
+''');
   }
 
   test_parameter_named_ofFunction() async {
@@ -329,6 +979,230 @@
     ]);
   }
 
+  test_parameter_positionalOptional() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+class A {
+  void foo([@deprecated int x = 0]) {}
+}
+''',
+      code: '''
+void f(A a) {
+  a.foo(0);
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 51, 1),
+      ],
+    );
+  }
+
+  test_parameter_positionalOptional_inDeprecatedConstructor() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+void foo([@deprecated int x = 0]) {}
+''',
+      code: r'''
+class A {
+  @deprecated
+  A() {
+    foo(0);
+  }
+}
+''',
+    );
+  }
+
+  test_parameter_positionalOptional_inDeprecatedFunction() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+class A {
+  void foo([@deprecated int x = 0]) {}
+}
+''',
+      code: r'''
+@deprecated
+void f(A a) {
+  a.foo(0);
+}
+''',
+    );
+  }
+
+  test_parameter_positionalRequired() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+class A {
+  void foo(@deprecated int x) {}
+}
+''',
+      code: r'''
+void f(A a) {
+  a.foo(0);
+}
+''',
+    );
+  }
+
+  test_postfixExpression_deprecatedGetter() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int get x => 0;
+
+set x(int _) {}
+''',
+      code: r'''
+void f() {
+  x++;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 42, 1),
+      ],
+    );
+  }
+
+  test_postfixExpression_deprecatedNothing() async {
+    await assertNoErrorsInCode2(
+      externalCode: r'''
+int get x => 0;
+
+set x(int _) {}
+''',
+      code: r'''
+void f() {
+  x++;
+}
+''',
+    );
+  }
+
+  test_postfixExpression_deprecatedSetter() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+int get x => 0;
+
+@deprecated
+set x(int _) {}
+''',
+      code: r'''
+void f() {
+  x++;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 42, 1),
+      ],
+    );
+  }
+
+  test_prefixedIdentifier_identifier() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+class A {
+  @deprecated
+  static const foo = 0;
+}
+''',
+      code: r'''
+void f() {
+  A.foo;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 44, 3),
+      ],
+    );
+  }
+
+  test_prefixedIdentifier_prefix() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+class A {
+  static const foo = 0;
+}
+''',
+      code: r'''
+void f() {
+  A.foo;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 42, 1),
+      ],
+    );
+  }
+
+  test_prefixExpression_deprecatedGetter() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int get x => 0;
+
+set x(int _) {}
+''',
+      code: r'''
+void f() {
+  ++x;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 44, 1),
+      ],
+    );
+  }
+
+  test_prefixExpression_deprecatedSetter() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+int get x => 0;
+
+@deprecated
+set x(int _) {}
+''',
+      code: r'''
+void f() {
+  ++x;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 44, 1),
+      ],
+    );
+  }
+
+  test_propertyAccess_super() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+class A {
+  @deprecated
+  int get foo => 0;
+}
+''',
+      code: r'''
+class B extends A {
+  void bar() {
+    super.foo;
+  }
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 74, 3),
+      ],
+    );
+  }
+
+  test_redirectingConstructorInvocation_namedParameter() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  A({@deprecated int a = 0}) {}
+  A.named() : this(a: 0);
+}
+''');
+  }
+
   test_setterInvocation() async {
     newFile('$workspaceRootPath/aaa/lib/a.dart', r'''
 class A {
@@ -348,6 +1222,456 @@
     ]);
   }
 
+  test_showCombinator() async {
+    newFile(externalLibPath, r'''
+@deprecated
+class A {}
+''');
+    await assertErrorsInCode('''
+// ignore: unused_import
+import '$externalLibUri' show A;
+''', [
+      error(HintCode.DEPRECATED_MEMBER_USE, 58, 1),
+    ]);
+  }
+
+  test_superConstructor_namedConstructor() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+class A {
+  @deprecated
+  A.named() {}
+}
+''',
+      code: r'''
+class B extends A {
+  B() : super.named() {}
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 57, 13),
+      ],
+    );
+  }
+
+  test_superConstructor_unnamedConstructor() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+class A {
+  @deprecated
+  A() {}
+}
+''',
+      code: r'''
+class B extends A {
+  B() : super() {}
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 57, 7,
+            // TODO(srawlins): Correct this message!
+            text: "'A.A' is deprecated and shouldn't be used."),
+      ],
+    );
+  }
+
+  test_topLevelVariable_argument() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+void f() {
+  print(x);
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 48, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_assignment_right() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+void f(int a) {
+  a = x;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 51, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_binaryExpression() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+void f() {
+  x + 1;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 42, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_constructorFieldInitializer() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+const int x = 1;
+''',
+      code: r'''
+class A {
+  final int f;
+  A() : f = x;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 66, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_expressionFunctionBody() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+int f() => x;
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 40, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_expressionStatement() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+void f() {
+  x;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 42, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_forElement_condition() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+var x = true;
+''',
+      code: r'''
+void f() {
+  [for (;x;) 0];
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 49, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_forStatement_condition() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+var x = true;
+''',
+      code: r'''
+void f() {
+  for (;x;) {}
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 48, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_ifElement_condition() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+var x = true;
+''',
+      code: r'''
+void f() {
+  [if (x) 0];
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 47, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_ifStatement_condition() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+var x = true;
+''',
+      code: r'''
+void f() {
+  if (x) {}
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 46, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_listLiteral() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+void f() {
+  [x];
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 43, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_mapLiteralEntry() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+void f() {
+  ({0: x, x: 0});
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 47, 1),
+        error(HintCode.DEPRECATED_MEMBER_USE, 50, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_namedExpression() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+void g({int a = 0}) {}
+void f() {
+  g(a: x);
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 70, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_returnStatement() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+int f() {
+  return x;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 48, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_setLiteral() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+void f() {
+  ({x});
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 44, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_spreadElement() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+var x = [0];
+''',
+      code: r'''
+void f() {
+  [...x];
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 46, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_switchCase() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+const int x = 1;
+''',
+      code: r'''
+void f(int a) {
+  switch (a) {
+    case x:
+      break;
+  }
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 69, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_switchCase_language218() async {
+    newFile(externalLibPath, r'''
+@deprecated
+const int x = 1;
+''');
+    await assertErrorsInCode('''
+// @dart = 2.18
+import '$externalLibUri';
+void f(int a) {
+  switch (a) {
+    case x:
+      break;
+  }
+}
+''', [
+      error(HintCode.DEPRECATED_MEMBER_USE, 85, 1),
+    ]);
+  }
+
+  test_topLevelVariable_switchStatement() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+void f() {
+  switch (x) {}
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 50, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_switchStatement_language218() async {
+    newFile(externalLibPath, r'''
+@deprecated
+int x = 1;
+''');
+    await assertErrorsInCode('''
+// @dart = 2.18
+import '$externalLibUri';
+void f() {
+  switch (x) {}
+}
+''', [
+      error(HintCode.DEPRECATED_MEMBER_USE, 66, 1),
+    ]);
+  }
+
+  test_topLevelVariable_unaryExpression() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+int x = 1;
+''',
+      code: r'''
+void f() {
+  -x;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 43, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_variableDeclaration_initializer() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+var x = 1;
+''',
+      code: r'''
+void f() {
+  // ignore: unused_local_variable
+  var v = x;
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 85, 1),
+      ],
+    );
+  }
+
+  test_topLevelVariable_whileStatement_condition() async {
+    await assertErrorsInCode2(
+      externalCode: r'''
+@deprecated
+var x = true;
+''',
+      code: r'''
+void f() {
+  while (x) {}
+}
+''',
+      [
+        error(HintCode.DEPRECATED_MEMBER_USE, 49, 1),
+      ],
+    );
+  }
+
   @override
   void verifyCreatedCollection() {
     super.verifyCreatedCollection();
@@ -446,26 +1770,6 @@
     ]);
   }
 
-  test_samePackage() async {
-    var myPackageConfig = getFile('$genPath/my/my_package_config.json');
-    _writeWorkspacePackagesFile(myPackageConfig, {
-      'my': myPackageLibPath,
-    });
-
-    newFile('$myPackageLibPath/a.dart', r'''
-@deprecated
-class A {}
-''');
-
-    await assertErrorsInCode(r'''
-import 'package:my/a.dart';
-
-void f(A a) {}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 36, 1),
-    ]);
-  }
-
   @override
   void verifyCreatedCollection() {
     super.verifyCreatedCollection();
@@ -540,1264 +1844,6 @@
   }
 }
 
-@reflectiveTest
-class DeprecatedMemberUseFromSamePackage_BasicWorkspaceTest
-    extends PubPackageResolutionTest {
-  test_assignmentExpression_compound_deprecatedGetter() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int get x => 0;
-
-set x(int _) {}
-
-void f() {
-  x += 2;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 59, 1),
-    ]);
-  }
-
-  test_assignmentExpression_compound_deprecatedSetter() async {
-    await assertErrorsInCode(r'''
-int get x => 0;
-
-@deprecated
-set x(int _) {}
-
-void f() {
-  x += 2;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 59, 1),
-    ]);
-  }
-
-  test_assignmentExpression_simple_deprecatedGetter() async {
-    await assertNoErrorsInCode(r'''
-@deprecated
-int get x => 0;
-
-set x(int _) {}
-
-void f() {
-  x = 0;
-}
-''');
-  }
-
-  test_assignmentExpression_simple_deprecatedGetterSetter() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-void f() {
-  x = 0;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 37, 1),
-    ]);
-  }
-
-  test_assignmentExpression_simple_deprecatedSetter() async {
-    await assertErrorsInCode(r'''
-int get x => 0;
-
-@deprecated
-set x(int _) {}
-
-void f() {
-  x = 0;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 59, 1),
-    ]);
-  }
-
-  test_call() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  call() {}
-  m() {
-    A a = new A();
-    a();
-  }
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 67, 3),
-    ]);
-  }
-
-  test_class() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-@deprecated
-class A {}
-''');
-
-    await assertErrorsInCode(r'''
-import 'a.dart';
-
-void f(A a) {}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 25, 1),
-    ]);
-  }
-
-  test_compoundAssignment() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  A operator+(A a) { return a; }
-}
-f(A a, A b) {
-  a += b;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 75, 6),
-    ]);
-  }
-
-  test_export() async {
-    newFile('$testPackageLibPath/deprecated_library.dart', r'''
-@deprecated
-library deprecated_library;
-class A {}
-''');
-    await assertErrorsInCode('''
-export 'deprecated_library.dart';
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 0, 33),
-    ]);
-  }
-
-  test_extensionOverride() async {
-    await assertErrorsInCode(r'''
-@deprecated
-extension E on int {
-  int get foo => 0;
-}
-
-void f() {
-  E(0).foo;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 69, 1),
-    ]);
-  }
-
-  test_field() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  int x = 1;
-}
-f(A a) {
-  return a.x;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 59, 1),
-    ]);
-  }
-
-  test_field_inDeprecatedConstructor() async {
-    await assertNoErrorsInCode(r'''
-class A {
-  @deprecated
-  int x = 1;
-
-  @deprecated
-  A() {
-    x;
-    x = 2;
-  }
-}
-''');
-  }
-
-  test_field_inDeprecatedFunction() async {
-    await assertNoErrorsInCode(r'''
-class A {
-  @deprecated
-  int x = 1;
-}
-
-@deprecated
-void f(A a) {
-  a.x;
-  a.x = 2;
-}
-''');
-  }
-
-  test_getter() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  get m => 1;
-}
-f(A a) {
-  return a.m;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 60, 1),
-    ]);
-  }
-
-  test_hideCombinator() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-@deprecated
-class A {}
-''');
-    await assertErrorsInCode('''
-import 'a.dart' hide A;
-''', [
-      error(HintCode.UNUSED_IMPORT, 7, 8),
-    ]);
-  }
-
-  test_import() async {
-    newFile('$testPackageLibPath/deprecated_library.dart', r'''
-@deprecated
-library deprecated_library;
-class A {}
-''');
-
-    await assertErrorsInCode(r'''
-import 'deprecated_library.dart';
-f(A a) {}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 0, 33),
-    ]);
-  }
-
-  test_inDeprecatedClass() async {
-    await assertNoErrorsInCode(r'''
-@deprecated
-f() {}
-
-@deprecated
-class C {
-  m() {
-    f();
-  }
-}
-''');
-  }
-
-  test_inDeprecatedEnum() async {
-    await assertNoErrorsInCode(r'''
-@deprecated
-void f() {}
-
-@deprecated
-enum E {
-  one, two;
-
-  void m() {
-    f();
-  }
-}
-''');
-  }
-
-  test_inDeprecatedExtension() async {
-    await assertNoErrorsInCode(r'''
-@deprecated
-void f() {}
-
-@deprecated
-extension E on int {
-  void m() {
-    f();
-  }
-}
-''');
-  }
-
-  test_inDeprecatedField() async {
-    await assertNoErrorsInCode(r'''
-@deprecated
-class C {}
-
-class X {
-  @deprecated
-  late C f;
-}
-''');
-  }
-
-  test_inDeprecatedFunction() async {
-    await assertNoErrorsInCode(r'''
-@deprecated
-f() {}
-
-@deprecated
-g() {
-  f();
-}
-''');
-  }
-
-  test_inDeprecatedLibrary() async {
-    await assertNoErrorsInCode(r'''
-@deprecated
-library lib;
-
-@deprecated
-f() {}
-
-class C {
-  m() {
-    f();
-  }
-}
-''');
-  }
-
-  test_inDeprecatedMethod() async {
-    await assertNoErrorsInCode(r'''
-@deprecated
-f() {}
-
-class C {
-  @deprecated
-  m() {
-    f();
-  }
-}
-''');
-  }
-
-  test_inDeprecatedMethod_inDeprecatedClass() async {
-    await assertNoErrorsInCode(r'''
-@deprecated
-f() {}
-
-@deprecated
-class C {
-  @deprecated
-  m() {
-    f();
-  }
-}
-''');
-  }
-
-  test_inDeprecatedMixin() async {
-    await assertNoErrorsInCode(r'''
-@deprecated
-f() {}
-
-@deprecated
-mixin M {
-  m() {
-    f();
-  }
-}
-''');
-  }
-
-  test_inDeprecatedTopLevelVariable() async {
-    await assertNoErrorsInCode(r'''
-@deprecated
-class C {}
-
-@deprecated
-late C v;
-''');
-  }
-
-  test_indexExpression() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  operator[](int i) {}
-}
-f(A a) {
-  return a[1];
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 67, 4),
-    ]);
-  }
-
-  test_inEnum() async {
-    await assertErrorsInCode(r'''
-@deprecated
-void f() {}
-
-enum E {
-  one, two;
-
-  void m() {
-    f();
-  }
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 64, 1),
-    ]);
-  }
-
-  test_inExtension() async {
-    await assertErrorsInCode(r'''
-@deprecated
-void f() {}
-
-extension E on int {
-  void m() {
-    f();
-  }
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 63, 1),
-    ]);
-  }
-
-  test_instanceCreation_namedConstructor() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  A.named(int i) {}
-}
-f() {
-  return new A.named(1);
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 65, 7),
-    ]);
-  }
-
-  test_instanceCreation_unnamedConstructor() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  A(int i) {}
-}
-f() {
-  return new A(1);
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 59, 1),
-    ]);
-  }
-
-  test_method_inDeprecatedConstructor() async {
-    await assertNoErrorsInCode(r'''
-class A {
-  @deprecated
-  A() {
-    foo();
-  }
-
-  @deprecated
-  void foo() {}
-}
-''');
-  }
-
-  test_methodInvocation_constant() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  m() {}
-  n() {
-    m();
-  }
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 45, 1),
-    ]);
-  }
-
-  test_methodInvocation_constructor() async {
-    await assertErrorsInCode(r'''
-class A {
-  @Deprecated('0.9')
-  m() {}
-  n() {m();}
-}
-''', [
-      error(
-          HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE, 47, 1,
-          text: "'m' is deprecated and shouldn't be used. 0.9."),
-    ]);
-  }
-
-  test_methodInvocation_constructor_dot() async {
-    await assertErrorsInCode(r'''
-class A {
-  @Deprecated('0.9.')
-  m() {}
-  n() {m();}
-}
-''', [
-      error(
-          HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE, 48, 1,
-          text: "'m' is deprecated and shouldn't be used. 0.9."),
-    ]);
-  }
-
-  test_methodInvocation_constructor_exclamationMark() async {
-    await assertErrorsInCode(r'''
-class A {
-  @Deprecated(' Really! ')
-  m() {}
-  n() {m();}
-}
-''', [
-      error(
-          HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE, 53, 1,
-          text: "'m' is deprecated and shouldn't be used. Really!"),
-    ]);
-  }
-
-  test_methodInvocation_constructor_onlyDot() async {
-    await assertErrorsInCode(r'''
-class A {
-  @Deprecated('.')
-  m() {}
-  n() {m();}
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 45, 1,
-          text: "'m' is deprecated and shouldn't be used."),
-    ]);
-  }
-
-  test_methodInvocation_constructor_questionMark() async {
-    await assertErrorsInCode(r'''
-class A {
-  @Deprecated('Are you sure?')
-  m() {}
-  n() {m();}
-}
-''', [
-      error(
-          HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE, 57, 1,
-          text: "'m' is deprecated and shouldn't be used. Are you sure?"),
-    ]);
-  }
-
-  test_operator() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  operator+(A a) {}
-}
-f(A a, A b) {
-  return a + b;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 69, 5),
-    ]);
-  }
-
-  test_parameter_named() async {
-    await assertErrorsInCode(r'''
-class A {
-  m({@deprecated int x = 0}) {}
-  n() {m(x: 1);}
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 51, 1),
-    ]);
-  }
-
-  test_parameter_named_inDefiningConstructor_asFieldFormalParameter() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int x;
-  C({@deprecated this.x = 0});
-}
-''');
-  }
-
-  test_parameter_named_inDefiningConstructor_assertInitializer() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  C({@deprecated int y = 0}) : assert(y > 0);
-}
-''');
-  }
-
-  test_parameter_named_inDefiningConstructor_fieldInitializer() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  int x;
-  C({@deprecated int y = 0}) : x = y;
-}
-''');
-  }
-
-  test_parameter_named_inDefiningConstructor_inFieldFormalParameter_notName() async {
-    await assertErrorsInCode(r'''
-class A {}
-
-@deprecated
-class B extends A {}
-
-class C {
-  final A a;
-  C({required B this.a});
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 83, 1),
-    ]);
-  }
-
-  test_parameter_named_inDefiningFunction() async {
-    await assertNoErrorsInCode(r'''
-f({@deprecated int x = 0}) => x;
-''');
-  }
-
-  test_parameter_named_inDefiningLocalFunction() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  m() {
-    f({@deprecated int x = 0}) {
-      return x;
-    }
-    return f();
-  }
-}
-''');
-  }
-
-  test_parameter_named_inDefiningMethod() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  m({@deprecated int x = 0}) {
-    return x;
-  }
-}
-''');
-  }
-
-  test_parameter_named_inNestedLocalFunction() async {
-    await assertNoErrorsInCode(r'''
-class C {
-  m({@deprecated int x = 0}) {
-    f() {
-      return x;
-    }
-    return f();
-  }
-}
-''');
-  }
-
-  test_parameter_positionalOptional() async {
-    await assertErrorsInCode(r'''
-class A {
-  void foo([@deprecated int x = 0]) {}
-}
-
-void f(A a) {
-  a.foo(0);
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 74, 1),
-    ]);
-  }
-
-  test_parameter_positionalOptional_inDeprecatedConstructor() async {
-    await assertNoErrorsInCode(r'''
-class A {
-  @deprecated
-  A() {
-    foo(0);
-  }
-
-  void foo([@deprecated int x = 0]) {}
-}
-''');
-  }
-
-  test_parameter_positionalOptional_inDeprecatedFunction() async {
-    await assertNoErrorsInCode(r'''
-class A {
-  void foo([@deprecated int x = 0]) {}
-}
-
-@deprecated
-void f(A a) {
-  a.foo(0);
-}
-''');
-  }
-
-  test_parameter_positionalRequired() async {
-    await assertNoErrorsInCode(r'''
-class A {
-  void foo(@deprecated int x) {}
-}
-
-void f(A a) {
-  a.foo(0);
-}
-''');
-  }
-
-  test_postfixExpression_deprecatedGetter() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int get x => 0;
-
-set x(int _) {}
-
-void f() {
-  x++;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 59, 1),
-    ]);
-  }
-
-  test_postfixExpression_deprecatedNothing() async {
-    await assertNoErrorsInCode(r'''
-int get x => 0;
-
-set x(int _) {}
-
-void f() {
-  x++;
-}
-''');
-  }
-
-  test_postfixExpression_deprecatedSetter() async {
-    await assertErrorsInCode(r'''
-int get x => 0;
-
-@deprecated
-set x(int _) {}
-
-void f() {
-  x++;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 59, 1),
-    ]);
-  }
-
-  test_prefixedIdentifier_identifier() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  static const foo = 0;
-}
-
-void f() {
-  A.foo;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 66, 3),
-    ]);
-  }
-
-  test_prefixedIdentifier_prefix() async {
-    await assertErrorsInCode(r'''
-@deprecated
-class A {
-  static const foo = 0;
-}
-
-void f() {
-  A.foo;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 62, 1),
-    ]);
-  }
-
-  test_prefixExpression_deprecatedGetter() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int get x => 0;
-
-set x(int _) {}
-
-void f() {
-  ++x;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 61, 1),
-    ]);
-  }
-
-  test_prefixExpression_deprecatedSetter() async {
-    await assertErrorsInCode(r'''
-int get x => 0;
-
-@deprecated
-set x(int _) {}
-
-void f() {
-  ++x;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 61, 1),
-    ]);
-  }
-
-  test_propertyAccess_super() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  int get foo => 0;
-}
-
-class B extends A {
-  void bar() {
-    super.foo;
-  }
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 92, 3),
-    ]);
-  }
-
-  test_redirectingConstructorInvocation_namedParameter() async {
-    await assertErrorsInCode(r'''
-class A {
-  A({@deprecated int a = 0}) {}
-  A.named() : this(a: 0);
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 61, 1),
-    ]);
-  }
-
-  test_setter() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  set s(v) {}
-}
-f(A a) {
-  return a.s = 1;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 60, 1),
-    ]);
-  }
-
-  test_showCombinator() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-@deprecated
-class A {}
-''');
-    await assertErrorsInCode('''
-import 'a.dart' show A;
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 21, 1),
-      error(HintCode.UNUSED_IMPORT, 7, 8),
-    ]);
-  }
-
-  test_superConstructor_namedConstructor() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  A.named() {}
-}
-class B extends A {
-  B() : super.named() {}
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 69, 13),
-    ]);
-  }
-
-  test_superConstructor_unnamedConstructor() async {
-    await assertErrorsInCode(r'''
-class A {
-  @deprecated
-  A() {}
-}
-class B extends A {
-  B() : super() {}
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 63, 7),
-    ]);
-  }
-
-  test_topLevelVariable_argument() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-void f() {
-  print(x);
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 43, 1),
-    ]);
-  }
-
-  test_topLevelVariable_assignment_right() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-void f(int a) {
-  a = x;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 46, 1),
-    ]);
-  }
-
-  test_topLevelVariable_binaryExpression() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-void f() {
-  x + 1;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 37, 1),
-    ]);
-  }
-
-  test_topLevelVariable_constructorFieldInitializer() async {
-    await assertErrorsInCode(r'''
-@deprecated
-const int x = 1;
-
-class A {
-  final int f;
-  A() : f = x;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 67, 1),
-    ]);
-  }
-
-  test_topLevelVariable_expressionFunctionBody() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-int f() => x;
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 35, 1),
-    ]);
-  }
-
-  test_topLevelVariable_expressionStatement() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-void f() {
-  x;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 37, 1),
-    ]);
-  }
-
-  test_topLevelVariable_forElement_condition() async {
-    await assertErrorsInCode(r'''
-@deprecated
-var x = true;
-
-void f() {
-  [for (;x;) 0];
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 47, 1),
-    ]);
-  }
-
-  test_topLevelVariable_forStatement_condition() async {
-    await assertErrorsInCode(r'''
-@deprecated
-var x = true;
-
-void f() {
-  for (;x;) {}
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 46, 1),
-    ]);
-  }
-
-  test_topLevelVariable_ifElement_condition() async {
-    await assertErrorsInCode(r'''
-@deprecated
-var x = true;
-
-void f() {
-  [if (x) 0];
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 45, 1),
-    ]);
-  }
-
-  test_topLevelVariable_ifStatement_condition() async {
-    await assertErrorsInCode(r'''
-@deprecated
-var x = true;
-
-void f() {
-  if (x) {}
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 44, 1),
-    ]);
-  }
-
-  test_topLevelVariable_listLiteral() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-void f() {
-  [x];
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 38, 1),
-    ]);
-  }
-
-  test_topLevelVariable_mapLiteralEntry() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-void f() {
-  ({0: x, x: 0});
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 42, 1),
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 45, 1),
-    ]);
-  }
-
-  test_topLevelVariable_namedExpression() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-void g({int a = 0}) {}
-
-void f() {
-  g(a: x);
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 66, 1),
-    ]);
-  }
-
-  test_topLevelVariable_returnStatement() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-int f() {
-  return x;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 43, 1),
-    ]);
-  }
-
-  test_topLevelVariable_setLiteral() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-void f() {
-  ({x});
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 39, 1),
-    ]);
-  }
-
-  test_topLevelVariable_spreadElement() async {
-    await assertErrorsInCode(r'''
-@deprecated
-var x = [0];
-
-void f() {
-  [...x];
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 43, 1),
-    ]);
-  }
-
-  test_topLevelVariable_switchCase() async {
-    await assertErrorsInCode(r'''
-@deprecated
-const int x = 1;
-
-void f(int a) {
-  switch (a) {
-    case x:
-      break;
-  }
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 70, 1),
-    ]);
-  }
-
-  test_topLevelVariable_switchCase_language218() async {
-    await assertErrorsInCode(r'''
-// @dart = 2.18
-@deprecated
-const int x = 1;
-
-void f(int a) {
-  switch (a) {
-    case x:
-      break;
-  }
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 86, 1),
-    ]);
-  }
-
-  test_topLevelVariable_switchStatement() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-void f() {
-  switch (x) {}
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 45, 1),
-    ]);
-  }
-
-  test_topLevelVariable_switchStatement_language218() async {
-    await assertErrorsInCode(r'''
-// @dart = 2.18
-@deprecated
-int x = 1;
-
-void f() {
-  switch (x) {}
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 61, 1),
-    ]);
-  }
-
-  test_topLevelVariable_unaryExpression() async {
-    await assertErrorsInCode(r'''
-@deprecated
-int x = 1;
-
-void f() {
-  -x;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 38, 1),
-    ]);
-  }
-
-  test_topLevelVariable_variableDeclaration_initializer() async {
-    await assertErrorsInCode(r'''
-@deprecated
-var x = 1;
-
-void f() {
-  // ignore:unused_local_variable
-  var v = x;
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 79, 1),
-    ]);
-  }
-
-  test_topLevelVariable_whileStatement_condition() async {
-    await assertErrorsInCode(r'''
-@deprecated
-var x = true;
-
-void f() {
-  while (x) {}
-}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 47, 1),
-    ]);
-  }
-}
-
-@reflectiveTest
-class DeprecatedMemberUseFromSamePackage_BlazeWorkspaceTest
-    extends BlazeWorkspaceResolutionTest {
-  test_it() async {
-    newFile('$myPackageLibPath/a.dart', r'''
-@deprecated
-class A {}
-''');
-
-    await assertErrorsInCode(r'''
-import 'a.dart';
-
-void f(A a) {}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 25, 1),
-    ]);
-  }
-}
-
-@reflectiveTest
-class DeprecatedMemberUseFromSamePackage_PackageBuildWorkspaceTest
-    extends _PackageBuildWorkspaceBase {
-  test_generated() async {
-    newPubspecYamlFile(testPackageRootPath, 'name: test');
-
-    _newTestPackageGeneratedFile(
-      packageName: 'test',
-      pathInLib: 'a.dart',
-      content: r'''
-@deprecated
-class A {}
-''',
-    );
-
-    await assertErrorsInCode(r'''
-import 'a.dart';
-
-void f(A a) {}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 25, 1),
-    ]);
-  }
-
-  test_lib() async {
-    newPubspecYamlFile(testPackageRootPath, 'name: test');
-    _createTestPackageBuildMarker();
-
-    newFile('$testPackageLibPath/a.dart', r'''
-@deprecated
-class A {}
-''');
-
-    await assertErrorsInCode(r'''
-import 'a.dart';
-
-void f(A a) {}
-''', [
-      error(HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE, 25, 1),
-    ]);
-  }
-}
-
 class _PackageBuildWorkspaceBase extends PubPackageResolutionTest {
   String get testPackageGeneratedPath {
     return '$testPackageRootPath/.dart_tool/build/generated';
diff --git a/pkg/analyzer/test/verify_diagnostics_test.dart b/pkg/analyzer/test/verify_diagnostics_test.dart
index 3be5507..bb710e6 100644
--- a/pkg/analyzer/test/verify_diagnostics_test.dart
+++ b/pkg/analyzer/test/verify_diagnostics_test.dart
@@ -99,6 +99,8 @@
     'HintCode.DEPRECATED_COLON_FOR_DEFAULT_VALUE',
     // The code has been replaced but is not yet removed.
     'HintCode.DEPRECATED_MEMBER_USE',
+    // This is deprecated.
+    'HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE',
     // Produces two diagnostics when it should only produce one (see
     // https://github.com/dart-lang/sdk/issues/43051)
     'HintCode.UNNECESSARY_NULL_COMPARISON_FALSE',
diff --git a/pkg/dartdev/test/commands/analyze_test.dart b/pkg/dartdev/test/commands/analyze_test.dart
index afa9519..796afd8 100644
--- a/pkg/dartdev/test/commands/analyze_test.dart
+++ b/pkg/dartdev/test/commands/analyze_test.dart
@@ -360,7 +360,13 @@
 
   test('info implicit no --fatal-infos', () async {
     p = project(
-        mainSrc: '$dartVersionFilePrefix2_9@deprecated var x = 1; var y = x;');
+      mainSrc: 'var x = 1; var y = x?.isEven;',
+      analysisOptions: r'''
+analyzer:
+  errors:
+    INVALID_NULL_AWARE_OPERATOR: info
+''',
+    );
     var result = await p.runAnalyze([p.dirPath]);
 
     expect(result.exitCode, 0);
@@ -370,7 +376,13 @@
 
   test('info --fatal-infos', () async {
     p = project(
-        mainSrc: '$dartVersionFilePrefix2_9@deprecated var x = 1; var y = x;');
+      mainSrc: 'var x = 1; var y = x?.isEven;',
+      analysisOptions: r'''
+analyzer:
+  errors:
+    INVALID_NULL_AWARE_OPERATOR: info
+''',
+    );
     var result = await p.runAnalyze(['--fatal-infos', p.dirPath]);
 
     expect(result.exitCode, 1);
diff --git a/tools/verify_docs/bin/verify_docs.dart b/tools/verify_docs/bin/verify_docs.dart
index 73e6d9e..f587131 100755
--- a/tools/verify_docs/bin/verify_docs.dart
+++ b/tools/verify_docs/bin/verify_docs.dart
@@ -348,14 +348,6 @@
             e.errorCode == HintCode.UNUSED_ELEMENT,
       );
 
-      // Remove warnings about deprecated member use from the same library.
-      errors.removeWhere(
-        (e) =>
-            e.errorCode == HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE ||
-            e.errorCode ==
-                HintCode.DEPRECATED_MEMBER_USE_FROM_SAME_PACKAGE_WITH_MESSAGE,
-      );
-
       // Handle edge case around dart:_http
       errors.removeWhere((e) {
         if (e.message.contains("'dart:_http'")) {