Support "[as ...]" in V8 stack traces in pkg/stack_trace. BUG=13431 R=jmesserly@google.com Review URL: https://codereview.chromium.org//23533074 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/stack_trace@27720 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkgs/stack_trace/lib/src/frame.dart b/pkgs/stack_trace/lib/src/frame.dart index b222737..e82f078 100644 --- a/pkgs/stack_trace/lib/src/frame.dart +++ b/pkgs/stack_trace/lib/src/frame.dart
@@ -16,7 +16,8 @@ // 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+))$'); + r'^\s*at (?:([^\s].*?)(?: \[as [^\]]+\])? ' + r'\((.+):(\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
diff --git a/pkgs/stack_trace/test/frame_test.dart b/pkgs/stack_trace/test/frame_test.dart index 0be717d..26a0f21 100644 --- a/pkgs/stack_trace/test/frame_test.dart +++ b/pkgs/stack_trace/test/frame_test.dart
@@ -74,6 +74,18 @@ expect(frame.member, equals('<fn>')); }); + test('parses a stack frame with [as ...] correctly', () { + // Ignore "[as ...]", since other stack trace formats don't support a + // similar construct. + var frame = new Frame.parseV8(" at VW.call\$0 [as call\$4] " + "(http://pub.dartlang.org/stuff.dart.js:560:28)"); + expect(frame.uri, + equals(Uri.parse("http://pub.dartlang.org/stuff.dart.js"))); + expect(frame.line, equals(560)); + expect(frame.column, equals(28)); + expect(frame.member, equals('VW.call\$0')); + }); + test('converts "<anonymous>" to "<fn>"', () { String parsedMember(String member) => new Frame.parseV8(' at $member (foo:0:0)').member;