Use StackTrace.current

Closes https://github.com/dart-lang/stack_trace/issues/8

R=nweiz@google.com

Review URL: https://codereview.chromium.org//1653603002 .
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fb699c6..66c1108 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.6.1
+
+* Use `StacktTrace.current` in Dart SDK 1.14 to get the current stack trace.
+
 ## 1.6.0
 
 * Add a `when` parameter to `Chain.capture()`. This allows capturing to be
diff --git a/lib/src/trace.dart b/lib/src/trace.dart
index 6d9823b..927a167 100644
--- a/lib/src/trace.dart
+++ b/lib/src/trace.dart
@@ -81,12 +81,8 @@
           "to 0.");
     }
 
-    try {
-      throw '';
-    } catch (_, nativeTrace) {
-      var trace = new Trace.from(nativeTrace);
-      return new LazyTrace(() => new Trace(trace.frames.skip(level + 1)));
-    }
+    var trace = new Trace.from(StackTrace.current);
+    return new LazyTrace(() => new Trace(trace.frames.skip(level + 1)));
   }
 
   /// Returns a new stack trace containing the same data as [trace].
diff --git a/pubspec.yaml b/pubspec.yaml
index 1c805c3..e0fdbb9 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -7,7 +7,7 @@
 #
 # When the major version is upgraded, you *must* update that version constraint
 # in pub to stay in sync with this.
-version: 1.6.0
+version: 1.6.1
 author: "Dart Team <misc@dartlang.org>"
 homepage: http://github.com/dart-lang/stack_trace
 description: >
@@ -19,4 +19,4 @@
 dev_dependencies:
   test: "^0.12.0"
 environment:
-  sdk: ">=1.8.0 <2.0.0"
+  sdk: ">=1.14.0 <2.0.0"
diff --git a/test/trace_test.dart b/test/trace_test.dart
index edb29fd..077f1ba 100644
--- a/test/trace_test.dart
+++ b/test/trace_test.dart
@@ -6,22 +6,6 @@
 import 'package:stack_trace/stack_trace.dart';
 import 'package:test/test.dart';
 
-String getStackTraceString() {
-  try {
-    throw '';
-  } catch (_, stackTrace) {
-    return stackTrace.toString();
-  }
-}
-
-StackTrace getStackTraceObject() {
-  try {
-    throw '';
-  } catch (_, stackTrace) {
-    return stackTrace;
-  }
-}
-
 Trace getCurrentTrace([int level]) => new Trace.current(level);
 
 Trace nestedGetCurrentTrace(int level) => getCurrentTrace(level);
diff --git a/test/vm_test.dart b/test/vm_test.dart
index 947f14b..f0967b5 100644
--- a/test/vm_test.dart
+++ b/test/vm_test.dart
@@ -12,22 +12,6 @@
 import 'package:stack_trace/stack_trace.dart';
 import 'package:test/test.dart';
 
-String getStackTraceString() {
-  try {
-    throw '';
-  } catch (_, stackTrace) {
-    return stackTrace.toString();
-  }
-}
-
-StackTrace getStackTraceObject() {
-  try {
-    throw '';
-  } catch (_, stackTrace) {
-    return stackTrace;
-  }
-}
-
 Frame getCaller([int level]) {
   if (level == null) return new Frame.caller();
   return new Frame.caller(level);
@@ -42,7 +26,7 @@
 void main() {
   group('Trace', () {
     test('.parse parses a real stack trace correctly', () {
-      var string = getStackTraceString();
+      var string = StackTrace.current.toString();
       var trace = new Trace.parse(string);
       expect(path.url.basename(trace.frames.first.uri.path),
           equals('vm_test.dart'));
@@ -50,7 +34,7 @@
     });
 
     test('converts from a native stack trace correctly', () {
-      var trace = new Trace.from(getStackTraceObject());
+      var trace = new Trace.from(StackTrace.current);
       expect(path.url.basename(trace.frames.first.uri.path),
           equals('vm_test.dart'));
       expect(trace.frames.first.member, equals('getStackTraceObject'));