| Index: pkg/compiler/lib/src/helpers/trace.dart
|
| diff --git a/pkg/compiler/lib/src/helpers/trace.dart b/pkg/compiler/lib/src/helpers/trace.dart
|
| index 671d842ee7f6ed2a9e72eed4b068354b133f93ad..021ba97fd92e01bb96972ed913243e42df47960d 100644
|
| --- a/pkg/compiler/lib/src/helpers/trace.dart
|
| +++ b/pkg/compiler/lib/src/helpers/trace.dart
|
| @@ -7,9 +7,7 @@ import '../util/util.dart';
|
|
|
| /// Function signature for [trace].
|
| typedef void Trace(String message,
|
| - {bool condition(String stackTrace),
|
| - int limit,
|
| - bool throwOnPrint});
|
| + {bool condition(String stackTrace), int limit, bool throwOnPrint});
|
|
|
| /**
|
| * Helper method for printing stack traces for debugging.
|
| @@ -33,15 +31,15 @@ Trace get trace {
|
| return _trace;
|
| }
|
|
|
| -void _trace(String message, {bool condition(String stackTrace), int limit,
|
| - bool throwOnPrint: false}) {
|
| +void _trace(String message,
|
| + {bool condition(String stackTrace), int limit, bool throwOnPrint: false}) {
|
| try {
|
| throw '';
|
| } catch (e, s) {
|
| String stackTrace;
|
| try {
|
| - stackTrace = prettifyStackTrace(
|
| - s, rangeStart: 1, rangeEnd: limit, filePrefix: stackTraceFilePrefix);
|
| + stackTrace = prettifyStackTrace(s,
|
| + rangeStart: 1, rangeEnd: limit, filePrefix: stackTraceFilePrefix);
|
| } catch (e) {
|
| print(e);
|
| stackTrace = '$s';
|
| @@ -61,12 +59,9 @@ traceExceptions(List<String> exceptions) {
|
| }
|
|
|
| /// Function signature of [traceAndReport].
|
| -typedef void TraceAndReport(DiagnosticReporter reporter,
|
| - Spannable node,
|
| - String message,
|
| - {bool condition(String stackTrace),
|
| - int limit,
|
| - bool throwOnPrint});
|
| +typedef void TraceAndReport(
|
| + DiagnosticReporter reporter, Spannable node, String message,
|
| + {bool condition(String stackTrace), int limit, bool throwOnPrint});
|
|
|
| /// Calls [reportHere] and [trace] with the same message.
|
| TraceAndReport get traceAndReport {
|
| @@ -78,14 +73,11 @@ TraceAndReport get traceAndReport {
|
| TraceAndReport get reportAndTrace => traceAndReport;
|
|
|
| /// Implementation of [traceAndReport].
|
| -void _traceAndReport(DiagnosticReporter reporter,
|
| - Spannable node,
|
| - String message,
|
| - {bool condition(String stackTrace), int limit,
|
| - bool throwOnPrint: false}) {
|
| -
|
| +void _traceAndReport(
|
| + DiagnosticReporter reporter, Spannable node, String message,
|
| + {bool condition(String stackTrace), int limit, bool throwOnPrint: false}) {
|
| trace(message, limit: limit, throwOnPrint: throwOnPrint,
|
| - condition: (String stackTrace) {
|
| + condition: (String stackTrace) {
|
| bool result = condition != null ? condition(stackTrace) : true;
|
| if (result) {
|
| reportHere(reporter, node, message);
|
| @@ -99,15 +91,15 @@ void _traceAndReport(DiagnosticReporter reporter,
|
| /// Use [offset] to discard the first [offset] calls of the call stack. Defaults
|
| /// to `1`, that is, discard the call to [stackTrace] itself. Use [limit] to
|
| /// limit the length of the stack trace lines.
|
| -StackTraceLines stackTrace({int offset: 1,
|
| - int limit: null}) {
|
| +StackTraceLines stackTrace({int offset: 1, int limit: null}) {
|
| int rangeStart = offset;
|
| int rangeEnd = limit == null ? null : rangeStart + limit;
|
| try {
|
| throw '';
|
| } catch (_, stackTrace) {
|
| return new StackTraceLines.fromTrace(stackTrace,
|
| - rangeStart: offset, rangeEnd: rangeEnd,
|
| + rangeStart: offset,
|
| + rangeEnd: rangeEnd,
|
| filePrefix: stackTraceFilePrefix);
|
| }
|
| return null;
|
| @@ -121,10 +113,7 @@ class StackTraceLines {
|
| final int maxColumnNoLength;
|
|
|
| factory StackTraceLines.fromTrace(StackTrace s,
|
| - {int rangeStart,
|
| - int rangeEnd,
|
| - String filePrefix,
|
| - String lambda: r'?'}) {
|
| + {int rangeStart, int rangeEnd, String filePrefix, String lambda: r'?'}) {
|
| final RegExp indexPattern = new RegExp(r'#\d+\s*');
|
| int index = -1;
|
| int maxFileLength = 0;
|
| @@ -153,13 +142,13 @@ class StackTraceLines {
|
| int leftParenPos = line.indexOf('(');
|
| int rightParenPos = line.indexOf(')', leftParenPos);
|
| int lastColon = line.lastIndexOf(':', rightParenPos);
|
| - int nextToLastColon = line.lastIndexOf(':', lastColon-1);
|
| + int nextToLastColon = line.lastIndexOf(':', lastColon - 1);
|
|
|
| String lineNo;
|
| String columnNo;
|
| if (nextToLastColon != -1) {
|
| - lineNo = line.substring(nextToLastColon+1, lastColon);
|
| - columnNo = line.substring(lastColon+1, rightParenPos);
|
| + lineNo = line.substring(nextToLastColon + 1, lastColon);
|
| + columnNo = line.substring(lastColon + 1, rightParenPos);
|
| try {
|
| int.parse(columnNo);
|
| try {
|
| @@ -177,7 +166,7 @@ class StackTraceLines {
|
| nextToLastColon = rightParenPos;
|
| }
|
| } else {
|
| - lineNo = line.substring(lastColon+1, rightParenPos);
|
| + lineNo = line.substring(lastColon + 1, rightParenPos);
|
| columnNo = '';
|
| try {
|
| int.parse(lineNo);
|
| @@ -197,14 +186,14 @@ class StackTraceLines {
|
| maxColumnNoLength = columnNo.length;
|
| }
|
|
|
| - String file = line.substring(leftParenPos+1, nextToLastColon);
|
| + String file = line.substring(leftParenPos + 1, nextToLastColon);
|
| if (filePrefix != null && file.startsWith(filePrefix)) {
|
| file = file.substring(filePrefix.length);
|
| }
|
| if (file.length > maxFileLength) {
|
| maxFileLength = file.length;
|
| }
|
| - String method = line.substring(0, leftParenPos-1);
|
| + String method = line.substring(0, leftParenPos - 1);
|
| if (lambda != null) {
|
| method = method.replaceAll('<anonymous closure>', lambda);
|
| }
|
| @@ -217,31 +206,25 @@ class StackTraceLines {
|
| lines, maxFileLength, maxLineNoLength, maxColumnNoLength);
|
| }
|
|
|
| - StackTraceLines.fromLines(this.lines,
|
| - this.maxFileLength,
|
| - this.maxLineNoLength,
|
| - this.maxColumnNoLength);
|
| + StackTraceLines.fromLines(this.lines, this.maxFileLength,
|
| + this.maxLineNoLength, this.maxColumnNoLength);
|
|
|
| StackTraceLines subtrace(int offset) {
|
| - return new StackTraceLines.fromLines(
|
| - lines.sublist(offset),
|
| - maxFileLength,
|
| - maxLineNoLength,
|
| - maxColumnNoLength);
|
| + return new StackTraceLines.fromLines(lines.sublist(offset), maxFileLength,
|
| + maxLineNoLength, maxColumnNoLength);
|
| }
|
|
|
| - String prettify({bool showColumnNo: false,
|
| - bool showDots: true}) {
|
| + String prettify({bool showColumnNo: false, bool showDots: true}) {
|
| StringBuffer sb = new StringBuffer();
|
| bool dots = true;
|
| for (StackTraceLine line in lines) {
|
| sb.write(' ');
|
| line.printOn(sb,
|
| - fileLength: maxFileLength,
|
| - padding: showDots && dots ? ' .' : ' ',
|
| - lineNoLength: maxLineNoLength,
|
| - showColumnNo: showColumnNo,
|
| - columnNoLength: maxColumnNoLength);
|
| + fileLength: maxFileLength,
|
| + padding: showDots && dots ? ' .' : ' ',
|
| + lineNoLength: maxLineNoLength,
|
| + showColumnNo: showColumnNo,
|
| + columnNoLength: maxColumnNoLength);
|
|
|
| dots = !dots;
|
| }
|
| @@ -261,15 +244,15 @@ class StackTraceLine {
|
| final String columnNo;
|
| final String method;
|
|
|
| - StackTraceLine(this.index, this.file, this.lineNo,
|
| - this.columnNo, this.method);
|
| + StackTraceLine(
|
| + this.index, this.file, this.lineNo, this.columnNo, this.method);
|
|
|
| void printOn(StringBuffer sb,
|
| - {String padding: ' ',
|
| - int fileLength,
|
| - int lineNoLength,
|
| - int columnNoLength,
|
| - bool showColumnNo: false}) {
|
| + {String padding: ' ',
|
| + int fileLength,
|
| + int lineNoLength,
|
| + int columnNoLength,
|
| + bool showColumnNo: false}) {
|
| String fileText = '${file} ';
|
| if (fileLength != null) {
|
| fileText = pad(fileText, fileLength, dots: padding);
|
| @@ -278,29 +261,29 @@ class StackTraceLine {
|
| if (lineNoLength != null) {
|
| lineNoText = pad(lineNoText, lineNoLength, padLeft: true);
|
| }
|
| - String columnNoText = showColumnNo ? '': columnNo;
|
| + String columnNoText = showColumnNo ? '' : columnNo;
|
| if (columnNoLength != null) {
|
| - columnNoText = ':${pad(columnNoText, columnNoLength)}';
|
| + columnNoText = ':${pad(columnNoText, columnNoLength)}';
|
| }
|
| sb.write('$fileText $lineNoText$columnNoText $method\n');
|
| }
|
|
|
| int get hashCode {
|
| return 13 * index +
|
| - 17 * file.hashCode +
|
| - 19 * lineNo.hashCode +
|
| - 23 * columnNo.hashCode +
|
| - 29 * method.hashCode;
|
| + 17 * file.hashCode +
|
| + 19 * lineNo.hashCode +
|
| + 23 * columnNo.hashCode +
|
| + 29 * method.hashCode;
|
| }
|
|
|
| bool operator ==(other) {
|
| if (identical(this, other)) return true;
|
| if (other is! StackTraceLine) return false;
|
| return index == other.index &&
|
| - file == other.file &&
|
| - lineNo == other.lineNo &&
|
| - columnNo == other.columnNo &&
|
| - method == other.method;
|
| + file == other.file &&
|
| + lineNo == other.lineNo &&
|
| + columnNo == other.columnNo &&
|
| + method == other.method;
|
| }
|
|
|
| String toString() => "$method @ $file [$lineNo:$columnNo]";
|
| @@ -324,16 +307,18 @@ class StackTraceLine {
|
| * If [lambda] is non-null, anonymous closures are printed as [lambda].
|
| */
|
| String prettifyStackTrace(StackTrace stackTrace,
|
| - {int rangeStart,
|
| - int rangeEnd,
|
| - bool showColumnNo: false,
|
| - bool showDots: true,
|
| - String filePrefix,
|
| - String lambda: r'?'}) {
|
| + {int rangeStart,
|
| + int rangeEnd,
|
| + bool showColumnNo: false,
|
| + bool showDots: true,
|
| + String filePrefix,
|
| + String lambda: r'?'}) {
|
| return new StackTraceLines.fromTrace(stackTrace,
|
| - rangeStart: rangeStart, rangeEnd: rangeEnd,
|
| - filePrefix: filePrefix, lambda: lambda)
|
| - .prettify(showColumnNo: showColumnNo, showDots: showDots);
|
| + rangeStart: rangeStart,
|
| + rangeEnd: rangeEnd,
|
| + filePrefix: filePrefix,
|
| + lambda: lambda)
|
| + .prettify(showColumnNo: showColumnNo, showDots: showDots);
|
| }
|
|
|
| /**
|
| @@ -343,7 +328,7 @@ String prettifyStackTrace(StackTrace stackTrace,
|
| * A repetition of the [dots] text is used for padding.
|
| */
|
| String pad(String text, int intendedLength,
|
| - {bool padLeft: false, String dots: ' '}) {
|
| + {bool padLeft: false, String dots: ' '}) {
|
| if (text.length == intendedLength) return text;
|
| if (text.length > intendedLength) return text.substring(0, intendedLength);
|
| if (dots == null || dots.isEmpty) dots = ' ';
|
| @@ -352,7 +337,7 @@ String pad(String text, int intendedLength,
|
| if (!padLeft) {
|
| sb.write(text);
|
| }
|
| - for (int index = text.length ; index < intendedLength ; index ++) {
|
| + for (int index = text.length; index < intendedLength; index++) {
|
| int dotsIndex = index % dotsLength;
|
| sb.write(dots.substring(dotsIndex, dotsIndex + 1));
|
| }
|
|
|