031c343cae
This adds a function to convert a Trace to a VM-style StackTrace object, and to parse a Trace-style string into a Trace. R=jmesserly@google.com Review URL: https://codereview.chromium.org//18029023 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24611 260f80e4-7a28-3924-810f-c04153c831b5
32 lines
1015 B
Dart
32 lines
1015 B
Dart
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
library vm_trace;
|
|
|
|
import 'frame.dart';
|
|
import 'utils.dart';
|
|
|
|
/// An implementation of [StackTrace] that emulates the behavior of the VM's
|
|
/// implementation.
|
|
///
|
|
/// In particular, when [toString] is called, this returns a string in the VM's
|
|
/// stack trace format.
|
|
class VMTrace implements StackTrace {
|
|
/// The stack frames that comprise this stack trace.
|
|
final List<Frame> frames;
|
|
|
|
VMTrace(this.frames);
|
|
|
|
String toString() {
|
|
var i = 1;
|
|
return frames.map((frame) {
|
|
var number = padRight("#${i++}", 8);
|
|
var member = frame.member.replaceAll("<fn>", "<anonymous closure>");
|
|
var line = frame.line == null ? 0 : frame.line;
|
|
var column = frame.column == null ? 0 : frame.column;
|
|
return "$number$member (${frame.uri}:$line:$column)\n";
|
|
}).join();
|
|
}
|
|
}
|