| Index: tests/compiler/dart2js/type_promotion_test.dart
 | 
| diff --git a/tests/compiler/dart2js/type_promotion_test.dart b/tests/compiler/dart2js/type_promotion_test.dart
 | 
| index a25c2211a6f3a9f44d1ff5dbccb305bebefb422e..8739394ef6a0923f49c62e25ad7ac6bd3431fce2 100644
 | 
| --- a/tests/compiler/dart2js/type_promotion_test.dart
 | 
| +++ b/tests/compiler/dart2js/type_promotion_test.dart
 | 
| @@ -3,18 +3,10 @@
 | 
|  // BSD-style license that can be found in the LICENSE file.
 | 
|  
 | 
|  // Test that dart2js produces the expected static type warnings for type
 | 
| -// promotion langauge tests. This ensures that the analyzer and dart2js agrees
 | 
| +// promotion language tests. This ensures that the analyzer and dart2js agrees
 | 
|  // on these tests.
 | 
|  
 | 
| -import 'dart:async';
 | 
| -import 'dart:io';
 | 
| -import 'package:expect/expect.dart';
 | 
| -import 'memory_compiler.dart';
 | 
| -import '../../../sdk/lib/_internal/compiler/implementation/filenames.dart';
 | 
| -import '../../../sdk/lib/_internal/compiler/implementation/source_file.dart';
 | 
| -import '../../../sdk/lib/_internal/compiler/implementation/source_file_provider.dart';
 | 
| -import '../../../sdk/lib/_internal/compiler/implementation/util/uri_extras.dart';
 | 
| -import 'dart:convert';
 | 
| +import 'warnings_checker.dart';
 | 
|  
 | 
|  /// Map from test files to a map of their expected status. If the status map is
 | 
|  /// `null` no warnings must be missing or unexpected, otherwise the status map
 | 
| @@ -33,64 +25,5 @@ const Map<String, dynamic> TESTS = const {
 | 
|  };
 | 
|  
 | 
|  void main() {
 | 
| -  bool isWindows = Platform.isWindows;
 | 
| -  Uri script = currentDirectory.resolveUri(Platform.script);
 | 
| -  bool warningsMismatch = false;
 | 
| -  Future.forEach(TESTS.keys, (String test) {
 | 
| -    Uri uri = script.resolve('../../$test');
 | 
| -    String source = UTF8.decode(readAll(uriPathToNative(uri.path)));
 | 
| -    SourceFile file = new StringSourceFile(
 | 
| -        relativize(currentDirectory, uri, isWindows), source);
 | 
| -    Map<int,String> expectedWarnings = {};
 | 
| -    int lineNo = 0;
 | 
| -    for (String line in source.split('\n')) {
 | 
| -      if (line.contains('///') && line.contains('static type warning')) {
 | 
| -        expectedWarnings[lineNo] = line;
 | 
| -      }
 | 
| -      lineNo++;
 | 
| -    }
 | 
| -    Set<int> unseenWarnings = new Set<int>.from(expectedWarnings.keys);
 | 
| -    DiagnosticCollector collector = new DiagnosticCollector();
 | 
| -    var compiler = compilerFor(const {},
 | 
| -         diagnosticHandler: collector,
 | 
| -         options: ['--analyze-only'],
 | 
| -         showDiagnostics: false);
 | 
| -    return compiler.run(uri).then((_) {
 | 
| -      Map<String, List<int>> statusMap = TESTS[test];
 | 
| -      // Line numbers with known unexpected warnings.
 | 
| -      List<int> unexpectedStatus = [];
 | 
| -      if (statusMap != null && statusMap.containsKey('unexpected')) {
 | 
| -        unexpectedStatus = statusMap['unexpected'];
 | 
| -      }
 | 
| -      // Line numbers with known missing warnings.
 | 
| -      List<int> missingStatus = [];
 | 
| -      if (statusMap != null && statusMap.containsKey('missing')) {
 | 
| -        missingStatus = statusMap['missing'];
 | 
| -      }
 | 
| -      for (DiagnosticMessage message in collector.warnings) {
 | 
| -        Expect.equals(uri, message.uri);
 | 
| -        int lineNo = file.getLine(message.begin);
 | 
| -        if (expectedWarnings.containsKey(lineNo)) {
 | 
| -          unseenWarnings.remove(lineNo);
 | 
| -        } else if (!unexpectedStatus.contains(lineNo+1)) {
 | 
| -          warningsMismatch = true;
 | 
| -          print(file.getLocationMessage(
 | 
| -              'Unexpected warning: ${message.message}',
 | 
| -              message.begin, message.end, true, (x) => x));
 | 
| -        }
 | 
| -      }
 | 
| -      if (!unseenWarnings.isEmpty) {
 | 
| -        for (int lineNo in unseenWarnings) {
 | 
| -          if (!missingStatus.contains(lineNo+1)) {
 | 
| -            warningsMismatch = true;
 | 
| -            String line = expectedWarnings[lineNo];
 | 
| -            print('$uri [${lineNo+1}]: Missing static type warning.');
 | 
| -            print(line);
 | 
| -          }
 | 
| -        }
 | 
| -      }
 | 
| -    });
 | 
| -  }).then((_) {
 | 
| -    Expect.isFalse(warningsMismatch);
 | 
| -  });
 | 
| +  checkWarnings(TESTS);
 | 
|  }
 | 
| 
 |