| Index: pkg/analyzer/lib/src/error_formatter.dart
|
| diff --git a/pkg/analyzer/lib/src/error_formatter.dart b/pkg/analyzer/lib/src/error_formatter.dart
|
| index d9e6a28d24dfbba9ac8ec1dcc9d65085c8a1bd44..fad61124bf0a2b5a6415ade1ba23d7591b832e07 100644
|
| --- a/pkg/analyzer/lib/src/error_formatter.dart
|
| +++ b/pkg/analyzer/lib/src/error_formatter.dart
|
| @@ -4,18 +4,19 @@
|
|
|
| library error_formatter;
|
|
|
| +import 'package:analyzer/src/analyzer_impl.dart';
|
| +
|
| +import '../options.dart';
|
| import 'generated/engine.dart';
|
| import 'generated/error.dart';
|
| import 'generated/source_io.dart';
|
| -import '../options.dart';
|
| -import 'package:analyzer/src/analyzer_impl.dart';
|
| -
|
| -/// Returns `true` if [AnalysisError] should be printed.
|
| -typedef bool _ErrorFilter(AnalysisError error);
|
|
|
| /// Allows any [AnalysisError].
|
| bool _anyError(AnalysisError error) => true;
|
|
|
| +/// Returns `true` if [AnalysisError] should be printed.
|
| +typedef bool _ErrorFilter(AnalysisError error);
|
| +
|
| /**
|
| * Helper for formatting [AnalysisError]s.
|
| * The two format options are a user consumable format and a machine consumable format.
|
| @@ -27,6 +28,45 @@ class ErrorFormatter {
|
|
|
| ErrorFormatter(this.out, this.options, [this.errorFilter = _anyError]);
|
|
|
| + void formatError(Map<AnalysisError, LineInfo> errorToLine,
|
| + AnalysisError error) {
|
| + Source source = error.source;
|
| + LineInfo_Location location = errorToLine[error].getLocation(error.offset);
|
| + int length = error.length;
|
| + ErrorSeverity severity =
|
| + AnalyzerImpl.computeSeverity(error, options.enableTypeChecks);
|
| + if (options.machineFormat) {
|
| + if (severity == ErrorSeverity.WARNING && options.warningsAreFatal) {
|
| + severity = ErrorSeverity.ERROR;
|
| + }
|
| + out.write(severity);
|
| + out.write('|');
|
| + out.write(error.errorCode.type);
|
| + out.write('|');
|
| + out.write(error.errorCode.name);
|
| + out.write('|');
|
| + out.write(escapePipe(source.fullName));
|
| + out.write('|');
|
| + out.write(location.lineNumber);
|
| + out.write('|');
|
| + out.write(location.columnNumber);
|
| + out.write('|');
|
| + out.write(length);
|
| + out.write('|');
|
| + out.write(escapePipe(error.message));
|
| + } else {
|
| + String errorType = severity.displayName;
|
| + if (error.errorCode.type == ErrorType.HINT) {
|
| + errorType = error.errorCode.type.displayName;
|
| + }
|
| + // [warning] 'foo' is not a... (/Users/.../tmp/foo.dart, line 1, col 2)
|
| + out.write('[$errorType] ${error.message} ');
|
| + out.write('(${source.fullName}');
|
| + out.write(', line ${location.lineNumber}, col ${location.columnNumber})');
|
| + }
|
| + out.writeln();
|
| + }
|
| +
|
| void formatErrors(List<AnalysisErrorInfo> errorInfos) {
|
| var errors = new List<AnalysisError>();
|
| var errorToLine = new Map<AnalysisError, LineInfo>();
|
| @@ -41,16 +81,18 @@ class ErrorFormatter {
|
| // sort errors
|
| errors.sort((AnalysisError error1, AnalysisError error2) {
|
| // severity
|
| - ErrorSeverity severity1 = AnalyzerImpl.computeSeverity(
|
| - error1, options.enableTypeChecks);
|
| - ErrorSeverity severity2 = AnalyzerImpl.computeSeverity(
|
| - error2, options.enableTypeChecks);
|
| + ErrorSeverity severity1 =
|
| + AnalyzerImpl.computeSeverity(error1, options.enableTypeChecks);
|
| + ErrorSeverity severity2 =
|
| + AnalyzerImpl.computeSeverity(error2, options.enableTypeChecks);
|
| int compare = severity2.compareTo(severity1);
|
| if (compare != 0) {
|
| return compare;
|
| }
|
| // path
|
| - compare = Comparable.compare(error1.source.fullName.toLowerCase(), error2.source.fullName.toLowerCase());
|
| + compare = Comparable.compare(
|
| + error1.source.fullName.toLowerCase(),
|
| + error2.source.fullName.toLowerCase());
|
| if (compare != 0) {
|
| return compare;
|
| }
|
| @@ -62,8 +104,8 @@ class ErrorFormatter {
|
| int warnCount = 0;
|
| int hintCount = 0;
|
| for (AnalysisError error in errors) {
|
| - ErrorSeverity severity = AnalyzerImpl.computeSeverity(
|
| - error, options.enableTypeChecks);
|
| + ErrorSeverity severity =
|
| + AnalyzerImpl.computeSeverity(error, options.enableTypeChecks);
|
| if (severity == ErrorSeverity.ERROR) {
|
| errorCount++;
|
| } else if (severity == ErrorSeverity.WARNING) {
|
| @@ -121,44 +163,6 @@ class ErrorFormatter {
|
| }
|
| }
|
|
|
| - void formatError(Map<AnalysisError, LineInfo> errorToLine, AnalysisError error) {
|
| - Source source = error.source;
|
| - LineInfo_Location location = errorToLine[error].getLocation(error.offset);
|
| - int length = error.length;
|
| - ErrorSeverity severity = AnalyzerImpl.computeSeverity(
|
| - error, options.enableTypeChecks);
|
| - if (options.machineFormat) {
|
| - if (severity == ErrorSeverity.WARNING && options.warningsAreFatal) {
|
| - severity = ErrorSeverity.ERROR;
|
| - }
|
| - out.write(severity);
|
| - out.write('|');
|
| - out.write(error.errorCode.type);
|
| - out.write('|');
|
| - out.write(error.errorCode.name);
|
| - out.write('|');
|
| - out.write(escapePipe(source.fullName));
|
| - out.write('|');
|
| - out.write(location.lineNumber);
|
| - out.write('|');
|
| - out.write(location.columnNumber);
|
| - out.write('|');
|
| - out.write(length);
|
| - out.write('|');
|
| - out.write(escapePipe(error.message));
|
| - } else {
|
| - String errorType = severity.displayName;
|
| - if (error.errorCode.type == ErrorType.HINT) {
|
| - errorType = error.errorCode.type.displayName;
|
| - }
|
| - // [warning] 'foo' is not a... (/Users/.../tmp/foo.dart, line 1, col 2)
|
| - out.write('[$errorType] ${error.message} ');
|
| - out.write('(${source.fullName}');
|
| - out.write(', line ${location.lineNumber}, col ${location.columnNumber})');
|
| - }
|
| - out.writeln();
|
| - }
|
| -
|
| static String escapePipe(String input) {
|
| var result = new StringBuffer();
|
| for (var c in input.codeUnits) {
|
|
|