-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
stacktrace.dart
58 lines (51 loc) · 2.14 KB
/
stacktrace.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// 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.
part of dart.core;
/// An interface implemented by all stack trace objects.
///
/// A [StackTrace] is intended to convey information to the user about the call
/// sequence that triggered an exception.
///
/// These objects are created by the runtime, it is not possible to create
/// them programmatically.
abstract interface class StackTrace {
/// A stack trace object with no information.
///
/// This stack trace is used as the default in situations where
/// a stack trace is required, but the user has not supplied one.
@Since("2.8")
static const empty = const _StringStackTrace("");
StackTrace(); // In case existing classes extend StackTrace.
/// Create a `StackTrace` object from [stackTraceString].
///
/// The created stack trace will have a `toString` method returning
/// `stackTraceString`.
///
/// The `stackTraceString` can be a string returned by some other
/// stack trace, or it can be any string at all.
/// If the string doesn't look like a stack trace, code that interprets
/// stack traces is likely to fail, so fake stack traces should be used
/// with care.
factory StackTrace.fromString(String stackTraceString) = _StringStackTrace;
/// Returns a representation of the current stack trace.
///
/// This is similar to what can be achieved by doing:
/// ```dart
/// try { throw 0; } catch (_, stack) { return stack; }
/// ```
/// The getter achieves this without throwing if possible.
external static StackTrace get current;
/// Returns a [String] representation of the stack trace.
///
/// The string represents the full stack trace starting from
/// the point where a throw occurred to the top of the current call sequence.
///
/// The exact format of the string representation is not final.
String toString();
}
class _StringStackTrace implements StackTrace {
final String _stackTrace;
const _StringStackTrace(this._stackTrace);
String toString() => _stackTrace;
}