Convert the remaining diagnostics tests to test for location

Change-Id: I00fef7e7228bbe6d63c48267f42b5efc4900556d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105414
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_key_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_key_test.dart
index 5d865e5..0f7a698 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_key_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_key_test.dart
@@ -19,34 +19,44 @@
 @reflectiveTest
 class NonConstantMapKeyTest extends DriverResolutionTest {
   test_const_ifElement_thenTrue_elseFinal() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         r'''
 final dynamic a = 0;
 const cond = true;
 var v = const {if (cond) 0: 1 else a : 0};
 ''',
         analysisOptions.experimentStatus.constant_update_2018
-            ? [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY]
-            : [CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT]);
+            ? [
+                error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 75, 1),
+              ]
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 55, 25),
+              ]);
   }
 
   test_const_ifElement_thenTrue_thenFinal() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         r'''
 final dynamic a = 0;
 const cond = true;
 var v = const {if (cond) a : 0};
 ''',
         analysisOptions.experimentStatus.constant_update_2018
-            ? [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY]
-            : [CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT]);
+            ? [
+                error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 65, 1),
+              ]
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 55, 15),
+              ]);
   }
 
   test_const_topLevel() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 final dynamic a = 0;
 var v = const {a : 0};
-''', [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_KEY, 36, 1),
+    ]);
   }
 }
 
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_value_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_value_from_deferred_library_test.dart
index 5e1e315..d116bb9 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_value_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_value_from_deferred_library_test.dart
@@ -24,17 +24,20 @@
     // reports wrong error code
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const int c = 1;''');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 const cond = true;
 var v = const { if (cond) 'a': 'b' else 'c' : a.c};
-''', [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY,
+          99, 3),
+    ]);
   }
 
   test_const_ifElement_thenTrue_thenDeferred() async {
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const int c = 1;''');
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         r'''
 import 'lib1.dart' deferred as a;
 const cond = true;
@@ -42,28 +45,39 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                CompileTimeErrorCode
-                    .NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY
+                error(
+                    CompileTimeErrorCode
+                        .NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY,
+                    85,
+                    3),
               ]
-            : [CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 69, 19),
+              ]);
   }
 
   test_const_topLevel_deferred() async {
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const int c = 1;''');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 var v = const {'a' : a.c};
-''', [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY,
+          55, 3),
+    ]);
   }
 
   test_const_topLevel_deferred_nested() async {
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const int c = 1;''');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 var v = const {'a' : a.c + 1};
-''', [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE_FROM_DEFERRED_LIBRARY,
+          55, 7),
+    ]);
   }
 }
 
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_map_value_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_map_value_test.dart
index eb75842..a448d9c 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_map_value_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_map_value_test.dart
@@ -19,37 +19,45 @@
 @reflectiveTest
 class NonConstantMapValueTest extends DriverResolutionTest {
   test_const_ifTrue_elseFinal() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         r'''
 final dynamic a = 0;
 const cond = true;
 var v = const {if (cond) 'a': 'b', 'c' : a};
 ''',
         analysisOptions.experimentStatus.constant_update_2018
-            ? [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE]
+            ? [
+                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 81, 1),
+              ]
             : [
-                CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE,
-                CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT
+                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 55, 18),
+                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 81, 1),
               ]);
   }
 
   test_const_ifTrue_thenFinal() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         r'''
 final dynamic a = 0;
 const cond = true;
 var v = const {if (cond) 'a' : a};
 ''',
         analysisOptions.experimentStatus.constant_update_2018
-            ? [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE]
-            : [CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT]);
+            ? [
+                error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 71, 1),
+              ]
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 55, 17),
+              ]);
   }
 
   test_const_topLevel() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 final dynamic a = 0;
 var v = const {'a' : a};
-''', [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE, 42, 1),
+    ]);
   }
 }
 
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_set_element_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_set_element_from_deferred_library_test.dart
index f4d6ff7..7dd39c4 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_set_element_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_set_element_from_deferred_library_test.dart
@@ -25,17 +25,20 @@
     // reports wrong error code
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const int c = 1;''');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 const cond = true;
 var v = const {if (cond) null else a.c};
-''', [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT_FROM_DEFERRED_LIBRARY]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT_FROM_DEFERRED_LIBRARY,
+          88, 3),
+    ]);
   }
 
   test_const_ifElement_thenTrue_thenDeferred() async {
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const int c = 1;''');
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         r'''
 import 'lib1.dart' deferred as a;
 const cond = true;
@@ -43,28 +46,39 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                CompileTimeErrorCode
-                    .NON_CONSTANT_SET_ELEMENT_FROM_DEFERRED_LIBRARY
+                error(
+                    CompileTimeErrorCode
+                        .NON_CONSTANT_SET_ELEMENT_FROM_DEFERRED_LIBRARY,
+                    78,
+                    3),
               ]
-            : [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 68, 13),
+              ]);
   }
 
   test_const_topLevel_deferred() async {
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const int c = 1;''');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 var v = const {a.c};
-''', [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT_FROM_DEFERRED_LIBRARY]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT_FROM_DEFERRED_LIBRARY,
+          49, 3),
+    ]);
   }
 
   test_const_topLevel_deferred_nested() async {
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const int c = 1;''');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' deferred as a;
 var v = const {a.c + 1};
-''', [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT_FROM_DEFERRED_LIBRARY]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT_FROM_DEFERRED_LIBRARY,
+          49, 7),
+    ]);
   }
 }
 
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_set_element_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_set_element_test.dart
index cb461c7..7793685 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_set_element_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_set_element_test.dart
@@ -19,88 +19,152 @@
 @reflectiveTest
 class NonConstantSetElementTest extends DriverResolutionTest {
   test_const_ifElement_thenElseFalse_finalElse() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode(
+        '''
 final dynamic a = 0;
 var v = const <int>{if (1 < 0) 0 else a};
-''', [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+''',
+        analysisOptions.experimentStatus.constant_update_2018
+            ? [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 59, 1),
+              ]
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 19),
+              ]);
   }
 
   test_const_ifElement_thenElseFalse_finalThen() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode(
+        '''
 final dynamic a = 0;
 var v = const <int>{if (1 < 0) a else 0};
-''', [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+''',
+        analysisOptions.experimentStatus.constant_update_2018
+            ? [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 52, 1),
+              ]
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 19),
+              ]);
   }
 
   test_const_ifElement_thenElseTrue_finalElse() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode(
+        '''
 final dynamic a = 0;
 var v = const <int>{if (1 > 0) 0 else a};
-''', [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+''',
+        analysisOptions.experimentStatus.constant_update_2018
+            ? [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 59, 1),
+              ]
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 19),
+              ]);
   }
 
   test_const_ifElement_thenElseTrue_finalThen() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode(
+        '''
 final dynamic a = 0;
 var v = const <int>{if (1 > 0) a else 0};
-''', [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+''',
+        analysisOptions.experimentStatus.constant_update_2018
+            ? [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 52, 1),
+              ]
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 19),
+              ]);
   }
 
   test_const_ifElement_thenFalse_constThen() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         '''
 const dynamic a = 0;
 var v = const <int>{if (1 < 0) a};
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? []
-            : [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 12),
+              ]);
   }
 
   test_const_ifElement_thenFalse_finalThen() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode(
+        '''
 final dynamic a = 0;
 var v = const <int>{if (1 < 0) a};
-''', [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+''',
+        analysisOptions.experimentStatus.constant_update_2018
+            ? [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 52, 1),
+              ]
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 12),
+              ]);
   }
 
   test_const_ifElement_thenTrue_constThen() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         '''
 const dynamic a = 0;
 var v = const <int>{if (1 > 0) a};
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? []
-            : [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 12),
+              ]);
   }
 
   test_const_ifElement_thenTrue_finalThen() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode(
+        '''
 final dynamic a = 0;
 var v = const <int>{if (1 > 0) a};
-''', [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+''',
+        analysisOptions.experimentStatus.constant_update_2018
+            ? [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 52, 1),
+              ]
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 12),
+              ]);
   }
 
   test_const_parameter() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 f(a) {
   return const {a};
-}''', [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+}''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 23, 1),
+    ]);
   }
 
   test_const_spread_final() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(
+        r'''
 final Set x = null;
 var v = const {...x};
-''', [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+''',
+        analysisOptions.experimentStatus.constant_update_2018
+            ? [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 38, 1),
+              ]
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 35, 4),
+              ]);
   }
 
   test_const_topVar() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 final dynamic a = 0;
 var v = const <int>{a};
-''', [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+''', [
+      error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 1),
+    ]);
   }
 
   test_nonConst_topVar() async {
diff --git a/pkg/analyzer/test/src/diagnostics/non_constant_spread_expression_from_deferred_library_test.dart b/pkg/analyzer/test/src/diagnostics/non_constant_spread_expression_from_deferred_library_test.dart
index ac6d136..b8ad8b4 100644
--- a/pkg/analyzer/test/src/diagnostics/non_constant_spread_expression_from_deferred_library_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/non_constant_spread_expression_from_deferred_library_test.dart
@@ -23,7 +23,7 @@
   test_inList_deferred() async {
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const List c = [];''');
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         r'''
 import 'lib1.dart' deferred as a;
 f() {
@@ -31,10 +31,15 @@
 }''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                CompileTimeErrorCode
-                    .NON_CONSTANT_SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY
+                error(
+                    CompileTimeErrorCode
+                        .NON_CONSTANT_SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY,
+                    59,
+                    3),
               ]
-            : [CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 56, 6),
+              ]);
   }
 
   test_inList_deferred_notConst() async {
@@ -50,7 +55,7 @@
   test_inList_notDeferred() async {
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const List c = [];''');
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         r'''
 import 'lib1.dart' as a;
 f() {
@@ -58,13 +63,15 @@
 }''',
         analysisOptions.experimentStatus.constant_update_2018
             ? []
-            : [CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT, 47, 6),
+              ]);
   }
 
   test_inMap_deferred() async {
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const Map c = <int, int>{};''');
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         r'''
 import 'lib1.dart' deferred as a;
 f() {
@@ -72,10 +79,15 @@
 }''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                CompileTimeErrorCode
-                    .NON_CONSTANT_SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY
+                error(
+                    CompileTimeErrorCode
+                        .NON_CONSTANT_SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY,
+                    59,
+                    3),
               ]
-            : [CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 56, 6),
+              ]);
   }
 
   test_inMap_notConst() async {
@@ -91,7 +103,7 @@
   test_inMap_notDeferred() async {
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const Map c = <int, int>{};''');
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         r'''
 import 'lib1.dart' as a;
 f() {
@@ -99,13 +111,15 @@
 }''',
         analysisOptions.experimentStatus.constant_update_2018
             ? []
-            : [CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_MAP_ELEMENT, 47, 6),
+              ]);
   }
 
   test_inSet_deferred() async {
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const Set c = <int>{};''');
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         r'''
 import 'lib1.dart' deferred as a;
 f() {
@@ -113,10 +127,15 @@
 }''',
         analysisOptions.experimentStatus.constant_update_2018
             ? [
-                CompileTimeErrorCode
-                    .NON_CONSTANT_SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY
+                error(
+                    CompileTimeErrorCode
+                        .NON_CONSTANT_SPREAD_EXPRESSION_FROM_DEFERRED_LIBRARY,
+                    59,
+                    3),
               ]
-            : [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 56, 6),
+              ]);
   }
 
   test_inSet_notConst() async {
@@ -132,7 +151,7 @@
   test_inSet_notDeferred() async {
     newFile(convertPath('/test/lib/lib1.dart'), content: r'''
 const Set c = <int>{};''');
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         r'''
 import 'lib1.dart' as a;
 f() {
@@ -140,7 +159,9 @@
 }''',
         analysisOptions.experimentStatus.constant_update_2018
             ? []
-            : [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 47, 6),
+              ]);
   }
 }
 
diff --git a/pkg/analyzer/test/src/diagnostics/not_iterable_spread_test.dart b/pkg/analyzer/test/src/diagnostics/not_iterable_spread_test.dart
index 129bb73..4b774e1 100644
--- a/pkg/analyzer/test/src/diagnostics/not_iterable_spread_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_iterable_spread_test.dart
@@ -29,30 +29,39 @@
   }
 
   test_notIterable_direct() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var a = 0;
 var v = [...a];
-''', [CompileTimeErrorCode.NOT_ITERABLE_SPREAD]);
+''', [
+      error(CompileTimeErrorCode.NOT_ITERABLE_SPREAD, 23, 1),
+    ]);
   }
 
   test_notIterable_forElement() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var a = 0;
 var v = [for (var i in []) ...a];
-''', [CompileTimeErrorCode.NOT_ITERABLE_SPREAD]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 29, 1),
+      error(CompileTimeErrorCode.NOT_ITERABLE_SPREAD, 41, 1),
+    ]);
   }
 
   test_notIterable_ifElement_else() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var a = 0;
 var v = [if (1 > 0) ...[] else ...a];
-''', [CompileTimeErrorCode.NOT_ITERABLE_SPREAD]);
+''', [
+      error(CompileTimeErrorCode.NOT_ITERABLE_SPREAD, 45, 1),
+    ]);
   }
 
   test_notIterable_ifElement_then() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var a = 0;
 var v = [if (1 > 0) ...a];
-''', [CompileTimeErrorCode.NOT_ITERABLE_SPREAD]);
+''', [
+      error(CompileTimeErrorCode.NOT_ITERABLE_SPREAD, 34, 1),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/not_map_spread_test.dart b/pkg/analyzer/test/src/diagnostics/not_map_spread_test.dart
index d5142c1..2f7e415 100644
--- a/pkg/analyzer/test/src/diagnostics/not_map_spread_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_map_spread_test.dart
@@ -29,30 +29,39 @@
   }
 
   test_notMap_direct() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var a = 0;
 var v = <int, int>{...a};
-''', [CompileTimeErrorCode.NOT_MAP_SPREAD]);
+''', [
+      error(CompileTimeErrorCode.NOT_MAP_SPREAD, 33, 1),
+    ]);
   }
 
   test_notMap_forElement() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var a = 0;
 var v = <int, int>{for (var i in []) ...a};
-''', [CompileTimeErrorCode.NOT_MAP_SPREAD]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 39, 1),
+      error(CompileTimeErrorCode.NOT_MAP_SPREAD, 51, 1),
+    ]);
   }
 
   test_notMap_ifElement_else() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var a = 0;
 var v = <int, int>{if (1 > 0) ...<int, int>{} else ...a};
-''', [CompileTimeErrorCode.NOT_MAP_SPREAD]);
+''', [
+      error(CompileTimeErrorCode.NOT_MAP_SPREAD, 65, 1),
+    ]);
   }
 
   test_notMap_ifElement_then() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var a = 0;
 var v = <int, int>{if (1 > 0) ...a};
-''', [CompileTimeErrorCode.NOT_MAP_SPREAD]);
+''', [
+      error(CompileTimeErrorCode.NOT_MAP_SPREAD, 44, 1),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/not_null_aware_null_spread_test.dart b/pkg/analyzer/test/src/diagnostics/not_null_aware_null_spread_test.dart
index 56bcd2c..115ffde 100644
--- a/pkg/analyzer/test/src/diagnostics/not_null_aware_null_spread_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/not_null_aware_null_spread_test.dart
@@ -16,16 +16,20 @@
 @reflectiveTest
 class NotNullAwareNullSpreadTest extends DriverResolutionTest {
   test_listLiteral_notNullAware_nullLiteral() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var v = [...null];
-''', [CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD]);
+''', [
+      error(CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD, 12, 4),
+    ]);
   }
 
   test_listLiteral_notNullAware_nullTyped() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 Null a = null;
 var v = [...a];
-''', [CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD]);
+''', [
+      error(CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD, 27, 1),
+    ]);
   }
 
   test_listLiteral_nullAware_nullLiteral() async {
@@ -42,16 +46,20 @@
   }
 
   test_mapLiteral_notNullAware_nullLiteral() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var v = <int, int>{...null};
-''', [CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD]);
+''', [
+      error(CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD, 22, 4),
+    ]);
   }
 
   test_mapLiteral_notNullAware_nullType() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 Null a = null;
 var v = <int, int>{...a};
-''', [CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD]);
+''', [
+      error(CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD, 37, 1),
+    ]);
   }
 
   test_mapLiteral_nullAware_nullLiteral() async {
@@ -68,16 +76,20 @@
   }
 
   test_setLiteral_notNullAware_nullLiteral() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var v = <int>{...null};
-''', [CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD]);
+''', [
+      error(CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD, 17, 4),
+    ]);
   }
 
   test_setLiteral_notNullAware_nullTyped() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 Null a = null;
 var v = <int>{...a};
-''', [CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD]);
+''', [
+      error(CompileTimeErrorCode.NOT_NULL_AWARE_NULL_SPREAD, 32, 1),
+    ]);
   }
 
   test_setLiteral_nullAware_nullLiteral() async {
diff --git a/pkg/analyzer/test/src/diagnostics/null_aware_before_operator_test.dart b/pkg/analyzer/test/src/diagnostics/null_aware_before_operator_test.dart
index 7f89a71..6b5be07 100644
--- a/pkg/analyzer/test/src/diagnostics/null_aware_before_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/null_aware_before_operator_test.dart
@@ -48,11 +48,13 @@
   }
 
   test_minus() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   x?.a - '';
 }
-''', [HintCode.NULL_AWARE_BEFORE_OPERATOR]);
+''', [
+      error(HintCode.NULL_AWARE_BEFORE_OPERATOR, 9, 4),
+    ]);
   }
 
   test_not_equal() async {
diff --git a/pkg/analyzer/test/src/diagnostics/null_aware_in_condition_test.dart b/pkg/analyzer/test/src/diagnostics/null_aware_in_condition_test.dart
index 89203f2..c057732 100644
--- a/pkg/analyzer/test/src/diagnostics/null_aware_in_condition_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/null_aware_in_condition_test.dart
@@ -16,58 +16,72 @@
 @reflectiveTest
 class NullAwareInConditionTest extends DriverResolutionTest {
   test_assert() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   assert (x?.a);
 }
-''', [HintCode.NULL_AWARE_IN_CONDITION]);
+''', [
+      error(HintCode.NULL_AWARE_IN_CONDITION, 17, 4),
+    ]);
   }
 
   test_conditionalExpression() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   return x?.a ? 0 : 1;
 }
-''', [HintCode.NULL_AWARE_IN_CONDITION]);
+''', [
+      error(HintCode.NULL_AWARE_IN_CONDITION, 16, 4),
+    ]);
   }
 
   test_do() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   do {} while (x?.a);
 }
-''', [HintCode.NULL_AWARE_IN_CONDITION]);
+''', [
+      error(HintCode.NULL_AWARE_IN_CONDITION, 22, 4),
+    ]);
   }
 
   test_for() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   for (var v = x; v?.a; v = v.next) {}
 }
-''', [HintCode.NULL_AWARE_IN_CONDITION]);
+''', [
+      error(HintCode.NULL_AWARE_IN_CONDITION, 25, 4),
+    ]);
   }
 
   test_if() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   if (x?.a) {}
 }
-''', [HintCode.NULL_AWARE_IN_CONDITION]);
+''', [
+      error(HintCode.NULL_AWARE_IN_CONDITION, 13, 4),
+    ]);
   }
 
   test_if_parenthesized() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   if ((x?.a)) {}
 }
-''', [HintCode.NULL_AWARE_IN_CONDITION]);
+''', [
+      error(HintCode.NULL_AWARE_IN_CONDITION, 13, 6),
+    ]);
   }
 
   test_while() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   while (x?.a) {}
 }
-''', [HintCode.NULL_AWARE_IN_CONDITION]);
+''', [
+      error(HintCode.NULL_AWARE_IN_CONDITION, 16, 4),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/null_aware_in_logical_operator_test.dart b/pkg/analyzer/test/src/diagnostics/null_aware_in_logical_operator_test.dart
index b60810e..d445199 100644
--- a/pkg/analyzer/test/src/diagnostics/null_aware_in_logical_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/null_aware_in_logical_operator_test.dart
@@ -16,51 +16,63 @@
 @reflectiveTest
 class NullAwareInLogicalOperatorTest extends DriverResolutionTest {
   test_conditionalAnd_first() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   x?.a && x.b;
 }
-''', [HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR]);
+''', [
+      error(HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR, 9, 4),
+    ]);
   }
 
   test_conditionalAnd_second() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   x.a && x?.b;
 }
-''', [HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR]);
+''', [
+      error(HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR, 16, 4),
+    ]);
   }
 
   test_conditionalAnd_third() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   x.a && x.b && x?.c;
 }
-''', [HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR]);
+''', [
+      error(HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR, 23, 4),
+    ]);
   }
 
   test_conditionalOr_first() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   x?.a || x.b;
 }
-''', [HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR]);
+''', [
+      error(HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR, 9, 4),
+    ]);
   }
 
   test_conditionalOr_second() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   x.a || x?.b;
 }
-''', [HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR]);
+''', [
+      error(HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR, 16, 4),
+    ]);
   }
 
   test_conditionalOr_third() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   x.a || x.b || x?.c;
 }
-''', [HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR]);
+''', [
+      error(HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR, 23, 4),
+    ]);
   }
 
   test_for_noCondition() async {
@@ -80,10 +92,12 @@
   }
 
   test_not() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(x) {
   !x?.a;
 }
-''', [HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR]);
+''', [
+      error(HintCode.NULL_AWARE_IN_LOGICAL_OPERATOR, 10, 4),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/nullable_type_in_extends_clause_test.dart b/pkg/analyzer/test/src/diagnostics/nullable_type_in_extends_clause_test.dart
index 2478d79..b2f454b 100644
--- a/pkg/analyzer/test/src/diagnostics/nullable_type_in_extends_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/nullable_type_in_extends_clause_test.dart
@@ -29,10 +29,12 @@
   }
 
   test_class_nullable() async {
-    assertErrorCodesInCode('''
+    assertErrorsInCode('''
 class A {}
 class B extends A? {}
-''', [CompileTimeErrorCode.NULLABLE_TYPE_IN_EXTENDS_CLAUSE]);
+''', [
+      error(CompileTimeErrorCode.NULLABLE_TYPE_IN_EXTENDS_CLAUSE, 27, 2),
+    ]);
   }
 
   test_classAlias_withClass_nonNullable() async {
@@ -44,11 +46,13 @@
   }
 
   test_classAlias_withClass_nullable() async {
-    assertErrorCodesInCode('''
+    assertErrorsInCode('''
 class A {}
 class B {}
 class C = A? with B;
-''', [CompileTimeErrorCode.NULLABLE_TYPE_IN_EXTENDS_CLAUSE]);
+''', [
+      error(CompileTimeErrorCode.NULLABLE_TYPE_IN_EXTENDS_CLAUSE, 32, 2),
+    ]);
   }
 
   test_classAlias_withMixin_nonNullable() async {
@@ -60,10 +64,12 @@
   }
 
   test_classAlias_withMixin_nullable() async {
-    assertErrorCodesInCode('''
+    assertErrorsInCode('''
 class A {}
 mixin B {}
 class C = A? with B;
-''', [CompileTimeErrorCode.NULLABLE_TYPE_IN_EXTENDS_CLAUSE]);
+''', [
+      error(CompileTimeErrorCode.NULLABLE_TYPE_IN_EXTENDS_CLAUSE, 32, 2),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/nullable_type_in_implements_clause_test.dart b/pkg/analyzer/test/src/diagnostics/nullable_type_in_implements_clause_test.dart
index ec81d73..39ffb8e 100644
--- a/pkg/analyzer/test/src/diagnostics/nullable_type_in_implements_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/nullable_type_in_implements_clause_test.dart
@@ -29,10 +29,12 @@
   }
 
   test_class_nullable() async {
-    assertErrorCodesInCode('''
+    assertErrorsInCode('''
 class A {}
 class B implements A? {}
-''', [CompileTimeErrorCode.NULLABLE_TYPE_IN_IMPLEMENTS_CLAUSE]);
+''', [
+      error(CompileTimeErrorCode.NULLABLE_TYPE_IN_IMPLEMENTS_CLAUSE, 30, 2),
+    ]);
   }
 
   test_mixin_nonNullable() async {
@@ -43,9 +45,11 @@
   }
 
   test_mixin_nullable() async {
-    assertErrorCodesInCode('''
+    assertErrorsInCode('''
 class A {}
 mixin B implements A? {}
-''', [CompileTimeErrorCode.NULLABLE_TYPE_IN_IMPLEMENTS_CLAUSE]);
+''', [
+      error(CompileTimeErrorCode.NULLABLE_TYPE_IN_IMPLEMENTS_CLAUSE, 30, 2),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/nullable_type_in_on_clause_test.dart b/pkg/analyzer/test/src/diagnostics/nullable_type_in_on_clause_test.dart
index d9613ee..60e319a 100644
--- a/pkg/analyzer/test/src/diagnostics/nullable_type_in_on_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/nullable_type_in_on_clause_test.dart
@@ -29,9 +29,11 @@
   }
 
   test_nullable() async {
-    assertErrorCodesInCode('''
+    assertErrorsInCode('''
 class A {}
 mixin B on A? {}
-''', [CompileTimeErrorCode.NULLABLE_TYPE_IN_ON_CLAUSE]);
+''', [
+      error(CompileTimeErrorCode.NULLABLE_TYPE_IN_ON_CLAUSE, 22, 2),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/nullable_type_in_with_clause_test.dart b/pkg/analyzer/test/src/diagnostics/nullable_type_in_with_clause_test.dart
index d25ad1f..c05909c 100644
--- a/pkg/analyzer/test/src/diagnostics/nullable_type_in_with_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/nullable_type_in_with_clause_test.dart
@@ -29,10 +29,12 @@
   }
 
   test_class_nullable() async {
-    assertErrorCodesInCode('''
+    assertErrorsInCode('''
 class A {}
 class B with A? {}
-''', [CompileTimeErrorCode.NULLABLE_TYPE_IN_WITH_CLAUSE]);
+''', [
+      error(CompileTimeErrorCode.NULLABLE_TYPE_IN_WITH_CLAUSE, 24, 2),
+    ]);
   }
 
   test_classAlias_withClass_nonNullable() async {
@@ -44,11 +46,13 @@
   }
 
   test_classAlias_withClass_nullable() async {
-    assertErrorCodesInCode('''
+    assertErrorsInCode('''
 class A {}
 class B {}
 class C = A with B?;
-''', [CompileTimeErrorCode.NULLABLE_TYPE_IN_WITH_CLAUSE]);
+''', [
+      error(CompileTimeErrorCode.NULLABLE_TYPE_IN_WITH_CLAUSE, 39, 2),
+    ]);
   }
 
   test_classAlias_withMixin_nonNullable() async {
@@ -60,10 +64,12 @@
   }
 
   test_classAlias_withMixin_nullable() async {
-    assertErrorCodesInCode('''
+    assertErrorsInCode('''
 class A {}
 mixin B {}
 class C = A with B?;
-''', [CompileTimeErrorCode.NULLABLE_TYPE_IN_WITH_CLAUSE]);
+''', [
+      error(CompileTimeErrorCode.NULLABLE_TYPE_IN_WITH_CLAUSE, 39, 2),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/override_equals_but_not_hashcode_test.dart b/pkg/analyzer/test/src/diagnostics/override_equals_but_not_hashcode_test.dart
index 7ecb535..7def0c4 100644
--- a/pkg/analyzer/test/src/diagnostics/override_equals_but_not_hashcode_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/override_equals_but_not_hashcode_test.dart
@@ -25,9 +25,11 @@
 
   @failingTest
   test_overrideEquals_andNotHashCode() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   bool operator ==(x) {}
-}''', [HintCode.OVERRIDE_EQUALS_BUT_NOT_HASH_CODE]);
+}''', [
+      error(HintCode.OVERRIDE_EQUALS_BUT_NOT_HASH_CODE, 6, 1),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_field_test.dart b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_field_test.dart
index 514ad99..2a978fe 100644
--- a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_field_test.dart
@@ -16,7 +16,7 @@
 @reflectiveTest
 class OverrideOnNonOverridingFieldTest extends DriverResolutionTest {
   test_inInterface() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   int get a => 0;
   void set b(_) {}
@@ -29,11 +29,13 @@
   int b;
   @override
   int c;
-}''', [CompileTimeErrorCode.INVALID_OVERRIDE]);
+}''', [
+      error(CompileTimeErrorCode.INVALID_OVERRIDE, 126, 5),
+    ]);
   }
 
   test_inSuperclass() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   int get a => 0;
   void set b(_) {}
@@ -46,16 +48,20 @@
   int b;
   @override
   int c;
-}''', [CompileTimeErrorCode.INVALID_OVERRIDE]);
+}''', [
+      error(CompileTimeErrorCode.INVALID_OVERRIDE, 123, 5),
+    ]);
   }
 
   test_invalid() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
 }
 class B extends A {
   @override
   final int m = 1;
-}''', [HintCode.OVERRIDE_ON_NON_OVERRIDING_FIELD]);
+}''', [
+      error(HintCode.OVERRIDE_ON_NON_OVERRIDING_FIELD, 56, 1),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_getter_test.dart b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_getter_test.dart
index 58dfef6..3a3345c 100644
--- a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_getter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_getter_test.dart
@@ -38,12 +38,14 @@
   }
 
   test_invalid() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
 }
 class B extends A {
   @override
   int get m => 1;
-}''', [HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER]);
+}''', [
+      error(HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER, 54, 1),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_method_test.dart b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_method_test.dart
index 608295d..19a2cbd 100644
--- a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_method_test.dart
@@ -65,12 +65,14 @@
   }
 
   test_invalid() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
 }
 class B extends A {
   @override
   int m() => 1;
-}''', [HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD]);
+}''', [
+      error(HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD, 50, 1),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_setter_test.dart b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_setter_test.dart
index 0625741..748aa24 100644
--- a/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/override_on_non_overriding_setter_test.dart
@@ -38,12 +38,14 @@
   }
 
   test_invalid() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
 }
 class B extends A {
   @override
   set m(int x) {}
-}''', [HintCode.OVERRIDE_ON_NON_OVERRIDING_SETTER]);
+}''', [
+      error(HintCode.OVERRIDE_ON_NON_OVERRIDING_SETTER, 50, 1),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_constraint_verifier_support.dart b/pkg/analyzer/test/src/diagnostics/sdk_constraint_verifier_support.dart
index feb02f5..8bd294a 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_constraint_verifier_support.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_constraint_verifier_support.dart
@@ -2,10 +2,10 @@
 // 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/error/error.dart';
 import 'package:pub_semver/pub_semver.dart';
 
 import '../dart/resolution/driver_resolution.dart';
+import '../../generated/test_support.dart';
 
 /// A base class designed to be used by tests of the hints produced by the
 /// SdkConstraintVerifier.
@@ -13,10 +13,10 @@
   /// Verify that the [errorCodes] are produced if the [source] is analyzed in
   /// a context that specifies the minimum SDK version to be [version].
   verifyVersion(String version, String source,
-      {List<ErrorCode> errorCodes}) async {
+      {List<ExpectedError> expectedErrors}) async {
     driver.configure(
         analysisOptions: analysisOptions
           ..sdkVersionConstraint = VersionConstraint.parse(version));
-    await assertErrorCodesInCode(source, errorCodes ?? []);
+    await assertErrorsInCode(source, expectedErrors ?? []);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_as_expression_in_const_context_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_as_expression_in_const_context_test.dart
index 2dc0373..106093c 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_as_expression_in_const_context_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_as_expression_in_const_context_test.dart
@@ -33,6 +33,8 @@
     verifyVersion('2.2.0', '''
 const dynamic a = 2;
 const c = (a as int) + 2;
-''', errorCodes: [HintCode.SDK_VERSION_AS_EXPRESSION_IN_CONST_CONTEXT]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_AS_EXPRESSION_IN_CONST_CONTEXT, 32, 8),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_async_exported_from_core_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_async_exported_from_core_test.dart
index 7e04d6d..2a296e2 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_async_exported_from_core_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_async_exported_from_core_test.dart
@@ -72,7 +72,9 @@
 import 'dart:core' show Future, int;
 
 Future<int> zero() async => 0;
-''', errorCodes: [HintCode.SDK_VERSION_ASYNC_EXPORTED_FROM_CORE]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_ASYNC_EXPORTED_FROM_CORE, 38, 6),
+    ]);
   }
 
   test_lessThan_explicitImportOfExportingLibrary() async {
@@ -89,7 +91,9 @@
   test_lessThan_implicitImportOfCore() async {
     await verifyVersion('2.0.0', '''
 Future<int> zero() async => 0;
-''', errorCodes: [HintCode.SDK_VERSION_ASYNC_EXPORTED_FROM_CORE]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_ASYNC_EXPORTED_FROM_CORE, 0, 6),
+    ]);
   }
 
   test_lessThan_implicitImportOfCore_inPart() async {
@@ -100,7 +104,9 @@
 part of lib;
 
 Future<int> zero() async => 0;
-''', errorCodes: [HintCode.SDK_VERSION_ASYNC_EXPORTED_FROM_CORE]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_ASYNC_EXPORTED_FROM_CORE, 14, 6),
+    ]);
   }
 
   test_lessThan_onlyReferencedInExport_hide() async {
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_bool_operator_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_bool_operator_test.dart
index 29f4773..4183627 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_bool_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_bool_operator_test.dart
@@ -30,7 +30,9 @@
   test_and_const_lessThan() {
     verifyVersion('2.2.0', '''
 const c = true & false;
-''', errorCodes: [HintCode.SDK_VERSION_BOOL_OPERATOR]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_BOOL_OPERATOR, 15, 1),
+    ]);
   }
 
   test_and_nonConst_equals() {
@@ -54,7 +56,9 @@
   test_or_const_lessThan() {
     verifyVersion('2.2.0', '''
 const c = true | false;
-''', errorCodes: [HintCode.SDK_VERSION_BOOL_OPERATOR]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_BOOL_OPERATOR, 15, 1),
+    ]);
   }
 
   test_or_nonConst_equals() {
@@ -78,7 +82,9 @@
   test_xor_const_lessThan() {
     verifyVersion('2.2.0', '''
 const c = true ^ false;
-''', errorCodes: [HintCode.SDK_VERSION_BOOL_OPERATOR]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_BOOL_OPERATOR, 15, 1),
+    ]);
   }
 
   test_xor_nonConst_equals() {
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_eq_eq_operator_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_eq_eq_operator_test.dart
index f8093af..e1814bb 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_eq_eq_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_eq_eq_operator_test.dart
@@ -38,7 +38,9 @@
 }
 const A a = A();
 const c = a == null;
-''', errorCodes: [HintCode.SDK_VERSION_EQ_EQ_OPERATOR_IN_CONST_CONTEXT]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_EQ_EQ_OPERATOR_IN_CONST_CONTEXT, 54, 2),
+    ]);
   }
 
   test_right_equals() {
@@ -58,6 +60,8 @@
 }
 const A a = A();
 const c = null == a;
-''', errorCodes: [HintCode.SDK_VERSION_EQ_EQ_OPERATOR_IN_CONST_CONTEXT]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_EQ_EQ_OPERATOR_IN_CONST_CONTEXT, 57, 2),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_gt_gt_gt_operator_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_gt_gt_gt_operator_test.dart
index 38d71f0..ed8c441 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_gt_gt_gt_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_gt_gt_gt_operator_test.dart
@@ -26,7 +26,9 @@
     //  UNDEFINED_OPERATOR when triple_shift is enabled by default.
     verifyVersion('2.3.2', '''
 const a = 42 >>> 3;
-''', errorCodes: [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
+''', expectedErrors: [
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 13, 3),
+    ]);
   }
 
   test_const_lessThan() {
@@ -34,9 +36,9 @@
     //  UNDEFINED_OPERATOR when triple_shift is enabled by default.
     verifyVersion('2.2.0', '''
 const a = 42 >>> 3;
-''', errorCodes: [
-      StaticTypeWarningCode.UNDEFINED_OPERATOR,
-      HintCode.SDK_VERSION_GT_GT_GT_OPERATOR
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_GT_GT_GT_OPERATOR, 13, 3),
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 13, 3),
     ]);
   }
 
@@ -53,7 +55,9 @@
 class A {
   A operator >>>(A a) => this;
 }
-''', errorCodes: [HintCode.SDK_VERSION_GT_GT_GT_OPERATOR]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_GT_GT_GT_OPERATOR, 23, 3),
+    ]);
   }
 
   test_nonConst_equals() {
@@ -61,7 +65,9 @@
     //  UNDEFINED_OPERATOR when constant update is enabled by default.
     verifyVersion('2.3.2', '''
 var a = 42 >>> 3;
-''', errorCodes: [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
+''', expectedErrors: [
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 11, 3),
+    ]);
   }
 
   test_nonConst_lessThan() {
@@ -69,9 +75,9 @@
     //  UNDEFINED_OPERATOR when constant update is enabled by default.
     verifyVersion('2.2.0', '''
 var a = 42 >>> 3;
-''', errorCodes: [
-      StaticTypeWarningCode.UNDEFINED_OPERATOR,
-      HintCode.SDK_VERSION_GT_GT_GT_OPERATOR
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_GT_GT_GT_OPERATOR, 11, 3),
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 11, 3),
     ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_is_expression_in_const_context_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_is_expression_in_const_context_test.dart
index 9b19e3c..fb7197a 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_is_expression_in_const_context_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_is_expression_in_const_context_test.dart
@@ -33,6 +33,8 @@
     verifyVersion('2.2.0', '''
 const dynamic a = 2;
 const c = a is int;
-''', errorCodes: [HintCode.SDK_VERSION_IS_EXPRESSION_IN_CONST_CONTEXT]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_IS_EXPRESSION_IN_CONST_CONTEXT, 31, 8),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart
index 749e00f..f9703db 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_never_test.dart
@@ -43,6 +43,8 @@
   test_lessThan() async {
     await verifyVersion('2.3.0', '''
 Never sink;
-''', errorCodes: [HintCode.SDK_VERSION_NEVER]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_NEVER, 0, 5),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_set_literal_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_set_literal_test.dart
index 4a7b294..8164001 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_set_literal_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_set_literal_test.dart
@@ -30,6 +30,8 @@
   test_lessThan() async {
     await verifyVersion('2.1.0', '''
 Set<int> zero() => <int>{0};
-''', errorCodes: [HintCode.SDK_VERSION_SET_LITERAL]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_SET_LITERAL, 19, 8),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/sdk_version_ui_as_code_test.dart b/pkg/analyzer/test/src/diagnostics/sdk_version_ui_as_code_test.dart
index 53017da..b75a1a6 100644
--- a/pkg/analyzer/test/src/diagnostics/sdk_version_ui_as_code_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/sdk_version_ui_as_code_test.dart
@@ -30,6 +30,8 @@
   test_lessThan() async {
     await verifyVersion('2.2.1', '''
 List<int> zero() => [if (0 < 1) 0];
-''', errorCodes: [HintCode.SDK_VERSION_UI_AS_CODE]);
+''', expectedErrors: [
+      error(HintCode.SDK_VERSION_UI_AS_CODE, 21, 12),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/set_element_type_not_assignable_test.dart b/pkg/analyzer/test/src/diagnostics/set_element_type_not_assignable_test.dart
index 641a352..caac598 100644
--- a/pkg/analyzer/test/src/diagnostics/set_element_type_not_assignable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/set_element_type_not_assignable_test.dart
@@ -19,7 +19,7 @@
 @reflectiveTest
 class SetElementTypeNotAssignableTest extends DriverResolutionTest {
   test_const_ifElement_thenElseFalse_intInt() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         '''
 const dynamic a = 0;
 const dynamic b = 0;
@@ -27,81 +27,101 @@
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? []
-            : [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 62, 19),
+              ]);
   }
 
   test_const_ifElement_thenElseFalse_intString() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         '''
 const dynamic a = 0;
 const dynamic b = 'b';
 var v = const <int>{if (1 < 0) a else b};
 ''',
         analysisOptions.experimentStatus.constant_update_2018
-            ? [StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE]
-            : [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+            ? [
+                error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 82, 1),
+              ]
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 64, 19),
+              ]);
   }
 
   test_const_ifElement_thenFalse_intString() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         '''
 var v = const <int>{if (1 < 0) 'a'};
 ''',
         analysisOptions.experimentStatus.constant_update_2018
-            ? [StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE]
+            ? [
+                error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 31, 3),
+              ]
             : [
-                StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE,
-                CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 20, 14),
+                error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 31, 3),
               ]);
   }
 
   test_const_ifElement_thenFalse_intString_dynamic() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         '''
 const dynamic a = 'a';
 var v = const <int>{if (1 < 0) a};
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? []
-            : [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 43, 12),
+              ]);
   }
 
   test_const_ifElement_thenTrue_intInt() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         '''
 const dynamic a = 0;
 var v = const <int>{if (true) a};
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? []
-            : [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 41, 11),
+              ]);
   }
 
   test_const_ifElement_thenTrue_intString() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         '''
 const dynamic a = 'a';
 var v = const <int>{if (true) a};
 ''',
         analysisOptions.experimentStatus.constant_update_2018
-            ? [StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE]
-            : [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+            ? [
+                error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 53, 1),
+              ]
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 43, 11),
+              ]);
   }
 
   test_const_spread_intInt() async {
-    await assertErrorCodesInCode(
+    await assertErrorsInCode(
         '''
 var v = const <int>{...[0, 1]};
 ''',
         analysisOptions.experimentStatus.constant_update_2018
             ? []
-            : [CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT]);
+            : [
+                error(CompileTimeErrorCode.NON_CONSTANT_SET_ELEMENT, 20, 9),
+              ]);
   }
 
   test_explicitTypeArgs_const() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var v = const <String>{42};
-''', [StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE]);
+''', [
+      error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 23, 2),
+    ]);
   }
 
   test_explicitTypeArgs_const_actualTypeMatch() async {
@@ -112,16 +132,20 @@
   }
 
   test_explicitTypeArgs_const_actualTypeMismatch() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 const dynamic x = 42;
 var v = const <String>{x};
-''', [StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE]);
+''', [
+      error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 45, 1),
+    ]);
   }
 
   test_explicitTypeArgs_notConst() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var v = <String>{42};
-''', [StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE]);
+''', [
+      error(StaticWarningCode.SET_ELEMENT_TYPE_NOT_ASSIGNABLE, 17, 2),
+    ]);
   }
 
   test_nonConst_ifElement_thenElseFalse_intDynamic() async {
@@ -141,9 +165,11 @@
   }
 
   test_nonConst_ifElement_thenFalse_intString() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 var v = <int>[if (1 < 0) 'a'];
-''', [StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE]);
+''', [
+      error(StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE, 25, 3),
+    ]);
   }
 
   test_nonConst_ifElement_thenTrue_intDynamic() async {
diff --git a/pkg/analyzer/test/src/diagnostics/top_level_instance_getter_test.dart b/pkg/analyzer/test/src/diagnostics/top_level_instance_getter_test.dart
index 2a28469..ceb09b7 100644
--- a/pkg/analyzer/test/src/diagnostics/top_level_instance_getter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/top_level_instance_getter_test.dart
@@ -89,64 +89,76 @@
   }
 
   test_implicitlyTyped() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   get g => 0;
 }
 var b = new A().g;
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 42, 1),
+    ]);
   }
 
   test_implicitlyTyped_call() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   get g => () => 0;
 }
 var a = new A();
 var b = a.g();
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 57, 5),
+    ]);
   }
 
   test_implicitlyTyped_field() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   var g = 0;
 }
 var b = new A().g;
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 41, 1),
+    ]);
   }
 
   test_implicitlyTyped_field_call() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   var g = () => 0;
 }
 var a = new A();
 var b = a.g();
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 56, 5),
+    ]);
   }
 
   test_implicitlyTyped_field_prefixedIdentifier() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   var g = 0;
 }
 var a = new A();
 var b = a.g;
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 52, 1),
+    ]);
   }
 
   test_implicitlyTyped_fn() async {
     // The reference to a.x triggers TOP_LEVEL_INSTANCE_GETTER because f is
     // generic, so the type of a.x might affect the type of b.
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   var x = 0;
 }
 int f<T>(x) => 0;
 var a = new A();
 var b = f(a.x);
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 72, 1),
+    ]);
   }
 
   test_implicitlyTyped_fn_explicit_type_params() async {
@@ -191,13 +203,15 @@
   test_implicitlyTyped_invoke() async {
     // The reference to a.x triggers TOP_LEVEL_INSTANCE_GETTER because the
     // closure is generic, so the type of a.x might affect the type of b.
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   var x = 0;
 }
 var a = new A();
 var b = (<T>(y) => 0)(a.x);
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 66, 1),
+    ]);
   }
 
   test_implicitlyTyped_invoke_explicit_type_params() async {
@@ -227,14 +241,16 @@
   test_implicitlyTyped_method() async {
     // The reference to a.x triggers TOP_LEVEL_INSTANCE_GETTER because f is
     // generic, so the type of a.x might affect the type of b.
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   var x = 0;
   int f<T>(int x) => 0;
 }
 var a = new A();
 var b = a.f(a.x);
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 80, 1),
+    ]);
   }
 
   test_implicitlyTyped_method_explicit_type_params() async {
@@ -266,7 +282,7 @@
   test_implicitlyTyped_new() async {
     // The reference to a.x triggers TOP_LEVEL_INSTANCE_GETTER because B is
     // generic, so the type of a.x might affect the type of b.
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   var x = 0;
 }
@@ -275,7 +291,9 @@
 }
 var a = new A();
 var b = new B(a.x);
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 81, 1),
+    ]);
   }
 
   test_implicitlyTyped_new_explicit_type_params() async {
@@ -329,7 +347,7 @@
   test_implicitlyTyped_new_named() async {
     // The reference to a.x triggers TOP_LEVEL_INSTANCE_GETTER because B is
     // generic, so the type of a.x might affect the type of b.
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   var x = 0;
 }
@@ -338,7 +356,9 @@
 }
 var a = new A();
 var b = new B.named(a.x);
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 93, 1),
+    ]);
   }
 
   test_implicitlyTyped_new_not_generic() async {
@@ -397,30 +417,34 @@
 ''');
     // The reference to a.x triggers TOP_LEVEL_INSTANCE_GETTER because B is
     // generic, so the type of a.x might affect the type of b.
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 import 'lib1.dart' as foo;
 class A {
   var x = 0;
 }
 var a = new A();
 var b = new foo.B(a.x);
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 89, 1),
+    ]);
   }
 
   test_implicitlyTyped_prefixedIdentifier() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   get g => 0;
 }
 var a = new A();
 var b = a.g;
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 53, 1),
+    ]);
   }
 
   test_implicitlyTyped_propertyAccessLhs() async {
     // The reference to a.x triggers TOP_LEVEL_INSTANCE_GETTER because the type
     // of a.x affects the lookup of y, which in turn affects the type of b.
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   var x = new B();
   int operator[](int value) => 0;
@@ -430,7 +454,9 @@
 }
 var a = new A();
 var b = (a.x).y;
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_GETTER]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_GETTER, 114, 1),
+    ]);
   }
 
   test_prefixedIdentifier() async {
diff --git a/pkg/analyzer/test/src/diagnostics/top_level_instance_method_test.dart b/pkg/analyzer/test/src/diagnostics/top_level_instance_method_test.dart
index 221a7f0..00a78e1 100644
--- a/pkg/analyzer/test/src/diagnostics/top_level_instance_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/top_level_instance_method_test.dart
@@ -16,12 +16,14 @@
 @reflectiveTest
 class TopLevelInstanceMethodTest extends DriverResolutionTest {
   test_noParameter() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   f() => 0;
 }
 var x = new A().f();
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_METHOD]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_METHOD, 32, 11),
+    ]);
   }
 
   test_parameter() async {
@@ -34,12 +36,14 @@
   }
 
   test_parameter_generic() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   int f<T>(v) => 0;
 }
 var x = new A().f(0);
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_METHOD]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_METHOD, 40, 12),
+    ]);
   }
 
   test_parameter_generic_explicit() async {
@@ -61,21 +65,25 @@
   }
 
   test_tearOff() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   f() => 0;
 }
 var x = new A().f;
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_METHOD]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_METHOD, 40, 1),
+    ]);
   }
 
   test_tearOff_parameter() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 class A {
   int f(v) => 0;
 }
 var x = new A().f;
-''', [StrongModeCode.TOP_LEVEL_INSTANCE_METHOD]);
+''', [
+      error(StrongModeCode.TOP_LEVEL_INSTANCE_METHOD, 45, 1),
+    ]);
   }
 
   test_tearoff_static() async {
diff --git a/pkg/analyzer/test/src/diagnostics/type_check_is_not_null_test.dart b/pkg/analyzer/test/src/diagnostics/type_check_is_not_null_test.dart
index 9a473f0..e5e14a3 100644
--- a/pkg/analyzer/test/src/diagnostics/type_check_is_not_null_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_check_is_not_null_test.dart
@@ -16,10 +16,12 @@
 @reflectiveTest
 class TypeCheckIsNotNullTest extends DriverResolutionTest {
   test_not_Null() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 bool m(i) {
   return i is! Null;
 }
-''', [HintCode.TYPE_CHECK_IS_NOT_NULL]);
+''', [
+      error(HintCode.TYPE_CHECK_IS_NOT_NULL, 21, 10),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/type_check_is_null_test.dart b/pkg/analyzer/test/src/diagnostics/type_check_is_null_test.dart
index 42d8555..19d804b 100644
--- a/pkg/analyzer/test/src/diagnostics/type_check_is_null_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/type_check_is_null_test.dart
@@ -16,10 +16,12 @@
 @reflectiveTest
 class TypeCheckIsNullTest extends DriverResolutionTest {
   test_is_Null() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 bool m(i) {
   return i is Null;
 }
-''', [HintCode.TYPE_CHECK_IS_NULL]);
+''', [
+      error(HintCode.TYPE_CHECK_IS_NULL, 21, 9),
+    ]);
   }
 }
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 08ffb33..6dc6cfc 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
@@ -31,12 +31,14 @@
   }
 
   test_and_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   bool? x;
   if(x && true) {}
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 22, 1),
+    ]);
   }
 
   test_as_nullable() async {
@@ -58,12 +60,14 @@
   }
 
   test_assert_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   bool? x;
   assert(x);
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 26, 1),
+    ]);
   }
 
   test_await_nonNullable() async {
@@ -94,12 +98,14 @@
   }
 
   test_cascade_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   x..isEven;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+    ]);
   }
 
   test_eq_nullable() async {
@@ -121,12 +127,15 @@
   }
 
   test_forLoop_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   List? x;
   for (var y in x) {}
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 28, 1),
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 33, 1),
+    ]);
   }
 
   test_if_nonNullable() async {
@@ -139,12 +148,14 @@
   }
 
   test_if_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   bool? x;
   if (x) {}
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 23, 1),
+    ]);
   }
 
   test_index_nonNullable() async {
@@ -157,12 +168,14 @@
   }
 
   test_index_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   List? x;
   x[0];
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
+    ]);
   }
 
   test_invoke_dynamicFunctionType_nonNullable() async {
@@ -175,12 +188,14 @@
   }
 
   test_invoke_dynamicFunctionType_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   Function? x;
   x();
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 23, 1),
+    ]);
   }
 
   test_invoke_nonNullable() async {
@@ -193,12 +208,14 @@
   }
 
   test_invoke_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   Function()? x;
   x();
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 25, 1),
+    ]);
   }
 
   test_invoke_parenthesized_nonNullable() async {
@@ -247,12 +264,14 @@
   }
 
   test_member_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   x.isEven;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+    ]);
   }
 
   test_member_parenthesized_hashCode_nullable() async {
@@ -265,12 +284,14 @@
   }
 
   test_member_parenthesized_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   (x).isEven;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 3),
+    ]);
   }
 
   test_member_parenthesized_runtimeType_nullable() async {
@@ -283,21 +304,25 @@
   }
 
   test_member_potentiallyNullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m<T extends int?>() {
   T x;
   x.isEven;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 31, 1),
+    ]);
   }
 
   test_member_potentiallyNullable_called() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m<T extends Function>() {
   List<T?> x;
   x.first();
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 44, 5),
+    ]);
   }
 
   test_member_questionDot_nullable() async {
@@ -337,12 +362,14 @@
   }
 
   test_method_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   x.round();
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+    ]);
   }
 
   test_method_questionDot_nullable() async {
@@ -373,12 +400,15 @@
   }
 
   test_minusEq_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   x -= 1;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 13, 1),
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+    ]);
   }
 
   test_not_nonNullable() async {
@@ -391,12 +421,14 @@
   }
 
   test_not_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   bool? x;
   if(!x) {}
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 23, 1),
+    ]);
   }
 
   test_notEq_nullable() async {
@@ -418,12 +450,14 @@
   }
 
   test_operatorMinus_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   x - 3;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+    ]);
   }
 
   test_operatorPlus_nonNullable() async {
@@ -436,12 +470,14 @@
   }
 
   test_operatorPlus_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   x + 3;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+    ]);
   }
 
   test_operatorPostfixDec_nonNullable() async {
@@ -454,12 +490,15 @@
   }
 
   test_operatorPostfixDec_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   x--;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 13, 1),
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+    ]);
   }
 
   test_operatorPostfixInc_nonNullable() async {
@@ -472,12 +511,15 @@
   }
 
   test_operatorPostfixInc_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   x++;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 13, 1),
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+    ]);
   }
 
   test_operatorPrefixDec_nonNullable() async {
@@ -490,12 +532,15 @@
   }
 
   test_operatorPrefixDec_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   --x;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 13, 1),
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 20, 1),
+    ]);
   }
 
   test_operatorPrefixInc_nonNullable() async {
@@ -508,12 +553,15 @@
   }
 
   test_operatorPrefixInc_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   ++x;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 13, 1),
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 20, 1),
+    ]);
   }
 
   test_operatorUnaryMinus_nonNullable() async {
@@ -526,12 +574,15 @@
   }
 
   test_operatorUnaryMinus_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   -x;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 13, 1),
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
+    ]);
   }
 
   test_or_nonNullable() async {
@@ -544,12 +595,14 @@
   }
 
   test_or_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   bool? x;
   if(x || false) {}
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 22, 1),
+    ]);
   }
 
   test_plusEq_nonNullable() async {
@@ -562,21 +615,26 @@
   }
 
   test_plusEq_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   int? x;
   x += 1;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 13, 1),
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 18, 1),
+    ]);
   }
 
   test_ternary_condition_nullable() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m() {
   bool? x;
   x ? 0 : 1;
 }
-''', [StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE]);
+''', [
+      error(StaticWarningCode.UNCHECKED_USE_OF_NULLABLE_VALUE, 19, 1),
+    ]);
   }
 
   test_ternary_lhs_nullable() async {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
index 3713aef..6feaae5 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_getter_test.dart
@@ -16,11 +16,13 @@
 @reflectiveTest
 class UndefinedGetterTest extends DriverResolutionTest {
   test_ifElement_inList_notPromoted() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 f(int x) {
   return [if (x is String) x.length];
 }
-''', [StaticTypeWarningCode.UNDEFINED_GETTER]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_GETTER, 40, 6),
+    ]);
   }
 
   test_ifElement_inList_promoted() async {
@@ -32,11 +34,13 @@
   }
 
   test_ifElement_inMap_notPromoted() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 f(int x) {
   return {if (x is String) x : x.length};
 }
-''', [StaticTypeWarningCode.UNDEFINED_GETTER]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_GETTER, 44, 6),
+    ]);
   }
 
   test_ifElement_inMap_promoted() async {
@@ -48,11 +52,13 @@
   }
 
   test_ifElement_inSet_notPromoted() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 f(int x) {
   return {if (x is String) x.length};
 }
-''', [StaticTypeWarningCode.UNDEFINED_GETTER]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_GETTER, 40, 6),
+    ]);
   }
 
   test_ifElement_inSet_promoted() async {
@@ -64,13 +70,15 @@
   }
 
   test_ifStatement_notPromoted() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 f(int x) {
   if (x is String) {
     x.length;
   }
 }
-''', [StaticTypeWarningCode.UNDEFINED_GETTER]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_GETTER, 38, 6),
+    ]);
   }
 
   test_ifStatement_promoted() async {
@@ -84,12 +92,14 @@
   }
 
   test_promotedTypeParameter_regress35305() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 void f<X extends num, Y extends X>(Y y) {
   if (y is int) {
     y.isEven;
   }
 }
-''', [StaticTypeWarningCode.UNDEFINED_GETTER]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_GETTER, 66, 6),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_hidden_name_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_hidden_name_test.dart
index 888721c..94e0131 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_hidden_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_hidden_name_test.dart
@@ -17,15 +17,20 @@
 class UndefinedHiddenNameTest extends DriverResolutionTest {
   test_export() async {
     newFile('/test/lib/lib1.dart');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 export 'lib1.dart' hide a;
-''', [HintCode.UNDEFINED_HIDDEN_NAME]);
+''', [
+      error(HintCode.UNDEFINED_HIDDEN_NAME, 24, 1),
+    ]);
   }
 
   test_import() async {
     newFile('/test/lib/lib1.dart');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' hide a;
-''', [HintCode.UNUSED_IMPORT, HintCode.UNDEFINED_HIDDEN_NAME]);
+''', [
+      error(HintCode.UNUSED_IMPORT, 7, 11),
+      error(HintCode.UNDEFINED_HIDDEN_NAME, 24, 1),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
index 3a8e91f..895322a 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart
@@ -24,11 +24,14 @@
   }
 
   test_forElement_inList_outsideElement() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 f() {
   return [for (int x in []) null, x];
 }
-''', [StaticWarningCode.UNDEFINED_IDENTIFIER]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 25, 1),
+      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 40, 1),
+    ]);
   }
 
   test_forStatement_inBody() async {
@@ -42,11 +45,14 @@
   }
 
   test_forStatement_outsideBody() async {
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 f() {
   for (int x in []) {}
   x;
 }
-''', [StaticWarningCode.UNDEFINED_IDENTIFIER]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 17, 1),
+      error(StaticWarningCode.UNDEFINED_IDENTIFIER, 31, 1),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_operator_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_operator_test.dart
index a10a3ee..8ce6206 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_operator_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_operator_test.dart
@@ -16,18 +16,20 @@
 @reflectiveTest
 class UndefinedOperatorTest extends DriverResolutionTest {
   test_binaryExpression() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {}
 f(var a) {
   if (a is A) {
     a + 1;
   }
 }
-''', [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 44, 1),
+    ]);
   }
 
   test_binaryExpression_inSubtype() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {}
 class B extends A {
   operator +(B b) {}
@@ -37,11 +39,13 @@
     a + 1;
   }
 }
-''', [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 87, 1),
+    ]);
   }
 
   test_indexBoth() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {}
 f(var a) {
   if (a is A) {
@@ -49,13 +53,13 @@
   }
 }
 ''', [
-      StaticTypeWarningCode.UNDEFINED_OPERATOR,
-      StaticTypeWarningCode.UNDEFINED_OPERATOR,
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 43, 3),
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 43, 3),
     ]);
   }
 
   test_indexBoth_inSubtype() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {}
 class B extends A {
   operator [](int index) {}
@@ -66,24 +70,26 @@
   }
 }
 ''', [
-      StaticTypeWarningCode.UNDEFINED_OPERATOR,
-      StaticTypeWarningCode.UNDEFINED_OPERATOR,
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 93, 3),
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 93, 3),
     ]);
   }
 
   test_indexGetter() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {}
 f(var a) {
   if (a is A) {
     a[0];
   }
 }
-''', [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 43, 3),
+    ]);
   }
 
   test_indexGetter_inSubtype() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {}
 class B extends A {
   operator [](int index) {}
@@ -93,22 +99,26 @@
     a[0];
   }
 }
-''', [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 93, 3),
+    ]);
   }
 
   test_indexSetter() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {}
 f(var a) {
   if (a is A) {
     a[0] = 1;
   }
 }
-''', [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 43, 3),
+    ]);
   }
 
   test_indexSetter_inSubtype() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {}
 class B extends A {
   operator []=(i, v) {}
@@ -118,7 +128,9 @@
     a[0] = 1;
   }
 }
-''', [StaticTypeWarningCode.UNDEFINED_OPERATOR]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_OPERATOR, 89, 3),
+    ]);
   }
 
   test_postfixExpression() async {
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_prefixed_name_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_prefixed_name_test.dart
index 6de8429..3485b60 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_prefixed_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_prefixed_name_test.dart
@@ -17,19 +17,23 @@
 class UndefinedPrefixedNameTest extends DriverResolutionTest {
   test_getterContext() async {
     newFile('/test/lib/lib.dart');
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 import 'lib.dart' as p;
 f() => p.c;
-''', [StaticTypeWarningCode.UNDEFINED_PREFIXED_NAME]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_PREFIXED_NAME, 33, 1),
+    ]);
   }
 
   test_setterContext() async {
     newFile('/test/lib/lib.dart');
-    await assertErrorCodesInCode('''
+    await assertErrorsInCode('''
 import 'lib.dart' as p;
 f() {
   p.c = 0;
 }
-''', [StaticTypeWarningCode.UNDEFINED_PREFIXED_NAME]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_PREFIXED_NAME, 34, 1),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart
index 7306c0e..827b77e 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_setter_test.dart
@@ -16,7 +16,7 @@
 @reflectiveTest
 class UndefinedSetterTest extends DriverResolutionTest {
   test_inSubtype() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {}
 class B extends A {
   set b(x) {}
@@ -26,17 +26,21 @@
     a.b = 0;
   }
 }
-''', [StaticTypeWarningCode.UNDEFINED_SETTER]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_SETTER, 80, 1),
+    ]);
   }
 
   test_inType() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {}
 f(var a) {
   if(a is A) {
     a.m = 0;
   }
 }
-''', [StaticTypeWarningCode.UNDEFINED_SETTER]);
+''', [
+      error(StaticTypeWarningCode.UNDEFINED_SETTER, 43, 1),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/undefined_shown_name_test.dart b/pkg/analyzer/test/src/diagnostics/undefined_shown_name_test.dart
index 3243bb2..121fbda 100644
--- a/pkg/analyzer/test/src/diagnostics/undefined_shown_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/undefined_shown_name_test.dart
@@ -17,15 +17,20 @@
 class UndefinedShownNameTest extends DriverResolutionTest {
   test_export() async {
     newFile('/test/lib/lib1.dart');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 export 'lib1.dart' show a;
-''', [HintCode.UNDEFINED_SHOWN_NAME]);
+''', [
+      error(HintCode.UNDEFINED_SHOWN_NAME, 24, 1),
+    ]);
   }
 
   test_import() async {
     newFile('/test/lib/lib1.dart');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' show a;
-''', [HintCode.UNUSED_IMPORT, HintCode.UNDEFINED_SHOWN_NAME]);
+''', [
+      error(HintCode.UNUSED_IMPORT, 7, 11),
+      error(HintCode.UNDEFINED_SHOWN_NAME, 24, 1),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
index 0d89796..a7a5c1a 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_cast_test.dart
@@ -59,13 +59,15 @@
 
   test_generics() async {
     // dartbug.com/18953
-    assertErrorCodesInCode(r'''
+    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]);
+''', [
+      error(HintCode.UNNECESSARY_CAST, 90, 34),
+    ]);
   }
 
   test_parameter_A() async {
@@ -92,18 +94,24 @@
   }
 
   test_type_supertype() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(int i) {
   var b = i as Object;
 }
-''', [HintCode.UNNECESSARY_CAST]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 17, 1),
+      error(HintCode.UNNECESSARY_CAST, 21, 11),
+    ]);
   }
 
   test_type_type() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(num i) {
   var b = i as num;
 }
-''', [HintCode.UNNECESSARY_CAST]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 17, 1),
+      error(HintCode.UNNECESSARY_CAST, 21, 8),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_no_such_method_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_no_such_method_test.dart
index 0801ae0..d443e12 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_no_such_method_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_no_such_method_test.dart
@@ -16,7 +16,7 @@
 @reflectiveTest
 class UnnecessaryNoSuchMethodTest extends DriverResolutionTest {
   test_blockBody() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   noSuchMethod(x) => super.noSuchMethod(x);
 }
@@ -26,7 +26,9 @@
     return super.noSuchMethod(y);
   }
 }
-''', [HintCode.UNNECESSARY_NO_SUCH_METHOD]);
+''', [
+      error(HintCode.UNNECESSARY_NO_SUCH_METHOD, 87, 55),
+    ]);
   }
 
   test_blockBody_notReturnStatement() async {
@@ -59,7 +61,7 @@
   }
 
   test_expressionBody() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   noSuchMethod(x) => super.noSuchMethod(x);
 }
@@ -67,7 +69,9 @@
   mmm();
   noSuchMethod(y) => super.noSuchMethod(y);
 }
-''', [HintCode.UNNECESSARY_NO_SUCH_METHOD]);
+''', [
+      error(HintCode.UNNECESSARY_NO_SUCH_METHOD, 87, 41),
+    ]);
   }
 
   test_expressionBody_notNoSuchMethod() async {
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_false_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_false_test.dart
index e3316ad..727f808 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_false_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_false_test.dart
@@ -16,24 +16,32 @@
 @reflectiveTest
 class UnnecessaryTypeCheckFalseTest extends DriverResolutionTest {
   test_null_not_Null() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 bool b = null is! Null;
-''', [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]);
+''', [
+      error(HintCode.UNNECESSARY_TYPE_CHECK_FALSE, 9, 13),
+    ]);
   }
 
   test_type_not_dynamic() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(i) {
   bool b = i is! dynamic;
 }
-''', [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
+      error(HintCode.UNNECESSARY_TYPE_CHECK_FALSE, 18, 13),
+    ]);
   }
 
   test_type_not_object() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(i) {
   bool b = i is! Object;
 }
-''', [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
+      error(HintCode.UNNECESSARY_TYPE_CHECK_FALSE, 18, 12),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_true_test.dart b/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_true_test.dart
index 269d39a..daae87f 100644
--- a/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_true_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unnecessary_type_check_true_test.dart
@@ -16,24 +16,32 @@
 @reflectiveTest
 class UnnecessaryTypeCheckTrueTest extends DriverResolutionTest {
   test_null_is_Null() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 bool b = null is Null;
-''', [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]);
+''', [
+      error(HintCode.UNNECESSARY_TYPE_CHECK_TRUE, 9, 12),
+    ]);
   }
 
   test_type_is_dynamic() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(i) {
   bool b = i is dynamic;
 }
-''', [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
+      error(HintCode.UNNECESSARY_TYPE_CHECK_TRUE, 18, 12),
+    ]);
   }
 
   test_type_is_object() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 m(i) {
   bool b = i is Object;
 }
-''', [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 14, 1),
+      error(HintCode.UNNECESSARY_TYPE_CHECK_TRUE, 18, 11),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/unused_catch_clause_test.dart b/pkg/analyzer/test/src/diagnostics/unused_catch_clause_test.dart
index de74c41..9eefe4c 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_catch_clause_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_catch_clause_test.dart
@@ -19,13 +19,15 @@
   bool get enableUnusedLocalVariable => true;
 
   test_on_unusedException() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 main() {
   try {
   } on String catch (exception) {
   }
 }
-''', [HintCode.UNUSED_CATCH_CLAUSE]);
+''', [
+      error(HintCode.UNUSED_CATCH_CLAUSE, 38, 9),
+    ]);
   }
 
   test_on_usedException() async {
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 84303fa..9ee0541 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_catch_stack_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_catch_stack_test.dart
@@ -19,13 +19,15 @@
   bool get enableUnusedLocalVariable => true;
 
   test_on_unusedStack() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 main() {
   try {
   } on String catch (exception, stackTrace) {
   }
 }
-''', [HintCode.UNUSED_CATCH_STACK]);
+''', [
+      error(HintCode.UNUSED_CATCH_STACK, 49, 10),
+    ]);
   }
 
   test_on_usedStack() async {
@@ -40,13 +42,15 @@
   }
 
   test_unusedStack() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 main() {
   try {
   } catch (exception, stackTrace) {
   }
 }
-''', [HintCode.UNUSED_CATCH_STACK]);
+''', [
+      error(HintCode.UNUSED_CATCH_STACK, 39, 10),
+    ]);
   }
 
   test_usedStack() async {
diff --git a/pkg/analyzer/test/src/diagnostics/unused_element_test.dart b/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
index 8f16748..ef38d33 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_element_test.dart
@@ -85,7 +85,7 @@
   }
 
   test_class_notUsed_inClassMember() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class _A {
   static staticMethod() {
     new _A();
@@ -94,45 +94,55 @@
     new _A();
   }
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 6, 2),
+    ]);
   }
 
   test_class_notUsed_inConstructorName() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class _A {
   _A() {}
   _A.named() {}
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 6, 2),
+    ]);
   }
 
   test_class_notUsed_isExpression() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class _A {}
 main(p) {
   if (p is _A) {
   }
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 6, 2),
+    ]);
   }
 
   test_class_notUsed_noReference() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class _A {}
 main() {
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 6, 2),
+    ]);
   }
 
   test_class_notUsed_variableDeclaration() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class _A {}
 main() {
   _A v;
   print(v);
 }
 print(x) {}
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 6, 2),
+    ]);
   }
 
   test_enum_isUsed_fieldReference() async {
@@ -145,11 +155,13 @@
   }
 
   test_enum_notUsed_noReference() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 enum _MyEnum {A, B, C}
 main() {
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 5, 7),
+    ]);
   }
 
   test_functionLocal_isUsed_closure() async {
@@ -181,21 +193,25 @@
   }
 
   test_functionLocal_notUsed_noReference() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 main() {
   f() {}
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 11, 1),
+    ]);
   }
 
   test_functionLocal_notUsed_referenceFromItself() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 main() {
   _f(int p) {
     _f(p - 1);
   }
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 11, 2),
+    ]);
   }
 
   test_functionTop_isUsed_invocation() async {
@@ -218,21 +234,25 @@
   }
 
   test_functionTop_notUsed_noReference() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 _f() {}
 main() {
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 0, 2),
+    ]);
   }
 
   test_functionTop_notUsed_referenceFromItself() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 _f(int p) {
   _f(p - 1);
 }
 main() {
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 0, 2),
+    ]);
   }
 
   test_functionTypeAlias_isUsed_isExpression() async {
@@ -274,11 +294,13 @@
   }
 
   test_functionTypeAlias_notUsed_noReference() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 typedef _F(a, b);
 main() {
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 8, 2),
+    ]);
   }
 
   test_getter_isUsed_invocation_implicitThis() async {
@@ -315,21 +337,25 @@
   }
 
   test_getter_notUsed_noReference() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   get _g => null;
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 16, 2),
+    ]);
   }
 
   test_getter_notUsed_referenceFromItself() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   get _g {
     return _g;
   }
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 16, 2),
+    ]);
   }
 
   test_method_isUsed_hasReference_implicitThis() async {
@@ -477,21 +503,25 @@
   }
 
   test_method_notUsed_noReference() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   static _m() {}
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 19, 2),
+    ]);
   }
 
   test_method_notUsed_referenceFromItself() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   static _m(int p) {
     _m(p - 1);
   }
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 19, 2),
+    ]);
   }
 
   test_setter_isUsed_invocation_implicitThis() async {
@@ -528,15 +558,17 @@
   }
 
   test_setter_notUsed_noReference() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   set _s(x) {}
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 16, 2),
+    ]);
   }
 
   test_setter_notUsed_referenceFromItself() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   set _s(int x) {
     if (x > 5) {
@@ -544,7 +576,9 @@
     }
   }
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 16, 2),
+    ]);
   }
 
   test_topLevelVariable_isUsed() async {
@@ -567,11 +601,13 @@
   }
 
   test_topLevelVariable_notUsed() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 int _a = 1;
 main() {
   _a = 2;
 }
-''', [HintCode.UNUSED_ELEMENT]);
+''', [
+      error(HintCode.UNUSED_ELEMENT, 4, 2),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/unused_field_test.dart b/pkg/analyzer/test/src/diagnostics/unused_field_test.dart
index a0dacdb..fa17061 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_field_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_field_test.dart
@@ -105,40 +105,48 @@
   }
 
   test_unusedField_notUsed_compoundAssign() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   int _f;
   main() {
     _f += 2;
   }
 }
-''', [HintCode.UNUSED_FIELD]);
+''', [
+      error(HintCode.UNUSED_FIELD, 16, 2),
+    ]);
   }
 
   test_unusedField_notUsed_constructorFieldInitializers() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   int _f;
   A() : _f = 0;
 }
-''', [HintCode.UNUSED_FIELD]);
+''', [
+      error(HintCode.UNUSED_FIELD, 16, 2),
+    ]);
   }
 
   test_unusedField_notUsed_fieldFormalParameter() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   int _f;
   A(this._f);
 }
-''', [HintCode.UNUSED_FIELD]);
+''', [
+      error(HintCode.UNUSED_FIELD, 16, 2),
+    ]);
   }
 
   test_unusedField_notUsed_noReference() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   int _f;
 }
-''', [HintCode.UNUSED_FIELD]);
+''', [
+      error(HintCode.UNUSED_FIELD, 16, 2),
+    ]);
   }
 
   test_unusedField_notUsed_nullAssign() async {
@@ -154,29 +162,33 @@
   }
 
   test_unusedField_notUsed_postfixExpr() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   int _f = 0;
   main() {
     _f++;
   }
 }
-''', [HintCode.UNUSED_FIELD]);
+''', [
+      error(HintCode.UNUSED_FIELD, 16, 2),
+    ]);
   }
 
   test_unusedField_notUsed_prefixExpr() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   int _f = 0;
   main() {
     ++_f;
   }
 }
-''', [HintCode.UNUSED_FIELD]);
+''', [
+      error(HintCode.UNUSED_FIELD, 16, 2),
+    ]);
   }
 
   test_unusedField_notUsed_simpleAssignment() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   int _f;
   m() {
@@ -186,6 +198,8 @@
 main(A a) {
   a._f = 2;
 }
-''', [HintCode.UNUSED_FIELD]);
+''', [
+      error(HintCode.UNUSED_FIELD, 16, 2),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/unused_import_test.dart b/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
index 84ac848..2159a68 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_import_test.dart
@@ -31,11 +31,13 @@
     newFile('/test/lib/lib1.dart', content: r'''
 class A {}
 ''');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart';
 import 'lib1.dart' as one;
 one.A a;
-''', [HintCode.UNUSED_IMPORT]);
+''', [
+      error(HintCode.UNUSED_IMPORT, 7, 11),
+    ]);
   }
 
   test_as_equalPrefixes_referenced() async {
@@ -63,11 +65,13 @@
     newFile('/test/lib/lib2.dart', content: r'''
 class B {}
 ''');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' as one;
 import 'lib2.dart' as one;
 one.A a;
-''', [HintCode.UNUSED_IMPORT]);
+''', [
+      error(HintCode.UNUSED_IMPORT, 32, 11),
+    ]);
   }
 
   test_core_library() async {
@@ -131,11 +135,13 @@
     newFile('/test/lib/lib1.dart', content: r'''
 class A {}
 ''');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart';
 import 'lib1.dart' hide A;
 A a;
-''', [HintCode.UNUSED_IMPORT]);
+''', [
+      error(HintCode.UNUSED_IMPORT, 27, 11),
+    ]);
   }
 
   test_inComment_libraryDirective() async {
@@ -200,17 +206,21 @@
 class A {}
 class B {}
 ''');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart' show A;
 import 'lib1.dart' show B;
 A a;
-''', [HintCode.UNUSED_IMPORT]);
+''', [
+      error(HintCode.UNUSED_IMPORT, 34, 11),
+    ]);
   }
 
   test_unusedImport() async {
     newFile('/test/lib/lib1.dart');
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 import 'lib1.dart';
-''', [HintCode.UNUSED_IMPORT]);
+''', [
+      error(HintCode.UNUSED_IMPORT, 7, 11),
+    ]);
   }
 }
diff --git a/pkg/analyzer/test/src/diagnostics/unused_label_test.dart b/pkg/analyzer/test/src/diagnostics/unused_label_test.dart
index 3322685..4d1c338 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_label_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_label_test.dart
@@ -16,7 +16,7 @@
 @reflectiveTest
 class UnusedLabelTest extends DriverResolutionTest {
   test_unused_inSwitch() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 f(x) {
   switch (x) {
     label: case 0:
@@ -25,17 +25,21 @@
       break;
   }
 }
-''', [HintCode.UNUSED_LABEL]);
+''', [
+      error(HintCode.UNUSED_LABEL, 26, 6),
+    ]);
   }
 
   test_unused_onWhile() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 f(condition()) {
   label: while (condition()) {
     break;
   }
 }
-''', [HintCode.UNUSED_LABEL]);
+''', [
+      error(HintCode.UNUSED_LABEL, 19, 6),
+    ]);
   }
 
   test_used_inSwitch() async {
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 d4281bc..5bf524c 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_local_variable_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_local_variable_test.dart
@@ -31,23 +31,27 @@
   }
 
   test_inFunction() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 main() {
   var v = 1;
   v = 2;
 }
-''', [HintCode.UNUSED_LOCAL_VARIABLE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 15, 1),
+    ]);
   }
 
   test_inMethod() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 class A {
   foo() {
     var v = 1;
     v = 2;
   }
 }
-''', [HintCode.UNUSED_LOCAL_VARIABLE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 28, 1),
+    ]);
   }
 
   test_isInvoked() async {
@@ -72,30 +76,36 @@
   }
 
   test_isRead_notUsed_compoundAssign() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 main() {
   var v = 1;
   v += 2;
 }
-''', [HintCode.UNUSED_LOCAL_VARIABLE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 15, 1),
+    ]);
   }
 
   test_isRead_notUsed_postfixExpr() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 main() {
   var v = 1;
   v++;
 }
-''', [HintCode.UNUSED_LOCAL_VARIABLE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 15, 1),
+    ]);
   }
 
   test_isRead_notUsed_prefixExpr() async {
-    await assertErrorCodesInCode(r'''
+    await assertErrorsInCode(r'''
 main() {
   var v = 1;
   ++v;
 }
-''', [HintCode.UNUSED_LOCAL_VARIABLE]);
+''', [
+      error(HintCode.UNUSED_LOCAL_VARIABLE, 15, 1),
+    ]);
   }
 
   test_isRead_usedArgument() async {
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 fd823b1..99b749b 100644
--- a/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/unused_shown_name_test.dart
@@ -20,10 +20,12 @@
 class A {}
 class B {}
 ''');
-    assertErrorCodesInCode(r'''
+    assertErrorsInCode(r'''
 import 'lib1.dart' show A, B;
 A a;
-''', [HintCode.UNUSED_SHOWN_NAME]);
+''', [
+      error(HintCode.UNUSED_SHOWN_NAME, 27, 1),
+    ]);
   }
 
   test_unusedShownName_as() async {
@@ -31,10 +33,12 @@
 class A {}
 class B {}
 ''');
-    assertErrorCodesInCode(r'''
+    assertErrorsInCode(r'''
 import 'lib1.dart' as p show A, B;
 p.A a;
-''', [HintCode.UNUSED_SHOWN_NAME]);
+''', [
+      error(HintCode.UNUSED_SHOWN_NAME, 32, 1),
+    ]);
   }
 
   test_unusedShownName_duplicates() async {
@@ -44,12 +48,15 @@
 class C {}
 class D {}
 ''');
-    assertErrorCodesInCode(r'''
+    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]);
+''', [
+      error(HintCode.UNUSED_SHOWN_NAME, 27, 1),
+      error(HintCode.UNUSED_SHOWN_NAME, 57, 1),
+    ]);
   }
 
   test_unusedShownName_topLevelVariable() async {
@@ -59,12 +66,14 @@
 const int var3 = 3;
 const int var4 = 4;
 ''');
-    assertErrorCodesInCode(r'''
+    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]);
+''', [
+      error(HintCode.UNUSED_SHOWN_NAME, 66, 4),
+    ]);
   }
 }