Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(379)

Unified Diff: pkg/stack_trace/lib/src/frame.dart

Issue 17998002: Revert "Add support for V8 and Firefox stack traces in pkg/stack_trace." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/pkg.status ('k') | pkg/stack_trace/lib/src/trace.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/stack_trace/lib/src/frame.dart
diff --git a/pkg/stack_trace/lib/src/frame.dart b/pkg/stack_trace/lib/src/frame.dart
index 3b8036f668f757109af152cb1279d533bbd3435a..d750b9178d56c1bd55af01da828f224be256717b 100644
--- a/pkg/stack_trace/lib/src/frame.dart
+++ b/pkg/stack_trace/lib/src/frame.dart
@@ -9,23 +9,9 @@ import 'package:pathos/path.dart' as path;
import 'trace.dart';
-// #1 Foo._bar (file:///home/nweiz/code/stuff.dart:42:21)
-final _vmFrame = new RegExp(
+final _nativeFrameRegExp = new RegExp(
r'^#\d+\s+([^\s].*) \((.+):(\d+):(\d+)\)$');
-// at VW.call$0 (http://pub.dartlang.org/stuff.dart.js:560:28)
-// at http://pub.dartlang.org/stuff.dart.js:560:28
-final _v8Frame = new RegExp(
- r'^\s*at (?:([^\s].*) \((.+):(\d+):(\d+)\)|(.+):(\d+):(\d+))$');
-
-// .VW.call$0@http://pub.dartlang.org/stuff.dart.js:560
-// .VW.call$0("arg")@http://pub.dartlang.org/stuff.dart.js:560
-// .VW.call$0/name<@http://pub.dartlang.org/stuff.dart.js:560
-final _firefoxFrame = new RegExp(
- r'^([^@(/]*)(?:\(.*\))?(/[^<]*<)?(?:\(.*\))?@(.*):(\d+)$');
-
-final _initialDot = new RegExp(r"^\.");
-
/// A single stack frame. Each frame points to a precise location in Dart code.
class Frame {
/// The URI of the file in which the code is located.
@@ -90,11 +76,13 @@ class Frame {
return new Trace.current(level + 1).frames.first;
}
- /// Parses a string representation of a Dart VM stack frame.
- factory Frame.parseVM(String frame) {
- var match = _vmFrame.firstMatch(frame);
+ /// Parses a string representation of a stack frame.
+ ///
+ /// [frame] should be formatted in the same way as a native stack trace frame.
+ factory Frame.parse(String frame) {
+ var match = _nativeFrameRegExp.firstMatch(frame);
if (match == null) {
- throw new FormatException("Couldn't parse VM stack trace line '$frame'.");
+ throw new FormatException("Couldn't parse stack trace line '$frame'.");
}
var uri = Uri.parse(match[2]);
@@ -102,48 +90,6 @@ class Frame {
return new Frame(uri, int.parse(match[3]), int.parse(match[4]), member);
}
- /// Parses a string representation of a Chrome/V8 stack frame.
- factory Frame.parseV8(String frame) {
- var match = _v8Frame.firstMatch(frame);
- if (match == null) {
- throw new FormatException("Couldn't parse V8 stack trace line '$frame'.");
- }
-
- // V8 stack frames can be in two forms.
- if (match[2] != null) {
- // The first form looks like " at FUNCTION (URI:LINE:COL)"
- var uri = Uri.parse(match[2]);
- var member = match[1].replaceAll("<anonymous>", "<fn>");
- return new Frame(uri, int.parse(match[3]), int.parse(match[4]), member);
- } else {
- // The second form looks like " at URI:LINE:COL", and is used for
- // anonymous functions.
- var uri = Uri.parse(match[5]);
- return new Frame(uri, int.parse(match[6]), int.parse(match[7]), "<fn>");
- }
- }
-
- /// Parses a string representation of a Firefox stack frame.
- factory Frame.parseFirefox(String frame) {
- var match = _firefoxFrame.firstMatch(frame);
- if (match == null) {
- throw new FormatException(
- "Couldn't parse Firefox stack trace line '$frame'.");
- }
-
- var uri = Uri.parse(match[3]);
- var member = match[1];
- if (member == "") {
- member = "<fn>";
- } else if (match[2] != null) {
- member = "$member.<fn>";
- }
- // Some Firefox members have initial dots. We remove them for consistency
- // with other platforms.
- member = member.replaceFirst(_initialDot, '');
- return new Frame(uri, int.parse(match[4]), null, member);
- }
-
Frame(this.uri, this.line, this.column, this.member);
String toString() => '$location in $member';
« no previous file with comments | « pkg/pkg.status ('k') | pkg/stack_trace/lib/src/trace.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698