Convert more diagnostic tests to DriverResolutionTest

Change-Id: Ia3aaf54d2142300180b66c7fd18245fb492f8176
Reviewed-on: https://dart-review.googlesource.com/c/93480
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/lib/src/test_utilities/package_mixin.dart b/pkg/analyzer/lib/src/test_utilities/package_mixin.dart
new file mode 100644
index 0000000..9ad69d8
--- /dev/null
+++ b/pkg/analyzer/lib/src/test_utilities/package_mixin.dart
@@ -0,0 +1,74 @@
+// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
+
+/// A mixin for test classes that provides support for creating packages.
+mixin PackageMixin implements ResourceProviderMixin {
+  /// Return the map from package names to lists of folders that is used to
+  /// resolve 'package:' URIs.
+  Map<String, List<Folder>> get packageMap;
+
+  /// Create a fake 'meta' package that can be used by tests.
+  void addMetaPackage() {
+    Folder lib = addPubPackage('meta');
+    newFile(join(lib.path, 'meta.dart'), content: r'''
+library meta;
+
+const _AlwaysThrows alwaysThrows = const _AlwaysThrows();
+const _Factory factory = const _Factory();
+const Immutable immutable = const Immutable();
+const _Literal literal = const _Literal();
+const _MustCallSuper mustCallSuper = const _MustCallSuper();
+const _Protected protected = const _Protected();
+const Required required = const Required();
+const _Sealed sealed = const _Sealed();
+const _VisibleForTesting visibleForTesting = const _VisibleForTesting();
+
+class Immutable {
+  final String reason;
+  const Immutable([this.reason]);
+}
+class _AlwaysThrows {
+  const _AlwaysThrows();
+}
+class _Factory {
+  const _Factory();
+}
+class _Literal {
+  const _Literal();
+}
+class _MustCallSuper {
+  const _MustCallSuper();
+}
+class _Protected {
+  const _Protected();
+}
+class Required {
+  final String reason;
+  const Required([this.reason]);
+}
+class _Sealed {
+  const _Sealed();
+}
+class _VisibleForTesting {
+  const _VisibleForTesting();
+}
+''');
+  }
+
+  /// Return a newly created directory in which the contents of a pub package
+  /// with the given [packageName] can be written. The package will be added to
+  /// the package map so that the package can be referenced from the code being
+  /// analyzed.
+  Folder addPubPackage(String packageName) {
+    // TODO(brianwilkerson) Consider renaming this to `addPackage` and passing
+    //  in a `PackageStyle` (pub, bazel, gn, build, plain) in order to support
+    //  creating other styles of packages.
+    Folder lib = getFolder('/.pub-cache/$packageName/lib');
+    packageMap[packageName] = [lib];
+    return lib;
+  }
+}
diff --git a/pkg/analyzer/test/generated/hint_code_test.dart b/pkg/analyzer/test/generated/hint_code_test.dart
index 6695ba9..aee1577 100644
--- a/pkg/analyzer/test/generated/hint_code_test.dart
+++ b/pkg/analyzer/test/generated/hint_code_test.dart
@@ -19,7 +19,9 @@
   });
 }
 
-final metaLibraryStub = r'''
+/// The contents of the 'meta' package. Code that uses this variable should be
+/// converted to use PackageMixin.addMetaPackage.
+final _metaLibraryStub = r'''
 library meta;
 
 const _AlwaysThrows alwaysThrows = const _AlwaysThrows();
@@ -70,7 +72,7 @@
 
   test_subtypeOfSealedClass_extending() async {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
       [
         'foo',
         r'''
@@ -92,7 +94,7 @@
 
   test_subtypeOfSealedClass_implementing() async {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
       [
         'foo',
         r'''
@@ -114,7 +116,7 @@
 
   test_subtypeOfSealedClass_mixinApplication() async {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
       [
         'foo',
         r'''
@@ -137,7 +139,7 @@
 
   test_subtypeOfSealedClass_mixinImplements() async {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
       [
         'foo',
         r'''
@@ -159,7 +161,7 @@
 
   test_subtypeOfSealedClass_mixinOn() async {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
       [
         'foo',
         r'''
@@ -181,7 +183,7 @@
 
   test_subtypeOfSealedClass_with() async {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
       [
         'foo',
         r'''
@@ -203,7 +205,7 @@
 
   test_subtypeOfSealedClass_withinLibrary_OK() async {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
     ]);
 
     _newPubPackageRoot('/pkg1');
@@ -224,7 +226,7 @@
 
   test_subtypeOfSealedClass_withinPackageLibDirectory_OK() async {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
     ]);
 
     _newPubPackageRoot('/pkg1');
@@ -249,7 +251,7 @@
 
   test_subtypeOfSealedClass_withinPackageTestDirectory_OK() async {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
     ]);
 
     newFolder('/pkg1');
@@ -276,7 +278,7 @@
 
   test_subtypeOfSealedClass_withinPart_OK() async {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
     ]);
 
     _newPubPackageRoot('/pkg1');
@@ -300,7 +302,7 @@
 
   test_subtypeOfSealedMixin_mixinApplication() async {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
       [
         'foo',
         r'''
@@ -323,7 +325,7 @@
 
   test_subtypeOfSealedMixin_with() async {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
       [
         'foo',
         r'''
@@ -355,7 +357,7 @@
   @override
   void reset() {
     super.resetWith(packages: [
-      ['meta', metaLibraryStub],
+      ['meta', _metaLibraryStub],
       [
         'js',
         r'''
diff --git a/pkg/analyzer/test/src/dart/resolution/definite_assignment_test.dart b/pkg/analyzer/test/src/dart/resolution/definite_assignment_test.dart
index 48a15c7..ae67d5d 100644
--- a/pkg/analyzer/test/src/dart/resolution/definite_assignment_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/definite_assignment_test.dart
@@ -7,6 +7,7 @@
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/src/dart/resolver/definite_assignment.dart';
+import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -19,7 +20,8 @@
 }
 
 @reflectiveTest
-class DefiniteAssignmentTrackerTest extends DriverResolutionTest {
+class DefiniteAssignmentTrackerTest extends DriverResolutionTest
+    with PackageMixin {
   DefiniteAssignmentTracker tracker;
 
   /// Assert that only local variables with the given names are marked as read
diff --git a/pkg/analyzer/test/src/dart/resolution/driver_resolution.dart b/pkg/analyzer/test/src/dart/resolution/driver_resolution.dart
index 50902ca..39405f2 100644
--- a/pkg/analyzer/test/src/dart/resolution/driver_resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/driver_resolution.dart
@@ -27,20 +27,13 @@
   PerformanceLog logger;
 
   DartSdk sdk;
+  Map<String, List<Folder>> packageMap;
   AnalysisDriverScheduler scheduler;
   AnalysisDriver driver;
 
   /// Override this to change the analysis options for a given set of tests.
   AnalysisOptionsImpl get analysisOptions => AnalysisOptionsImpl();
 
-  void addMetaPackage() {
-    newFile('/.pub-cache/meta/lib/meta.dart', content: r'''
-library meta;
-
-const alwaysThrows = const Object();
-''');
-  }
-
   @override
   Future<ResolvedUnitResult> resolveFile(String path) async {
     return await driver.getResult(path);
@@ -51,7 +44,9 @@
     logger = new PerformanceLog(logBuffer);
     scheduler = new AnalysisDriverScheduler(logger);
 
-    Map<String, List<Folder>> packageMap = <String, List<Folder>>{
+    // TODO(brianwilkerson) Create an empty package map by default and only add
+    //  packages in the tests that need them.
+    packageMap = <String, List<Folder>>{
       'test': [getFolder('/test/lib')],
       'aaa': [getFolder('/aaa/lib')],
       'bbb': [getFolder('/bbb/lib')],
diff --git a/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart
index 5915938..b40bc8e 100644
--- a/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/argument_type_not_assignable_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,10 +14,7 @@
 }
 
 @reflectiveTest
-class ArgumentTypeNotAssignableTest extends ResolverTestCase {
-  @override
-  bool get enableNewAnalysisDriver => true;
-
+class ArgumentTypeNotAssignableTest extends DriverResolutionTest {
   test_functionType() async {
     await assertErrorsInCode(r'''
 m() {
diff --git a/pkg/analyzer/test/src/diagnostics/can_be_null_after_null_aware_test.dart b/pkg/analyzer/test/src/diagnostics/can_be_null_after_null_aware_test.dart
index 534c440..3e9bddb 100644
--- a/pkg/analyzer/test/src/diagnostics/can_be_null_after_null_aware_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/can_be_null_after_null_aware_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,10 +14,7 @@
 }
 
 @reflectiveTest
-class CanBeNullAfterNullAwareTest extends ResolverTestCase {
-  @override
-  bool get enableNewAnalysisDriver => true;
-
+class CanBeNullAfterNullAwareTest extends DriverResolutionTest {
   test_afterCascade() async {
     await assertErrorsInCode(r'''
 m(x) {
diff --git a/pkg/analyzer/test/src/diagnostics/division_optimization_test.dart b/pkg/analyzer/test/src/diagnostics/division_optimization_test.dart
index 7fb98b8..eaadc2d 100644
--- a/pkg/analyzer/test/src/diagnostics/division_optimization_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/division_optimization_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,10 +14,7 @@
 }
 
 @reflectiveTest
-class DivisionOptimizationTest extends ResolverTestCase {
-  @override
-  bool get enableNewAnalysisDriver => true;
-
+class DivisionOptimizationTest extends DriverResolutionTest {
   test_divisionOptimization() async {
     await assertNoErrorsInCode(r'''
 f(int x, int y) {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart
index f35bbcc..c67ce98 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,10 +14,7 @@
 }
 
 @reflectiveTest
-class InvalidAssignmentTest extends ResolverTestCase {
-  @override
-  bool get enableNewAnalysisDriver => true;
-
+class InvalidAssignmentTest extends DriverResolutionTest {
   test_instanceVariable() async {
     await assertErrorsInCode(r'''
 class A {
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_cast_new_expr_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_cast_new_expr_test.dart
index 125d43d..f1c94b4 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_cast_new_expr_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_cast_new_expr_test.dart
@@ -3,9 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,12 +15,10 @@
 }
 
 @reflectiveTest
-class InvalidCastNewExprTest extends ResolverTestCase {
+class InvalidCastNewExprTest extends DriverResolutionTest {
   @override
-  List<String> get enabledExperiments => ['set-literals'];
-
-  @override
-  bool get enableNewAnalysisDriver => true;
+  AnalysisOptionsImpl get analysisOptions =>
+      AnalysisOptionsImpl()..enabledExperiments = ['set-literals'];
 
   test_listLiteral_const() async {
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_required_param_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_required_param_test.dart
index d426e08..96f6722c 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_required_param_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_required_param_test.dart
@@ -3,10 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/hint_code_test.dart' show metaLibraryStub;
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,15 +15,11 @@
 }
 
 @reflectiveTest
-class InvalidRequiredParamTest extends ResolverTestCase {
+class InvalidRequiredParamTest extends DriverResolutionTest with PackageMixin {
   @override
-  bool get enableNewAnalysisDriver => true;
-
-  @override
-  void reset() {
-    super.resetWith(packages: [
-      ['meta', metaLibraryStub]
-    ]);
+  void setUp() {
+    super.setUp();
+    addMetaPackage();
   }
 
   test_namedParameter_withDefault() async {
@@ -34,6 +30,14 @@
 ''', [HintCode.INVALID_REQUIRED_PARAM]);
   }
 
+  test_positionalParameter_noDefault() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+
+m([@required a]) => null;
+''', [HintCode.INVALID_REQUIRED_PARAM]);
+  }
+
   test_positionalParameter_withDefault() async {
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
@@ -42,14 +46,6 @@
 ''', [HintCode.INVALID_REQUIRED_PARAM]);
   }
 
-  test_ppositionalParameter_noDefault() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-
-m([@required a]) => null;
-''', [HintCode.INVALID_REQUIRED_PARAM]);
-  }
-
   test_requiredParameter() async {
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_visibility_annotation_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_visibility_annotation_test.dart
index b842600..dd8ad78 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_visibility_annotation_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_visibility_annotation_test.dart
@@ -3,10 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/test_utilities/package_mixin.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/hint_code_test.dart' show metaLibraryStub;
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,113 +15,19 @@
 }
 
 @reflectiveTest
-class InvalidVisibilityAnnotationTest extends ResolverTestCase {
+class InvalidVisibilityAnnotationTest extends DriverResolutionTest
+    with PackageMixin {
   @override
-  bool get enableNewAnalysisDriver => true;
-
-  @override
-  void reset() {
-    super.resetWith(packages: [
-      ['meta', metaLibraryStub]
-    ]);
+  void setUp() {
+    super.setUp();
+    addMetaPackage();
   }
 
-  test_publicTopLevelVariable() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-@visibleForTesting final _a = 1;
-''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
-  }
-
-  test_topLevelVariable_multiplePrivate() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-@visibleForTesting final _a = 1, _b = 2;
-''', [
-      HintCode.INVALID_VISIBILITY_ANNOTATION,
-      HintCode.INVALID_VISIBILITY_ANNOTATION
-    ]);
-  }
-
-  test_topLevelVariable_multipleMixed() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-@visibleForTesting final _a = 1, b = 2;
-''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
-  }
-
-  test_topLevelVariable_multiplePublic() async {
-    await assertNoErrorsInCode(r'''
-import 'package:meta/meta.dart';
-@visibleForTesting final a = 1, b = 2;
-''');
-  }
-
-  test_privateTopLevelFucntion() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-@visibleForTesting void _f() {}
-''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
-  }
-
-  test_privateTopLevelFunction() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-@visibleForTesting void _f() {}
-''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
-  }
-
-  test_privateEnum() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-@visibleForTesting enum _E {a, b, c}
-''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
-  }
-
-  test_privateTypedef() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-@visibleForTesting typedef _T = Function();
-''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
-  }
-
-  test_privateClass() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-@visibleForTesting class _C {}
-''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
-  }
-
-  test_privateMixin() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-@visibleForTesting mixin _M {}
-''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
-  }
-
-  test_privateConstructor() async {
+  test_fields_multipleMixed() async {
     await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 class C {
-  @visibleForTesting C._() {}
-}
-''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
-  }
-
-  test_privateMethod() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-class C {
-  @visibleForTesting void _m() {}
-}
-''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
-  }
-
-  test_privateField() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-class C {
-  @visibleForTesting int _a;
+  @visibleForTesting int _a, b;
 }
 ''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
   }
@@ -138,15 +44,6 @@
     ]);
   }
 
-  test_fields_multipleMixed() async {
-    await assertErrorsInCode(r'''
-import 'package:meta/meta.dart';
-class C {
-  @visibleForTesting int _a, b;
-}
-''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
-  }
-
   test_fields_multiplePublic() async {
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
@@ -156,6 +53,99 @@
 ''');
   }
 
+  test_privateClass() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+@visibleForTesting class _C {}
+''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
+  }
+
+  test_privateConstructor() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+class C {
+  @visibleForTesting C._() {}
+}
+''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
+  }
+
+  test_privateEnum() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+@visibleForTesting enum _E {a, b, c}
+''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
+  }
+
+  test_privateField() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+class C {
+  @visibleForTesting int _a;
+}
+''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
+  }
+
+  test_privateMethod() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+class C {
+  @visibleForTesting void _m() {}
+}
+''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
+  }
+
+  test_privateMixin() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+@visibleForTesting mixin _M {}
+''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
+  }
+
+  test_privateTopLevelFunction() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+@visibleForTesting void _f() {}
+''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
+  }
+
+  test_privateTopLevelVariable() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+@visibleForTesting final _a = 1;
+''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
+  }
+
+  test_privateTypedef() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+@visibleForTesting typedef _T = Function();
+''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
+  }
+
+  test_topLevelVariable_multipleMixed() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+@visibleForTesting final _a = 1, b = 2;
+''', [HintCode.INVALID_VISIBILITY_ANNOTATION]);
+  }
+
+  test_topLevelVariable_multiplePrivate() async {
+    await assertErrorsInCode(r'''
+import 'package:meta/meta.dart';
+@visibleForTesting final _a = 1, _b = 2;
+''', [
+      HintCode.INVALID_VISIBILITY_ANNOTATION,
+      HintCode.INVALID_VISIBILITY_ANNOTATION
+    ]);
+  }
+
+  test_topLevelVariable_multiplePublic() async {
+    await assertNoErrorsInCode(r'''
+import 'package:meta/meta.dart';
+@visibleForTesting final a = 1, b = 2;
+''');
+  }
+
   test_valid() async {
     await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
diff --git a/pkg/analyzer/test/src/diagnostics/unchecked_use_of_nullable_value_test.dart b/pkg/analyzer/test/src/diagnostics/unchecked_use_of_nullable_value_test.dart
index 36dc5fb..621b6b3 100644
--- a/pkg/analyzer/test/src/diagnostics/unchecked_use_of_nullable_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unchecked_use_of_nullable_value_test.dart
@@ -4,9 +4,10 @@
 
 import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,12 +16,10 @@
 }
 
 @reflectiveTest
-class UncheckedUseOfNullableValueTest extends ResolverTestCase {
+class UncheckedUseOfNullableValueTest extends DriverResolutionTest {
   @override
-  List<String> get enabledExperiments => [EnableString.non_nullable];
-
-  @override
-  bool get enableNewAnalysisDriver => true;
+  AnalysisOptionsImpl get analysisOptions =>
+      AnalysisOptionsImpl()..enabledExperiments = [EnableString.non_nullable];
 
   test_and_nonNullable() async {
     await assertNoErrorsInCode(r'''
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
index 2740ff0..75f0359 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
@@ -4,9 +4,10 @@
 
 import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer/src/error/codes.dart';
+import 'package:analyzer/src/generated/engine.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -16,10 +17,7 @@
 }
 
 @reflectiveTest
-class UndefinedGetterTest extends ResolverTestCase {
-  @override
-  bool get enableNewAnalysisDriver => true;
-
+class UndefinedGetterTest extends DriverResolutionTest {
   test_ifStatement_notPromoted() async {
     await assertErrorsInCode('''
 f(int x) {
@@ -27,7 +25,7 @@
     x.length;
   }
 }
-''', [StaticTypeWarningCode.UNDEFINED_GETTER], verify: false);
+''', [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   test_ifStatement_promoted() async {
@@ -47,25 +45,23 @@
     y.isEven;
   }
 }
-''', [StaticTypeWarningCode.UNDEFINED_GETTER], verify: false);
+''', [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 }
 
 @reflectiveTest
-class UndefinedGetterWithControlFlowCollectionsTest extends ResolverTestCase {
+class UndefinedGetterWithControlFlowCollectionsTest
+    extends DriverResolutionTest {
   @override
-  List<String> get enabledExperiments =>
-      [EnableString.control_flow_collections];
-
-  @override
-  bool get enableNewAnalysisDriver => true;
+  AnalysisOptionsImpl get analysisOptions => AnalysisOptionsImpl()
+    ..enabledExperiments = [EnableString.control_flow_collections];
 
   test_ifElement_inList_notPromoted() async {
     await assertErrorsInCode('''
 f(int x) {
   return [if (x is String) x.length];
 }
-''', [StaticTypeWarningCode.UNDEFINED_GETTER], verify: false);
+''', [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   test_ifElement_inList_promoted() async {
@@ -81,7 +77,7 @@
 f(int x) {
   return {if (x is String) x : x.length};
 }
-''', [StaticTypeWarningCode.UNDEFINED_GETTER], verify: false);
+''', [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   test_ifElement_inMap_promoted() async {
@@ -97,7 +93,7 @@
 f(int x) {
   return {if (x is String) x.length};
 }
-''', [StaticTypeWarningCode.UNDEFINED_GETTER], verify: false);
+''', [StaticTypeWarningCode.UNDEFINED_GETTER]);
   }
 
   test_ifElement_inSet_promoted() async {
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
index 28e76bf..5459327 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,7 +14,7 @@
 }
 
 @reflectiveTest
-class UnnecessaryCastTest extends ResolverTestCase {
+class UnnecessaryCastTest extends DriverResolutionTest {
   test_conditionalExpression() async {
     await assertNoErrorsInCode(r'''
 abstract class I {}
@@ -57,6 +57,17 @@
 ''');
   }
 
+  test_generics() async {
+    // dartbug.com/18953
+    assertErrorsInCode(r'''
+import 'dart:async';
+Future<int> f() => new Future.value(0);
+void g(bool c) {
+  (c ? f(): new Future.value(0) as Future<int>).then((int value) {});
+}
+''', [HintCode.UNNECESSARY_CAST]);
+  }
+
   test_parameter_A() async {
     // dartbug.com/13855, dartbug.com/13732
     await assertNoErrorsInCode(r'''
@@ -95,18 +106,4 @@
 }
 ''', [HintCode.UNNECESSARY_CAST]);
   }
-
-  @override
-  bool get enableNewAnalysisDriver => true;
-
-  test_generics() async {
-    // dartbug.com/18953
-    assertErrorsInCode(r'''
-import 'dart:async';
-Future<int> f() => new Future.value(0);
-void g(bool c) {
-  (c ? f(): new Future.value(0) as Future<int>).then((int value) {});
-}
-''', [HintCode.UNNECESSARY_CAST]);
-  }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/unused_catch_stack_test.dart b/pkg/analyzer/test/src/diagnostics/unused_catch_stack_test.dart
index 0a7330b..71bba94 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_catch_stack_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_catch_stack_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,12 +14,11 @@
 }
 
 @reflectiveTest
-class UnusedCatchStackTest extends ResolverTestCase {
+class UnusedCatchStackTest extends DriverResolutionTest {
   @override
-  bool get enableNewAnalysisDriver => true;
+  bool get enableUnusedLocalVariable => true;
 
   test_on_unusedStack() async {
-    enableUnusedLocalVariable = true;
     await assertErrorsInCode(r'''
 main() {
   try {
@@ -30,7 +29,6 @@
   }
 
   test_on_usedStack() async {
-    enableUnusedLocalVariable = true;
     await assertNoErrorsInCode(r'''
 main() {
   try {
@@ -42,7 +40,6 @@
   }
 
   test_unusedStack() async {
-    enableUnusedLocalVariable = true;
     await assertErrorsInCode(r'''
 main() {
   try {
@@ -53,7 +50,6 @@
   }
 
   test_usedStack() async {
-    enableUnusedLocalVariable = true;
     await assertNoErrorsInCode(r'''
 main() {
   try {
diff --git a/pkg/analyzer/test/src/diagnostics/unused_field_test.dart b/pkg/analyzer/test/src/diagnostics/unused_field_test.dart
index 3fa352c..91c7082 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_field_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,10 +14,7 @@
 }
 
 @reflectiveTest
-class UnusedFieldTest extends ResolverTestCase {
-  @override
-  bool get enableNewAnalysisDriver => true;
-
+class UnusedFieldTest extends DriverResolutionTest {
   @override
   bool get enableUnusedElement => true;
 
diff --git a/pkg/analyzer/test/src/diagnostics/unused_import_test.dart b/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
index 34319e4..f94815c 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/generated/source.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,210 +14,142 @@
 }
 
 @reflectiveTest
-class UnusedImportTest extends ResolverTestCase {
-  @override
-  bool get enableNewAnalysisDriver => true;
-
+class UnusedImportTest extends DriverResolutionTest {
   test_annotationOnDirective() async {
-    Source source = addSource(r'''
-library L;
-@A()
-import 'lib1.dart';
-''');
-    Source source2 = addNamedSource("/lib1.dart", r'''
-library lib1;
+    newFile('/test/lib/lib1.dart', content: r'''
 class A {
   const A() {}
 }
 ''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(source);
-    verify([source, source2]);
+    await assertNoErrorsInCode(r'''
+@A()
+import 'lib1.dart';
+''');
   }
 
   test_as() async {
-    Source source = addSource(r'''
-library L;
+    newFile('/test/lib/lib1.dart', content: r'''
+class A {}
+''');
+    await assertErrorsInCode(r'''
 import 'lib1.dart';
 import 'lib1.dart' as one;
 one.A a;
-''');
-    Source source2 = addNamedSource("/lib1.dart", r'''
-library lib1;
-class A {}
-''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(source, [HintCode.UNUSED_IMPORT]);
-    assertNoErrors(source2);
-    verify([source, source2]);
+''', [HintCode.UNUSED_IMPORT]);
   }
 
   test_as_equalPrefixes_referenced() async {
     // 18818
-    Source source = addSource(r'''
-library L;
+    newFile('/test/lib/lib1.dart', content: r'''
+class A {}
+''');
+    newFile('/test/lib/lib2.dart', content: r'''
+class B {}
+''');
+    await assertNoErrorsInCode(r'''
 import 'lib1.dart' as one;
 import 'lib2.dart' as one;
 one.A a;
 one.B b;
 ''');
-    Source source2 = addNamedSource("/lib1.dart", r'''
-library lib1;
-class A {}
-''');
-    Source source3 = addNamedSource("/lib2.dart", r'''
-library lib2;
-class B {}
-''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    await computeAnalysisResult(source3);
-    assertErrors(source);
-    assertNoErrors(source2);
-    assertNoErrors(source3);
-    verify([source, source2, source3]);
   }
 
   @failingTest
   test_as_equalPrefixes_unreferenced() async {
     // See todo at ImportsVerifier.prefixElementMap.
-    Source source = addSource(r'''
-library L;
+    newFile('/test/lib/lib1.dart', content: r'''
+class A {}
+''');
+    newFile('/test/lib/lib2.dart', content: r'''
+class B {}
+''');
+    await assertErrorsInCode(r'''
 import 'lib1.dart' as one;
 import 'lib2.dart' as one;
 one.A a;
-''');
-    Source source2 = addNamedSource("/lib1.dart", r'''
-library lib1;
-class A {}
-''');
-    Source source3 = addNamedSource("/lib2.dart", r'''
-library lib2;
-class B {}
-''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    await computeAnalysisResult(source3);
-    assertErrors(source, [HintCode.UNUSED_IMPORT]);
-    assertNoErrors(source2);
-    assertNoErrors(source3);
-    verify([source, source2, source3]);
+''', [HintCode.UNUSED_IMPORT]);
   }
 
   test_core_library() async {
-    Source source = addSource(r'''
-library L;
+    await assertNoErrorsInCode(r'''
 import 'dart:core';
 ''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
   }
 
   test_export() async {
-    Source source = addSource(r'''
-library L;
-import 'lib1.dart';
-Two two;
-''');
-    addNamedSource("/lib1.dart", r'''
-library lib1;
+    newFile('/test/lib/lib1.dart', content: r'''
 export 'lib2.dart';
 class One {}
 ''');
-    addNamedSource("/lib2.dart", r'''
-library lib2;
+    newFile('/test/lib/lib2.dart', content: r'''
 class Two {}
 ''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
+    await assertNoErrorsInCode(r'''
+import 'lib1.dart';
+Two two;
+''');
   }
 
   test_export2() async {
-    Source source = addSource(r'''
-library L;
+    newFile('/test/lib/lib1.dart', content: r'''
+export 'lib2.dart';
+class One {}
+''');
+    newFile('/test/lib/lib2.dart', content: r'''
+export 'lib3.dart';
+class Two {}
+''');
+    newFile('/test/lib/lib3.dart', content: r'''
+class Three {}
+''');
+    await assertNoErrorsInCode(r'''
 import 'lib1.dart';
 Three three;
 ''');
-    addNamedSource("/lib1.dart", r'''
-library lib1;
-export 'lib2.dart';
-class One {}
-''');
-    addNamedSource("/lib2.dart", r'''
-library lib2;
-export 'lib3.dart';
-class Two {}
-''');
-    addNamedSource("/lib3.dart", r'''
-library lib3;
-class Three {}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
   }
 
   test_export_infiniteLoop() async {
-    Source source = addSource(r'''
-library L;
-import 'lib1.dart';
-Two two;
-''');
-    addNamedSource("/lib1.dart", r'''
-library lib1;
+    newFile('/test/lib/lib1.dart', content: r'''
 export 'lib2.dart';
 class One {}
 ''');
-    addNamedSource("/lib2.dart", r'''
-library lib2;
+    newFile('/test/lib/lib2.dart', content: r'''
 export 'lib3.dart';
 class Two {}
 ''');
-    addNamedSource("/lib3.dart", r'''
-library lib3;
+    newFile('/test/lib/lib3.dart', content: r'''
 export 'lib2.dart';
 class Three {}
 ''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
+    await assertNoErrorsInCode(r'''
+import 'lib1.dart';
+Two two;
+''');
   }
 
   test_hide() async {
-    Source source = addSource(r'''
-library L;
+    newFile('/test/lib/lib1.dart', content: r'''
+class A {}
+''');
+    await assertErrorsInCode(r'''
 import 'lib1.dart';
 import 'lib1.dart' hide A;
 A a;
-''');
-    Source source2 = addNamedSource("/lib1.dart", r'''
-library lib1;
-class A {}
-''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(source, [HintCode.UNUSED_IMPORT]);
-    assertNoErrors(source2);
-    verify([source, source2]);
+''', [HintCode.UNUSED_IMPORT]);
   }
 
   test_inComment_libraryDirective() async {
-    Source source = addSource(r'''
+    await assertNoErrorsInCode(r'''
 /// Use [Future] class.
-library L;
 import 'dart:async';
 ''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
   }
 
   test_metadata() async {
-    Source source = addSource(r'''
-library L;
+    newFile('/test/lib/lib1.dart', content: r'''
+const x = 0;
+''');
+    await assertNoErrorsInCode(r'''
 @A(x)
 import 'lib1.dart';
 class A {
@@ -226,18 +157,14 @@
   const A(this.value);
 }
 ''');
-    addNamedSource("/lib1.dart", r'''
-library lib1;
-const x = 0;
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
   }
 
   test_prefix_topLevelFunction() async {
-    Source source = addSource(r'''
-library L;
+    newFile('/test/lib/lib1.dart', content: r'''
+class One {}
+topLevelFunction() {}
+''');
+    await assertNoErrorsInCode(r'''
 import 'lib1.dart' hide topLevelFunction;
 import 'lib1.dart' as one show topLevelFunction;
 class A {
@@ -247,19 +174,14 @@
   }
 }
 ''');
-    addNamedSource("/lib1.dart", r'''
-library lib1;
-class One {}
-topLevelFunction() {}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
   }
 
   test_prefix_topLevelFunction2() async {
-    Source source = addSource(r'''
-library L;
+    newFile('/test/lib/lib1.dart', content: r'''
+class One {}
+topLevelFunction() {}
+''');
+    await assertNoErrorsInCode(r'''
 import 'lib1.dart' hide topLevelFunction;
 import 'lib1.dart' as one show topLevelFunction;
 import 'lib1.dart' as two show topLevelFunction;
@@ -271,47 +193,24 @@
   }
 }
 ''');
-    addNamedSource("/lib1.dart", r'''
-library lib1;
-class One {}
-topLevelFunction() {}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
   }
 
   test_show() async {
-    Source source = addSource(r'''
-library L;
-import 'lib1.dart' show A;
-import 'lib1.dart' show B;
-A a;
-''');
-    Source source2 = addNamedSource("/lib1.dart", r'''
-library lib1;
+    newFile('/test/lib/lib1.dart', content: r'''
 class A {}
 class B {}
 ''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(source, [HintCode.UNUSED_IMPORT]);
-    assertNoErrors(source2);
-    verify([source, source2]);
+    await assertErrorsInCode(r'''
+import 'lib1.dart' show A;
+import 'lib1.dart' show B;
+A a;
+''', [HintCode.UNUSED_IMPORT]);
   }
 
   test_unusedImport() async {
-    Source source = addSource(r'''
-library L;
+    newFile('/test/lib/lib1.dart');
+    await assertErrorsInCode(r'''
 import 'lib1.dart';
-''');
-    Source source2 = addNamedSource("/lib1.dart", '''
-library lib1;
-''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(source, [HintCode.UNUSED_IMPORT]);
-    assertNoErrors(source2);
-    verify([source, source2]);
+''', [HintCode.UNUSED_IMPORT]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/unused_label_test.dart b/pkg/analyzer/test/src/diagnostics/unused_label_test.dart
index e14f291..7d3a4f4 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_label_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_label_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/error/codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,10 +14,7 @@
 }
 
 @reflectiveTest
-class UnusedLabelTest extends ResolverTestCase {
-  @override
-  bool get enableNewAnalysisDriver => true;
-
+class UnusedLabelTest extends DriverResolutionTest {
   test_unused_inSwitch() async {
     await assertErrorsInCode(r'''
 f(x) {
diff --git a/pkg/analyzer/test/src/diagnostics/unused_local_variable_test.dart b/pkg/analyzer/test/src/diagnostics/unused_local_variable_test.dart
index ee12d06..ef082c4 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_local_variable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_local_variable_test.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/src/dart/error/hint_codes.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -14,12 +14,11 @@
 }
 
 @reflectiveTest
-class UnusedLocalVariableTest extends ResolverTestCase {
+class UnusedLocalVariableTest extends DriverResolutionTest {
   @override
-  bool get enableNewAnalysisDriver => true;
+  bool get enableUnusedLocalVariable => true;
 
   test_inFor_underscore_ignored() async {
-    enableUnusedLocalVariable = true;
     await assertNoErrorsInCode(r'''
 main() {
   for (var _ in [1,2,3]) {
@@ -32,7 +31,6 @@
   }
 
   test_inFunction() async {
-    enableUnusedLocalVariable = true;
     await assertErrorsInCode(r'''
 main() {
   var v = 1;
@@ -42,7 +40,6 @@
   }
 
   test_inMethod() async {
-    enableUnusedLocalVariable = true;
     await assertErrorsInCode(r'''
 class A {
   foo() {
@@ -54,7 +51,6 @@
   }
 
   test_isInvoked() async {
-    enableUnusedLocalVariable = true;
     await assertNoErrorsInCode(r'''
 typedef Foo();
 main() {
@@ -65,7 +61,6 @@
   }
 
   test_isNullAssigned() async {
-    enableUnusedLocalVariable = true;
     await assertNoErrorsInCode(r'''
 typedef Foo();
 main() {
@@ -77,7 +72,6 @@
   }
 
   test_isRead_notUsed_compoundAssign() async {
-    enableUnusedLocalVariable = true;
     await assertErrorsInCode(r'''
 main() {
   var v = 1;
@@ -87,7 +81,6 @@
   }
 
   test_isRead_notUsed_postfixExpr() async {
-    enableUnusedLocalVariable = true;
     await assertErrorsInCode(r'''
 main() {
   var v = 1;
@@ -97,7 +90,6 @@
   }
 
   test_isRead_notUsed_prefixExpr() async {
-    enableUnusedLocalVariable = true;
     await assertErrorsInCode(r'''
 main() {
   var v = 1;
@@ -107,7 +99,6 @@
   }
 
   test_isRead_usedArgument() async {
-    enableUnusedLocalVariable = true;
     await assertNoErrorsInCode(r'''
 main() {
   var v = 1;
@@ -118,7 +109,6 @@
   }
 
   test_isRead_usedInvocationTarget() async {
-    enableUnusedLocalVariable = true;
     await assertNoErrorsInCode(r'''
 class A {
   foo() {}
diff --git a/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart b/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart
index 7b9f834..c798569 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart
@@ -3,10 +3,9 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/generated/source.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -15,89 +14,57 @@
 }
 
 @reflectiveTest
-class UnusedShownNameTest extends ResolverTestCase {
-  @override
-  bool get enableNewAnalysisDriver => true;
-
+class UnusedShownNameTest extends DriverResolutionTest {
   test_unreferenced() async {
-    Source source = addSource(r'''
-library L;
-import 'lib1.dart' show A, B;
-A a;
-''');
-    Source source2 = addNamedSource("/lib1.dart", r'''
-library lib1;
+    newFile('/test/lib/lib1.dart', content: r'''
 class A {}
 class B {}
 ''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]);
-    assertNoErrors(source2);
-    verify([source, source2]);
+    assertErrorsInCode(r'''
+import 'lib1.dart' show A, B;
+A a;
+''', [HintCode.UNUSED_SHOWN_NAME]);
   }
 
   test_unusedShownName_as() async {
-    Source source = addSource(r'''
-library L;
-import 'lib1.dart' as p show A, B;
-p.A a;
-''');
-    Source source2 = addNamedSource("/lib1.dart", r'''
-library lib1;
+    newFile('/test/lib/lib1.dart', content: r'''
 class A {}
 class B {}
 ''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]);
-    assertNoErrors(source2);
-    verify([source, source2]);
+    assertErrorsInCode(r'''
+import 'lib1.dart' as p show A, B;
+p.A a;
+''', [HintCode.UNUSED_SHOWN_NAME]);
   }
 
   test_unusedShownName_duplicates() async {
-    Source source = addSource(r'''
-library L;
-import 'lib1.dart' show A, B;
-import 'lib1.dart' show C, D;
-A a;
-C c;
-''');
-    Source source2 = addNamedSource("/lib1.dart", r'''
-library lib1;
+    newFile('/test/lib/lib1.dart', content: r'''
 class A {}
 class B {}
 class C {}
 class D {}
 ''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(
-        source, [HintCode.UNUSED_SHOWN_NAME, HintCode.UNUSED_SHOWN_NAME]);
-    assertNoErrors(source2);
-    verify([source, source2]);
+    assertErrorsInCode(r'''
+import 'lib1.dart' show A, B;
+import 'lib1.dart' show C, D;
+A a;
+C c;
+''', [HintCode.UNUSED_SHOWN_NAME, HintCode.UNUSED_SHOWN_NAME]);
   }
 
   test_unusedShownName_topLevelVariable() async {
-    Source source = addSource(r'''
-library L;
-import 'lib1.dart' show var1, var2;
-import 'lib1.dart' show var3, var4;
-int a = var1;
-int b = var2;
-int c = var3;
-''');
-    Source source2 = addNamedSource("/lib1.dart", r'''
-library lib1;
+    newFile('/test/lib/lib1.dart', content: r'''
 const int var1 = 1;
 const int var2 = 2;
 const int var3 = 3;
 const int var4 = 4;
 ''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]);
-    assertNoErrors(source2);
-    verify([source, source2]);
+    assertErrorsInCode(r'''
+import 'lib1.dart' show var1, var2;
+import 'lib1.dart' show var3, var4;
+int a = var1;
+int b = var2;
+int c = var3;
+''', [HintCode.UNUSED_SHOWN_NAME]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
index dfe12c9..3d0a5a4 100644
--- a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
@@ -4,7 +4,7 @@
 
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../../generated/resolver_test_case.dart';
+import '../dart/resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -13,10 +13,7 @@
 }
 
 @reflectiveTest
-class UseOfVoidResultTest extends ResolverTestCase {
-  @override
-  bool get enableNewAnalysisDriver => true;
-
+class UseOfVoidResultTest extends DriverResolutionTest {
   test_implicitReturnValue() async {
     await assertNoErrorsInCode(r'''
 f() {}