| Index: tests/compiler/dart2js/warnings_checker.dart
|
| diff --git a/tests/compiler/dart2js/warnings_checker.dart b/tests/compiler/dart2js/warnings_checker.dart
|
| index e1dba07546fa5be6b760c83d7626b6534a9960f0..daaa32d8ed058370ba0c1e3b215ece01f6aea376 100644
|
| --- a/tests/compiler/dart2js/warnings_checker.dart
|
| +++ b/tests/compiler/dart2js/warnings_checker.dart
|
| @@ -1,83 +1,83 @@
|
| -// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -// Test that dart2js produces the expected static type warnings to ensures that
|
| -// the analyzer and dart2js agrees on the tests.
|
| -
|
| -import 'dart:async';
|
| -import 'dart:io';
|
| -import 'package:expect/expect.dart';
|
| -import 'package:async_helper/async_helper.dart';
|
| -import 'memory_compiler.dart';
|
| -import 'package:compiler/src/filenames.dart';
|
| -import 'package:compiler/src/io/source_file.dart';
|
| -import 'package:compiler/src/source_file_provider.dart';
|
| -import 'package:compiler/src/util/uri_extras.dart';
|
| -import 'dart:convert';
|
| -
|
| -void checkWarnings(Map<String, dynamic> tests, [List<String> arguments]) {
|
| - bool isWindows = Platform.isWindows;
|
| - Uri script = currentDirectory.resolveUri(Platform.script);
|
| - bool warningsMismatch = false;
|
| - bool verbose = arguments != null && arguments.contains('-v');
|
| - asyncTest(() => Future.forEach(tests.keys, (String test) {
|
| - Uri uri = script.resolve('../../$test');
|
| - String source = UTF8.decode(readAll(uriPathToNative(uri.path)));
|
| - SourceFile file = new StringSourceFile(
|
| - uri, 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') ||
|
| - line.contains('static 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: verbose);
|
| - 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));
|
| - }
|
| - }
|
| - 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);
|
| - }));
|
| -}
|
| +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +// Test that dart2js produces the expected static type warnings to ensures that
|
| +// the analyzer and dart2js agrees on the tests.
|
| +
|
| +import 'dart:async';
|
| +import 'dart:io';
|
| +import 'package:expect/expect.dart';
|
| +import 'package:async_helper/async_helper.dart';
|
| +import 'memory_compiler.dart';
|
| +import 'package:compiler/src/filenames.dart';
|
| +import 'package:compiler/src/io/source_file.dart';
|
| +import 'package:compiler/src/source_file_provider.dart';
|
| +import 'package:compiler/src/util/uri_extras.dart';
|
| +import 'dart:convert';
|
| +
|
| +void checkWarnings(Map<String, dynamic> tests, [List<String> arguments]) {
|
| + bool isWindows = Platform.isWindows;
|
| + Uri script = currentDirectory.resolveUri(Platform.script);
|
| + bool warningsMismatch = false;
|
| + bool verbose = arguments != null && arguments.contains('-v');
|
| + asyncTest(() => Future.forEach(tests.keys, (String test) {
|
| + Uri uri = script.resolve('../../$test');
|
| + String source = UTF8.decode(readAll(uriPathToNative(uri.path)));
|
| + SourceFile file = new StringSourceFile(
|
| + uri, 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') ||
|
| + line.contains('static 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: verbose);
|
| + 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));
|
| + }
|
| + }
|
| + 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);
|
| + }));
|
| +}
|
|
|