| 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);
|
| }
|
|
|