Extract more hint tests into separate files

Change-Id: I110f815c6bb124596b31cf3bac739ed8604d6c3b
Reviewed-on: https://dart-review.googlesource.com/c/89100
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/test/generated/hint_code_test.dart b/pkg/analyzer/test/generated/hint_code_test.dart
index f2b54ab..47bdb3a 100644
--- a/pkg/analyzer/test/generated/hint_code_test.dart
+++ b/pkg/analyzer/test/generated/hint_code_test.dart
@@ -1227,69 +1227,6 @@
     ]);
   }
 
-  test_invalidAssignment_instanceVariable() async {
-    Source source = addSource(r'''
-class A {
-  int x;
-}
-f(var y) {
-  A a;
-  if(y is String) {
-    a.x = y;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
-    verify([source]);
-  }
-
-  test_invalidAssignment_localVariable() async {
-    Source source = addSource(r'''
-f(var y) {
-  if(y is String) {
-    int x = y;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
-    verify([source]);
-  }
-
-  test_invalidAssignment_staticVariable() async {
-    Source source = addSource(r'''
-class A {
-  static int x;
-}
-f(var y) {
-  if(y is String) {
-    A.x = y;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
-    verify([source]);
-  }
-
-  test_invalidAssignment_variableDeclaration() async {
-    // 17971
-    Source source = addSource(r'''
-class Point {
-  final num x, y;
-  Point(this.x, this.y);
-  Point operator +(Point other) {
-    return new Point(x+other.x, y+other.y);
-  }
-}
-main() {
-  var p1 = new Point(0, 0);
-  var p2 = new Point(10, 10);
-  int n = p1 + p2;
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
-    verify([source]);
-  }
-
   test_invalidImmutableAnnotation_method() async {
     Source source = addSource(r'''
 import 'package:meta/meta.dart';
@@ -3942,26 +3879,6 @@
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]);
   }
 
-  test_unnecessaryCast_type_supertype() async {
-    Source source = addSource(r'''
-m(int i) {
-  var b = i as Object;
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.UNNECESSARY_CAST]);
-    verify([source]);
-  }
-
-  test_unnecessaryCast_type_type() async {
-    Source source = addSource(r'''
-m(num i) {
-  var b = i as num;
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.UNNECESSARY_CAST]);
-    verify([source]);
-  }
-
   test_unnecessaryNoSuchMethod_blockBody() async {
     Source source = addSource(r'''
 class A {
@@ -4788,346 +4705,6 @@
     verify([source]);
   }
 
-  test_unusedField_isUsed_argument() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f = 0;
-  main() {
-    print(++_f);
-  }
-}
-print(x) {}''');
-    await computeAnalysisResult(source);
-    assertErrors(source);
-    verify([source]);
-  }
-
-  test_unusedField_isUsed_reference_implicitThis() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f;
-  main() {
-    print(_f);
-  }
-}
-print(x) {}''');
-    await computeAnalysisResult(source);
-    assertErrors(source);
-    verify([source]);
-  }
-
-  test_unusedField_isUsed_reference_implicitThis_expressionFunctionBody() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f;
-  m() => _f;
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source);
-    verify([source]);
-  }
-
-  test_unusedField_isUsed_reference_implicitThis_subclass() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f;
-  main() {
-    print(_f);
-  }
-}
-class B extends A {
-  int _f;
-}
-print(x) {}''');
-    await computeAnalysisResult(source);
-    assertErrors(source);
-    verify([source]);
-  }
-
-  test_unusedField_isUsed_reference_qualified_propagatedElement() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f;
-}
-main() {
-  var a = new A();
-  print(a._f);
-}
-print(x) {}''');
-    await computeAnalysisResult(source);
-    assertErrors(source);
-    verify([source]);
-  }
-
-  test_unusedField_isUsed_reference_qualified_staticElement() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f;
-}
-main() {
-  A a = new A();
-  print(a._f);
-}
-print(x) {}''');
-    await computeAnalysisResult(source);
-    assertErrors(source);
-    verify([source]);
-  }
-
-  test_unusedField_isUsed_reference_qualified_unresolved() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f;
-}
-main(a) {
-  print(a._f);
-}
-print(x) {}''');
-    await computeAnalysisResult(source);
-    assertErrors(source);
-    verify([source]);
-  }
-
-  test_unusedField_notUsed_compoundAssign() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f;
-  main() {
-    _f += 2;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.UNUSED_FIELD]);
-    verify([source]);
-  }
-
-  test_unusedField_notUsed_constructorFieldInitializers() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f;
-  A() : _f = 0;
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.UNUSED_FIELD]);
-    verify([source]);
-  }
-
-  test_unusedField_notUsed_fieldFormalParameter() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f;
-  A(this._f);
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.UNUSED_FIELD]);
-    verify([source]);
-  }
-
-  test_unusedField_notUsed_noReference() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f;
-}
-''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.UNUSED_FIELD]);
-    verify([source]);
-  }
-
-  test_unusedField_notUsed_nullAssign() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  var _f;
-  m() {
-    _f ??= doSomething();
-  }
-}
-doSomething() => 0;
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unusedField_notUsed_postfixExpr() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f = 0;
-  main() {
-    _f++;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.UNUSED_FIELD]);
-    verify([source]);
-  }
-
-  test_unusedField_notUsed_prefixExpr() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f = 0;
-  main() {
-    ++_f;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.UNUSED_FIELD]);
-    verify([source]);
-  }
-
-  test_unusedField_notUsed_simpleAssignment() async {
-    enableUnusedElement = true;
-    Source source = addSource(r'''
-class A {
-  int _f;
-  m() {
-    _f = 1;
-  }
-}
-main(A a) {
-  a._f = 2;
-}
-''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.UNUSED_FIELD]);
-    verify([source]);
-  }
-
-  test_unusedImport() async {
-    Source source = addSource(r'''
-library L;
-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]);
-  }
-
-  test_unusedImport_as() async {
-    Source source = addSource(r'''
-library L;
-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]);
-  }
-
-  @failingTest
-  test_unusedImport_as_equalPrefixes() async {
-    // See todo at ImportsVerifier.prefixElementMap.
-    Source source = addSource(r'''
-library L;
-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]);
-  }
-
-  test_unusedImport_hide() async {
-    Source source = addSource(r'''
-library L;
-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]);
-  }
-
-  test_unusedImport_inComment_libraryDirective() async {
-    Source source = addSource(r'''
-/// Use [Future] class.
-library L;
-import 'dart:async';
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-  }
-
-  test_unusedImport_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;
-class A {}
-class B {}''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(source, [HintCode.UNUSED_IMPORT]);
-    assertNoErrors(source2);
-    verify([source, source2]);
-  }
-
-  test_unusedLabel_inSwitch() async {
-    Source source = addSource(r'''
-f(x) {
-  switch (x) {
-    label: case 0:
-      break;
-    default:
-      break;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.UNUSED_LABEL]);
-    verify([source]);
-  }
-
-  test_unusedLabel_onWhile() async {
-    Source source = addSource(r'''
-f(condition()) {
-  label: while (condition()) {
-    break;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [HintCode.UNUSED_LABEL]);
-    verify([source]);
-  }
-
   test_unusedLocalVariable_inCatch_exception() async {
     enableUnusedLocalVariable = true;
     Source source = addSource(r'''
@@ -5329,78 +4906,4 @@
     assertErrors(source);
     verify([source]);
   }
-
-  test_unusedShownName() async {
-    Source source = addSource(r'''
-library L;
-import 'lib1.dart' show A, B;
-A a;''');
-    Source source2 = addNamedSource("/lib1.dart", r'''
-library lib1;
-class A {}
-class B {}''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]);
-    assertNoErrors(source2);
-    verify([source, source2]);
-  }
-
-  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;
-class A {}
-class B {}''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]);
-    assertNoErrors(source2);
-    verify([source, source2]);
-  }
-
-  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;
-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]);
-  }
-
-  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;
-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]);
-  }
 }
diff --git a/pkg/analyzer/test/generated/non_hint_code_test.dart b/pkg/analyzer/test/generated/non_hint_code_test.dart
index 26c4abc..bf270f1 100644
--- a/pkg/analyzer/test/generated/non_hint_code_test.dart
+++ b/pkg/analyzer/test/generated/non_hint_code_test.dart
@@ -961,102 +961,6 @@
     assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]);
   }
 
-  test_unnecessaryCast_13855_parameter_A() async {
-    // dartbug.com/13855, dartbug.com/13732
-    Source source = addSource(r'''
-class A{
-  a() {}
-}
-class B<E> {
-  E e;
-  m() {
-    (e as A).a();
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unnecessaryCast_conditionalExpression() async {
-    Source source = addSource(r'''
-abstract class I {}
-class A implements I {}
-class B implements I {}
-I m(A a, B b) {
-  return a == null ? b as I : a as I;
-}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unnecessaryCast_dynamic_type() async {
-    Source source = addSource(r'''
-m(v) {
-  var b = v as Object;
-}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unnecessaryCast_function() async {
-    Source source = addSource(r'''
-void main() {
-  Function(Null) f = (String x) => x;
-  (f as Function(int))(3); 
-}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unnecessaryCast_function2() async {
-    Source source = addSource(r'''
-class A {}
-
-class B<T extends A> {
-  void foo() {
-    T Function(T) f;
-    A Function(A) g;
-    g = f as A Function(A);
-  }
-}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unnecessaryCast_generics() async {
-    // dartbug.com/18953
-    Source source = addSource(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) {});
-}''');
-    await computeAnalysisResult(source);
-    if (enableNewAnalysisDriver) {
-      assertErrors(source, [HintCode.UNNECESSARY_CAST]);
-    } else {
-      assertNoErrors(source);
-    }
-    verify([source]);
-  }
-
-  test_unnecessaryCast_type_dynamic() async {
-    Source source = addSource(r'''
-m(v) {
-  var b = Object as dynamic;
-}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_unnecessaryNoSuchMethod_blockBody_notReturnStatement() async {
     Source source = addSource(r'''
 class A {
@@ -1117,224 +1021,6 @@
     assertNoErrors(source);
     verify([source]);
   }
-
-  test_unusedImport_annotationOnDirective() async {
-    Source source = addSource(r'''
-library L;
-@A()
-import 'lib1.dart';''');
-    Source source2 = addNamedSource("/lib1.dart", r'''
-library lib1;
-class A {
-  const A() {}
-}''');
-    await computeAnalysisResult(source);
-    await computeAnalysisResult(source2);
-    assertErrors(source);
-    verify([source, source2]);
-  }
-
-  test_unusedImport_as_equalPrefixes() async {
-    // 18818
-    Source source = addSource(r'''
-library L;
-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]);
-  }
-
-  test_unusedImport_core_library() async {
-    Source source = addSource(r'''
-library L;
-import 'dart:core';''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unusedImport_export() async {
-    Source source = addSource(r'''
-library L;
-import 'lib1.dart';
-Two two;''');
-    addNamedSource("/lib1.dart", r'''
-library lib1;
-export 'lib2.dart';
-class One {}''');
-    addNamedSource("/lib2.dart", r'''
-library lib2;
-class Two {}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unusedImport_export2() async {
-    Source source = addSource(r'''
-library L;
-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_unusedImport_export_infiniteLoop() async {
-    Source source = addSource(r'''
-library L;
-import 'lib1.dart';
-Two two;''');
-    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;
-export 'lib2.dart';
-class Three {}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unusedImport_metadata() async {
-    Source source = addSource(r'''
-library L;
-@A(x)
-import 'lib1.dart';
-class A {
-  final int value;
-  const A(this.value);
-}''');
-    addNamedSource("/lib1.dart", r'''
-library lib1;
-const x = 0;''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unusedImport_prefix_topLevelFunction() async {
-    Source source = addSource(r'''
-library L;
-import 'lib1.dart' hide topLevelFunction;
-import 'lib1.dart' as one show topLevelFunction;
-class A {
-  static void x() {
-    One o;
-    one.topLevelFunction();
-  }
-}''');
-    addNamedSource("/lib1.dart", r'''
-library lib1;
-class One {}
-topLevelFunction() {}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unusedImport_prefix_topLevelFunction2() async {
-    Source source = addSource(r'''
-library L;
-import 'lib1.dart' hide topLevelFunction;
-import 'lib1.dart' as one show topLevelFunction;
-import 'lib1.dart' as two show topLevelFunction;
-class A {
-  static void x() {
-    One o;
-    one.topLevelFunction();
-    two.topLevelFunction();
-  }
-}''');
-    addNamedSource("/lib1.dart", r'''
-library lib1;
-class One {}
-topLevelFunction() {}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unusedLabel_inSwitch() async {
-    Source source = addSource(r'''
-f(x) {
-  switch (x) {
-    label: case 0:
-      break;
-    default:
-      continue label;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_unusedLabel_onWhile() async {
-    Source source = addSource(r'''
-f(condition()) {
-  label: while (condition()) {
-    break label;
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_useOfVoidResult_implicitReturnValue() async {
-    Source source = addSource(r'''
-f() {}
-class A {
-  n() {
-    var a = f();
-  }
-}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_useOfVoidResult_nonVoidReturnValue() async {
-    Source source = addSource(r'''
-int f() => 1;
-g() {
-  var a = f();
-}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
 }
 
 class PubSuggestionCodeTest extends ResolverTestCase {
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 bd6d96e..73966e0 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
@@ -17,7 +17,7 @@
 @reflectiveTest
 class ArgumentTypeNotAssignableTest extends ResolverTestCase {
   test_functionType() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   var a = new A();
   a.n(() => 0);
@@ -29,7 +29,7 @@
   }
 
   test_interfaceType() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   var i = '';
   n(i);
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 61f3441..94f9c00 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
@@ -17,7 +17,7 @@
 @reflectiveTest
 class CanBeNullAfterNullAwareTest extends ResolverTestCase {
   test_afterCascade() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   x..a?.b.c;
 }
@@ -25,7 +25,7 @@
   }
 
   test_beforeCascade() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   x?.a..m();
 }
@@ -33,7 +33,7 @@
   }
 
   test_cascadeWithParenthesis() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   (x?.a)..m();
 }
@@ -41,7 +41,7 @@
   }
 
   test_definedForNull() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 m(x) {
   x?.a.hashCode;
   x?.a.runtimeType;
@@ -54,7 +54,7 @@
   }
 
   test_guarded_methodInvocation() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 m(x) {
   x?.a()?.b();
 }
@@ -62,7 +62,7 @@
   }
 
   test_guarded_propertyAccess() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 m(x) {
   x?.a?.b;
 }
@@ -70,7 +70,7 @@
   }
 
   test_methodInvocation() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   x?.a.b();
 }
@@ -78,7 +78,7 @@
   }
 
   test_multipleInvocations() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   x?.a
     ..m()
@@ -88,7 +88,7 @@
   }
 
   test_parenthesized() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   (x?.a).b;
 }
@@ -96,7 +96,7 @@
   }
 
   test_propertyAccess() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   x?.a.b;
 }
diff --git a/pkg/analyzer/test/src/diagnostics/const_constructor_with_mixin_with_field_test.dart b/pkg/analyzer/test/src/diagnostics/const_constructor_with_mixin_with_field_test.dart
index 2102064..c864b70 100644
--- a/pkg/analyzer/test/src/diagnostics/const_constructor_with_mixin_with_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/const_constructor_with_mixin_with_field_test.dart
@@ -16,7 +16,6 @@
   });
 }
 
-@reflectiveTest
 mixin ConstConstructorWithMixinWithFieldMixin implements ResolutionTest {
   test_class_instance() async {
     addTestFile(r'''
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 7519905..b65409d 100644
--- a/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/deprecated_member_use_test.dart
@@ -17,7 +17,7 @@
 @reflectiveTest
 class DeprecatedMemberUseTest extends ResolverTestCase {
   test__methodInvocation_contructor() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @Deprecated('0.9')
   m() {}
@@ -27,7 +27,7 @@
   }
 
   test_call() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @deprecated
   call() {}
@@ -40,7 +40,7 @@
   }
 
   test_compoundAssignment() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @deprecated
   A operator+(A a) { return a; }
@@ -58,13 +58,13 @@
 library deprecated_library;
 class A {}
 ''');
-    assertErrorsInCode('''
+    await assertErrorsInCode('''
 export 'deprecated_library.dart';
 ''', [HintCode.DEPRECATED_MEMBER_USE]);
   }
 
   test_field() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @deprecated
   int x = 1;
@@ -76,7 +76,7 @@
   }
 
   test_getter() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @deprecated
   get m => 1;
@@ -93,14 +93,14 @@
 library deprecated_library;
 class A {}
 ''');
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 import 'deprecated_library.dart';
 f(A a) {}
 ''', [HintCode.DEPRECATED_MEMBER_USE]);
   }
 
   test_inDeprecatedClass() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 @deprecated
 f() {}
 
@@ -114,7 +114,7 @@
   }
 
   test_inDeprecatedField() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 @deprecated
 class C {}
 
@@ -126,7 +126,7 @@
   }
 
   test_inDeprecatedFunction() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 @deprecated
 f() {}
 
@@ -138,7 +138,7 @@
   }
 
   test_inDeprecatedLibrary() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 @deprecated
 library lib;
 
@@ -154,7 +154,7 @@
   }
 
   test_inDeprecatedMethod() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 @deprecated
 f() {}
 
@@ -168,7 +168,7 @@
   }
 
   test_inDeprecatedMethod_inDeprecatedClass() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 @deprecated
 f() {}
 
@@ -183,7 +183,7 @@
   }
 
   test_inDeprecatedMixin() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 @deprecated
 f() {}
 
@@ -197,7 +197,7 @@
   }
 
   test_inDeprecatedTopLevelVariable() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 @deprecated
 class C {}
 
@@ -207,7 +207,7 @@
   }
 
   test_indexExpression() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @deprecated
   operator[](int i) {}
@@ -219,7 +219,7 @@
   }
 
   test_instanceCreation_defaultConstructor() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @deprecated
   A(int i) {}
@@ -231,7 +231,7 @@
   }
 
   test_instanceCreation_namedConstructor() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @deprecated
   A.named(int i) {}
@@ -243,7 +243,7 @@
   }
 
   test_methodInvocation_constant() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @deprecated
   m() {}
@@ -253,7 +253,7 @@
   }
 
   test_operator() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @deprecated
   operator+(A a) {}
@@ -266,7 +266,7 @@
   }
 
   test_parameter_named() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   m({@deprecated int x}) {}
   n() {m(x: 1);}
@@ -275,13 +275,13 @@
   }
 
   test_parameter_named_inDefiningFunction() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 f({@deprecated int x}) => x;
 ''');
   }
 
   test_parameter_named_inDefiningLocalFunction() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 class C {
   m() {
     f({@deprecated int x}) {
@@ -294,7 +294,7 @@
   }
 
   test_parameter_named_inDefiningMethod() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 class C {
   m({@deprecated int x}) {
     return x;
@@ -304,7 +304,7 @@
   }
 
   test_parameter_named_inNestedLocalFunction() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 class C {
   m({@deprecated int x}) {
     f() {
@@ -317,7 +317,7 @@
   }
 
   test_parameter_positional() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   m([@deprecated int x]) {}
   n() {m(1);}
@@ -326,7 +326,7 @@
   }
 
   test_setter() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @deprecated
   set s(v) {}
@@ -338,7 +338,7 @@
   }
 
   test_superConstructor_defaultConstructor() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @deprecated
   A() {}
@@ -350,7 +350,7 @@
   }
 
   test_superConstructor_namedConstructor() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   @deprecated
   A.named() {}
diff --git a/pkg/analyzer/test/src/diagnostics/division_optimization_test.dart b/pkg/analyzer/test/src/diagnostics/division_optimization_test.dart
index 539cdf1..6adfcf2 100644
--- a/pkg/analyzer/test/src/diagnostics/division_optimization_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/division_optimization_test.dart
@@ -17,7 +17,7 @@
 @reflectiveTest
 class DivisionOptimizationTest extends ResolverTestCase {
   test_divisionOptimization() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 f(int x, int y) {
   var v = x / y.toInt();
 }
@@ -25,7 +25,7 @@
   }
 
   test_double() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 f(double x, double y) {
   var v = (x / y).toInt();
 }
@@ -33,7 +33,7 @@
   }
 
   test_dynamic() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 f(x, y) {
   var v = (x / y).toInt();
 }
@@ -41,7 +41,7 @@
   }
 
   test_int() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 f(int x, int y) {
   var v = (x / y).toInt();
 }
@@ -49,7 +49,7 @@
   }
 
   test_nonNumeric() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 class A {
   num operator /(x) { return x; }
 }
@@ -60,7 +60,7 @@
   }
 
   test_wrappedInParentheses() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 f(int x, int y) {
   var v = (((x / y))).toInt();
 }
diff --git a/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart b/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart
new file mode 100644
index 0000000..0630617
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/invalid_assignment_test.dart
@@ -0,0 +1,79 @@
+// 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/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../../generated/resolver_test_case.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(InvalidAssignmentTest);
+    defineReflectiveTests(InvalidAssignmentTest_Driver);
+  });
+}
+
+@reflectiveTest
+class InvalidAssignmentTest extends ResolverTestCase {
+  test_instanceVariable() async {
+    await assertErrorsInCode(r'''
+class A {
+  int x;
+}
+f(var y) {
+  A a;
+  if (y is String) {
+    a.x = y;
+  }
+}
+''', [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
+  }
+
+  test_localVariable() async {
+    await assertErrorsInCode(r'''
+f(var y) {
+  if (y is String) {
+    int x = y;
+  }
+}
+''', [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
+  }
+
+  test_staticVariable() async {
+    await assertErrorsInCode(r'''
+class A {
+  static int x;
+}
+f(var y) {
+  if (y is String) {
+    A.x = y;
+  }
+}
+''', [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
+  }
+
+  test_variableDeclaration() async {
+    // 17971
+    await assertErrorsInCode(r'''
+class Point {
+  final num x, y;
+  Point(this.x, this.y);
+  Point operator +(Point other) {
+    return new Point(x+other.x, y+other.y);
+  }
+}
+main() {
+  var p1 = new Point(0, 0);
+  var p2 = new Point(10, 10);
+  int n = p1 + p2;
+}
+''', [StaticTypeWarningCode.INVALID_ASSIGNMENT]);
+  }
+}
+
+@reflectiveTest
+class InvalidAssignmentTest_Driver extends InvalidAssignmentTest {
+  @override
+  bool get enableNewAnalysisDriver => true;
+}
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 70c22e5..e10b266 100644
--- a/pkg/analyzer/test/src/diagnostics/invalid_required_param_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/invalid_required_param_test.dart
@@ -25,7 +25,7 @@
   }
 
   test_namedParameter_withDefault() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 
 m({@required a = 1}) => null;
@@ -33,7 +33,7 @@
   }
 
   test_positionalParameter_withDefault() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 
 m([@required a = 1]) => null;
@@ -41,7 +41,7 @@
   }
 
   test_ppositionalParameter_noDefault() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 
 m([@required a]) => null;
@@ -49,7 +49,7 @@
   }
 
   test_requiredParameter() async {
-    assertErrorsInCode(r'''
+    await assertErrorsInCode(r'''
 import 'package:meta/meta.dart';
 
 m(@required a) => null;
@@ -57,7 +57,7 @@
   }
 
   test_valid() async {
-    assertNoErrorsInCode(r'''
+    await assertNoErrorsInCode(r'''
 import 'package:meta/meta.dart';
 
 m1() => null;
diff --git a/pkg/analyzer/test/src/diagnostics/test_all.dart b/pkg/analyzer/test/src/diagnostics/test_all.dart
index a0b3585..0be860c 100644
--- a/pkg/analyzer/test/src/diagnostics/test_all.dart
+++ b/pkg/analyzer/test/src/diagnostics/test_all.dart
@@ -8,7 +8,14 @@
 import 'can_be_null_after_null_aware_test.dart' as can_be_null_after_null_aware;
 import 'deprecated_member_use_test.dart' as deprecated_member_use;
 import 'division_optimization_test.dart' as division_optimization;
+import 'invalid_assignment_test.dart' as invalid_assignment;
 import 'invalid_required_param_test.dart' as invalid_required_param;
+import 'unnecessary_cast_test.dart' as unnecessary_cast;
+import 'unused_field_test.dart' as unused_field;
+import 'unused_import_test.dart' as unused_import;
+import 'unused_label_test.dart' as unused_label;
+import 'unused_shown_name_test.dart' as unused_shown_name;
+import 'use_of_void_result_test.dart' as use_of_void_result;
 
 main() {
   defineReflectiveSuite(() {
@@ -16,6 +23,13 @@
     can_be_null_after_null_aware.main();
     deprecated_member_use.main();
     division_optimization.main();
+    invalid_assignment.main();
     invalid_required_param.main();
+    unnecessary_cast.main();
+    unused_field.main();
+    unused_import.main();
+    unused_label.main();
+    unused_shown_name.main();
+    use_of_void_result.main();
   }, name: 'diagnostics');
 }
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
new file mode 100644
index 0000000..507e656
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
@@ -0,0 +1,128 @@
+// 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/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../../generated/resolver_test_case.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(UnnecessaryCastTest);
+    defineReflectiveTests(UnnecessaryCastTest_Driver);
+  });
+}
+
+@reflectiveTest
+class UnnecessaryCastTest extends ResolverTestCase {
+  test_conditionalExpression() async {
+    await assertNoErrorsInCode(r'''
+abstract class I {}
+class A implements I {}
+class B implements I {}
+I m(A a, B b) {
+  return a == null ? b as I : a as I;
+}
+''');
+  }
+
+  test_dynamic_type() async {
+    await assertNoErrorsInCode(r'''
+m(v) {
+  var b = v as Object;
+}
+''');
+  }
+
+  test_function() async {
+    await assertNoErrorsInCode(r'''
+void main() {
+  Function(Null) f = (String x) => x;
+  (f as Function(int))(3); 
+}
+''');
+  }
+
+  test_function2() async {
+    await assertNoErrorsInCode(r'''
+class A {}
+
+class B<T extends A> {
+  void foo() {
+    T Function(T) f;
+    A Function(A) g;
+    g = f as A Function(A);
+  }
+}
+''');
+  }
+
+  test_generics() async {
+    // dartbug.com/18953
+    await assertNoErrorsInCode(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) {});
+}
+''');
+  }
+
+  test_parameter_A() async {
+    // dartbug.com/13855, dartbug.com/13732
+    await assertNoErrorsInCode(r'''
+class A{
+  a() {}
+}
+class B<E> {
+  E e;
+  m() {
+    (e as A).a();
+  }
+}
+''');
+  }
+
+  test_type_dynamic() async {
+    await assertNoErrorsInCode(r'''
+m(v) {
+  var b = Object as dynamic;
+}
+''');
+  }
+
+  test_type_supertype() async {
+    await assertErrorsInCode(r'''
+m(int i) {
+  var b = i as Object;
+}
+''', [HintCode.UNNECESSARY_CAST]);
+  }
+
+  test_type_type() async {
+    await assertErrorsInCode(r'''
+m(num i) {
+  var b = i as num;
+}
+''', [HintCode.UNNECESSARY_CAST]);
+  }
+}
+
+@reflectiveTest
+class UnnecessaryCastTest_Driver extends UnnecessaryCastTest {
+  @override
+  bool get enableNewAnalysisDriver => true;
+
+  @override
+  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_field_test.dart b/pkg/analyzer/test/src/diagnostics/unused_field_test.dart
new file mode 100644
index 0000000..6a60a1b
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/unused_field_test.dart
@@ -0,0 +1,198 @@
+// 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/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../../generated/resolver_test_case.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(UnusedFieldTest);
+    defineReflectiveTests(UnusedFieldTest_Driver);
+  });
+}
+
+@reflectiveTest
+class UnusedFieldTest extends ResolverTestCase {
+  @override
+  bool get enableUnusedElement => true;
+
+  test_unusedField_isUsed_argument() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  int _f = 0;
+  main() {
+    print(++_f);
+  }
+}
+print(x) {}
+''');
+  }
+
+  test_unusedField_isUsed_reference_implicitThis() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  int _f;
+  main() {
+    print(_f);
+  }
+}
+print(x) {}
+''');
+  }
+
+  test_unusedField_isUsed_reference_implicitThis_expressionFunctionBody() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  int _f;
+  m() => _f;
+}
+''');
+  }
+
+  test_unusedField_isUsed_reference_implicitThis_subclass() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  int _f;
+  main() {
+    print(_f);
+  }
+}
+class B extends A {
+  int _f;
+}
+print(x) {}
+''');
+  }
+
+  test_unusedField_isUsed_reference_qualified_propagatedElement() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  int _f;
+}
+main() {
+  var a = new A();
+  print(a._f);
+}
+print(x) {}
+''');
+  }
+
+  test_unusedField_isUsed_reference_qualified_staticElement() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  int _f;
+}
+main() {
+  A a = new A();
+  print(a._f);
+}
+print(x) {}
+''');
+  }
+
+  test_unusedField_isUsed_reference_qualified_unresolved() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  int _f;
+}
+main(a) {
+  print(a._f);
+}
+print(x) {}
+''');
+  }
+
+  test_unusedField_notUsed_compoundAssign() async {
+    await assertErrorsInCode(r'''
+class A {
+  int _f;
+  main() {
+    _f += 2;
+  }
+}
+''', [HintCode.UNUSED_FIELD]);
+  }
+
+  test_unusedField_notUsed_constructorFieldInitializers() async {
+    await assertErrorsInCode(r'''
+class A {
+  int _f;
+  A() : _f = 0;
+}
+''', [HintCode.UNUSED_FIELD]);
+  }
+
+  test_unusedField_notUsed_fieldFormalParameter() async {
+    await assertErrorsInCode(r'''
+class A {
+  int _f;
+  A(this._f);
+}
+''', [HintCode.UNUSED_FIELD]);
+  }
+
+  test_unusedField_notUsed_noReference() async {
+    await assertErrorsInCode(r'''
+class A {
+  int _f;
+}
+''', [HintCode.UNUSED_FIELD]);
+  }
+
+  test_unusedField_notUsed_nullAssign() async {
+    await assertNoErrorsInCode(r'''
+class A {
+  var _f;
+  m() {
+    _f ??= doSomething();
+  }
+}
+doSomething() => 0;
+''');
+  }
+
+  test_unusedField_notUsed_postfixExpr() async {
+    await assertErrorsInCode(r'''
+class A {
+  int _f = 0;
+  main() {
+    _f++;
+  }
+}
+''', [HintCode.UNUSED_FIELD]);
+  }
+
+  test_unusedField_notUsed_prefixExpr() async {
+    await assertErrorsInCode(r'''
+class A {
+  int _f = 0;
+  main() {
+    ++_f;
+  }
+}
+''', [HintCode.UNUSED_FIELD]);
+  }
+
+  test_unusedField_notUsed_simpleAssignment() async {
+    await assertErrorsInCode(r'''
+class A {
+  int _f;
+  m() {
+    _f = 1;
+  }
+}
+main(A a) {
+  a._f = 2;
+}
+''', [HintCode.UNUSED_FIELD]);
+  }
+}
+
+@reflectiveTest
+class UnusedFieldTest_Driver extends UnusedFieldTest {
+  @override
+  bool get enableNewAnalysisDriver => true;
+}
diff --git a/pkg/analyzer/test/src/diagnostics/unused_import_test.dart b/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
new file mode 100644
index 0000000..e930e3e
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
@@ -0,0 +1,321 @@
+// 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/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';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(UnusedImportTest);
+    defineReflectiveTests(UnusedImportTest_Driver);
+  });
+}
+
+@reflectiveTest
+class UnusedImportTest extends ResolverTestCase {
+  test_annotationOnDirective() async {
+    Source source = addSource(r'''
+library L;
+@A()
+import 'lib1.dart';
+''');
+    Source source2 = addNamedSource("/lib1.dart", r'''
+library lib1;
+class A {
+  const A() {}
+}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertErrors(source);
+    verify([source, source2]);
+  }
+
+  test_as() async {
+    Source source = addSource(r'''
+library L;
+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]);
+  }
+
+  test_as_equalPrefixes_referenced() async {
+    // 18818
+    Source source = addSource(r'''
+library L;
+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;
+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]);
+  }
+
+  test_core_library() async {
+    Source source = addSource(r'''
+library L;
+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;
+export 'lib2.dart';
+class One {}
+''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+class Two {}
+''');
+    await computeAnalysisResult(source);
+    assertNoErrors(source);
+    verify([source]);
+  }
+
+  test_export2() async {
+    Source source = addSource(r'''
+library L;
+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;
+export 'lib2.dart';
+class One {}
+''');
+    addNamedSource("/lib2.dart", r'''
+library lib2;
+export 'lib3.dart';
+class Two {}
+''');
+    addNamedSource("/lib3.dart", r'''
+library lib3;
+export 'lib2.dart';
+class Three {}
+''');
+    await computeAnalysisResult(source);
+    assertNoErrors(source);
+    verify([source]);
+  }
+
+  test_hide() async {
+    Source source = addSource(r'''
+library L;
+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]);
+  }
+
+  test_inComment_libraryDirective() async {
+    Source source = addSource(r'''
+/// Use [Future] class.
+library L;
+import 'dart:async';
+''');
+    await computeAnalysisResult(source);
+    assertNoErrors(source);
+  }
+
+  test_metadata() async {
+    Source source = addSource(r'''
+library L;
+@A(x)
+import 'lib1.dart';
+class A {
+  final int value;
+  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;
+import 'lib1.dart' hide topLevelFunction;
+import 'lib1.dart' as one show topLevelFunction;
+class A {
+  static void x() {
+    One o;
+    one.topLevelFunction();
+  }
+}
+''');
+    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;
+import 'lib1.dart' hide topLevelFunction;
+import 'lib1.dart' as one show topLevelFunction;
+import 'lib1.dart' as two show topLevelFunction;
+class A {
+  static void x() {
+    One o;
+    one.topLevelFunction();
+    two.topLevelFunction();
+  }
+}
+''');
+    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;
+class A {}
+class B {}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertErrors(source, [HintCode.UNUSED_IMPORT]);
+    assertNoErrors(source2);
+    verify([source, source2]);
+  }
+
+  test_unusedImport() async {
+    Source source = addSource(r'''
+library L;
+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]);
+  }
+}
+
+@reflectiveTest
+class UnusedImportTest_Driver extends UnusedImportTest {
+  @override
+  bool get enableNewAnalysisDriver => true;
+}
diff --git a/pkg/analyzer/test/src/diagnostics/unused_label_test.dart b/pkg/analyzer/test/src/diagnostics/unused_label_test.dart
new file mode 100644
index 0000000..7609554
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/unused_label_test.dart
@@ -0,0 +1,70 @@
+// 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/src/error/codes.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../../generated/resolver_test_case.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(UnusedLabelTest);
+    defineReflectiveTests(UnusedLabelTest_Driver);
+  });
+}
+
+@reflectiveTest
+class UnusedLabelTest extends ResolverTestCase {
+  test_unused_inSwitch() async {
+    await assertErrorsInCode(r'''
+f(x) {
+  switch (x) {
+    label: case 0:
+      break;
+    default:
+      break;
+  }
+}
+''', [HintCode.UNUSED_LABEL]);
+  }
+
+  test_unused_onWhile() async {
+    await assertErrorsInCode(r'''
+f(condition()) {
+  label: while (condition()) {
+    break;
+  }
+}
+''', [HintCode.UNUSED_LABEL]);
+  }
+
+  test_used_inSwitch() async {
+    await assertNoErrorsInCode(r'''
+f(x) {
+  switch (x) {
+    label: case 0:
+      break;
+    default:
+      continue label;
+  }
+}
+''');
+  }
+
+  test_used_onWhile() async {
+    await assertNoErrorsInCode(r'''
+f(condition()) {
+  label: while (condition()) {
+    break label;
+  }
+}
+''');
+  }
+}
+
+@reflectiveTest
+class UnusedLabelTest_Driver extends UnusedLabelTest {
+  @override
+  bool get enableNewAnalysisDriver => true;
+}
diff --git a/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart b/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart
new file mode 100644
index 0000000..8fba003
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart
@@ -0,0 +1,107 @@
+// 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/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';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(UnusedShownNameTest);
+    defineReflectiveTests(UnusedShownNameTest_Driver);
+  });
+}
+
+@reflectiveTest
+class UnusedShownNameTest extends ResolverTestCase {
+  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;
+class A {}
+class B {}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]);
+    assertNoErrors(source2);
+    verify([source, source2]);
+  }
+
+  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;
+class A {}
+class B {}
+''');
+    await computeAnalysisResult(source);
+    await computeAnalysisResult(source2);
+    assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]);
+    assertNoErrors(source2);
+    verify([source, source2]);
+  }
+
+  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;
+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]);
+  }
+
+  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;
+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]);
+  }
+}
+
+@reflectiveTest
+class UnusedShownNameTest_Driver extends UnusedShownNameTest {
+  @override
+  bool get enableNewAnalysisDriver => true;
+}
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
new file mode 100644
index 0000000..f44a502
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart
@@ -0,0 +1,43 @@
+// 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:test_reflective_loader/test_reflective_loader.dart';
+
+import '../../generated/resolver_test_case.dart';
+
+main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(UseOfVoidResultTest);
+    defineReflectiveTests(UseOfVoidResultTest_Driver);
+  });
+}
+
+@reflectiveTest
+class UseOfVoidResultTest extends ResolverTestCase {
+  test_implicitReturnValue() async {
+    await assertNoErrorsInCode(r'''
+f() {}
+class A {
+  n() {
+    var a = f();
+  }
+}
+''');
+  }
+
+  test_nonVoidReturnValue() async {
+    await assertNoErrorsInCode(r'''
+int f() => 1;
+g() {
+  var a = f();
+}
+''');
+  }
+}
+
+@reflectiveTest
+class UseOfVoidResultTest_Driver extends UseOfVoidResultTest {
+  @override
+  bool get enableNewAnalysisDriver => true;
+}