| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library trace; | 5 library trace; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 import 'dart:math' as math; | 8 import 'dart:math' as math; |
| 9 | 9 |
| 10 import 'chain.dart'; | 10 import 'chain.dart'; |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 Trace.parseV8(String trace) | 143 Trace.parseV8(String trace) |
| 144 : this(trace.split("\n").skip(1) | 144 : this(trace.split("\n").skip(1) |
| 145 // It's possible that an Exception's description contains a line that | 145 // It's possible that an Exception's description contains a line that |
| 146 // looks like a V8 trace line, which will screw this up. | 146 // looks like a V8 trace line, which will screw this up. |
| 147 // Unfortunately, that's impossible to detect. | 147 // Unfortunately, that's impossible to detect. |
| 148 .skipWhile((line) => !line.startsWith(_v8TraceLine)) | 148 .skipWhile((line) => !line.startsWith(_v8TraceLine)) |
| 149 .map((line) => new Frame.parseV8(line))); | 149 .map((line) => new Frame.parseV8(line))); |
| 150 | 150 |
| 151 /// Parses a string representation of a JavaScriptCore stack trace. | 151 /// Parses a string representation of a JavaScriptCore stack trace. |
| 152 Trace.parseJSCore(String trace) | 152 Trace.parseJSCore(String trace) |
| 153 : this(trace.split("\n").map((line) => new Frame.parseV8(line))); | 153 : this(trace.split("\n") |
| 154 .where((line) => line != "\tat ") |
| 155 .map((line) => new Frame.parseV8(line))); |
| 154 | 156 |
| 155 /// Parses a string representation of an Internet Explorer stack trace. | 157 /// Parses a string representation of an Internet Explorer stack trace. |
| 156 /// | 158 /// |
| 157 /// IE10+ traces look just like V8 traces. Prior to IE10, stack traces can't | 159 /// IE10+ traces look just like V8 traces. Prior to IE10, stack traces can't |
| 158 /// be retrieved. | 160 /// be retrieved. |
| 159 Trace.parseIE(String trace) | 161 Trace.parseIE(String trace) |
| 160 : this.parseV8(trace); | 162 : this.parseV8(trace); |
| 161 | 163 |
| 162 /// Parses a string representation of a Firefox stack trace. | 164 /// Parses a string representation of a Firefox stack trace. |
| 163 Trace.parseFirefox(String trace) | 165 Trace.parseFirefox(String trace) |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 // Figure out the longest path so we know how much to pad. | 274 // Figure out the longest path so we know how much to pad. |
| 273 var longest = frames.map((frame) => frame.location.length) | 275 var longest = frames.map((frame) => frame.location.length) |
| 274 .fold(0, math.max); | 276 .fold(0, math.max); |
| 275 | 277 |
| 276 // Print out the stack trace nicely formatted. | 278 // Print out the stack trace nicely formatted. |
| 277 return frames.map((frame) { | 279 return frames.map((frame) { |
| 278 return '${padRight(frame.location, longest)} ${frame.member}\n'; | 280 return '${padRight(frame.location, longest)} ${frame.member}\n'; |
| 279 }).join(); | 281 }).join(); |
| 280 } | 282 } |
| 281 } | 283 } |
| OLD | NEW |