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