Handles empty traces.

Previously .terse() would die if it processes an empty stack trace.
diff --git a/lib/src/trace.dart b/lib/src/trace.dart
index 2fce0c7..84a19ef 100644
--- a/lib/src/trace.dart
+++ b/lib/src/trace.dart
@@ -263,7 +263,7 @@
         var library = frame.library.replaceAll(_terseRegExp, '');
         return new Frame(Uri.parse(library), null, null, frame.member);
       }).toList();
-      if (newFrames.first.isCore && newFrames.length > 1) newFrames.removeAt(0);
+      if (newFrames.length > 1 && newFrames.first.isCore) newFrames.removeAt(0);
     }
 
     return new Trace(newFrames.reversed);
diff --git a/test/trace_test.dart b/test/trace_test.dart
index 249e9f6..7fb9b5b 100644
--- a/test/trace_test.dart
+++ b/test/trace_test.dart
@@ -350,6 +350,14 @@
 '''));
   });
 
+  test(".terse won't panic on an empty trace", () {
+    var trace = new Trace.parse('''
+''');
+
+    expect(trace.terse.toString(), equals('''
+'''));
+  });
+
   test('.foldFrames folds frames together bottom-up', () {
     var trace = new Trace.parse('''
 #0 notFoo (foo.dart:42:21)