Enable parsing of IPv6 form addresse (see rfc2373 and rfc2732).

This also wraps the 'domain' component in toString with [...], if it
contains any ':' characters.

BUG=
R=floitsch@google.com, sgjesse@google.com

Review URL: https://codereview.chromium.org//14753005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/stack_trace@22228 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/pkgs/stack_trace/lib/src/frame.dart b/pkgs/stack_trace/lib/src/frame.dart
index f05b469..cb7d656 100644
--- a/pkgs/stack_trace/lib/src/frame.dart
+++ b/pkgs/stack_trace/lib/src/frame.dart
@@ -85,7 +85,7 @@
       throw new FormatException("Couldn't parse stack trace line '$frame'.");
     }
 
-    var uri = new Uri.fromString(match[2]);
+    var uri = Uri.parse(match[2]);
     var member = match[1].replaceAll("<anonymous closure>", "<fn>");
     return new Frame(uri, int.parse(match[3]), int.parse(match[4]), member);
   }
diff --git a/pkgs/stack_trace/test/frame_test.dart b/pkgs/stack_trace/test/frame_test.dart
index 02bec68..826bad7 100644
--- a/pkgs/stack_trace/test/frame_test.dart
+++ b/pkgs/stack_trace/test/frame_test.dart
@@ -31,8 +31,7 @@
   test('parses a stack frame correctly', () {
     var frame = new Frame.parse("#1      Foo._bar "
         "(file:///home/nweiz/code/stuff.dart:42:21)");
-    expect(frame.uri,
-        equals(new Uri.fromString("file:///home/nweiz/code/stuff.dart")));
+    expect(frame.uri, equals(Uri.parse("file:///home/nweiz/code/stuff.dart")));
     expect(frame.line, equals(42));
     expect(frame.column, equals(21));
     expect(frame.member, equals('Foo._bar'));
diff --git a/pkgs/stack_trace/test/trace_test.dart b/pkgs/stack_trace/test/trace_test.dart
index cbbf90b..d3fa56e 100644
--- a/pkgs/stack_trace/test/trace_test.dart
+++ b/pkgs/stack_trace/test/trace_test.dart
@@ -41,10 +41,10 @@
 ''');
 
     expect(trace.frames[0].uri,
-        equals(new Uri.fromString("file:///home/nweiz/code/stuff.dart")));
-    expect(trace.frames[1].uri, equals(new Uri.fromString("dart:async")));
+        equals(Uri.parse("file:///home/nweiz/code/stuff.dart")));
+    expect(trace.frames[1].uri, equals(Uri.parse("dart:async")));
     expect(trace.frames[2].uri,
-        equals(new Uri.fromString("http://pub.dartlang.org/thing.dart")));
+        equals(Uri.parse("http://pub.dartlang.org/thing.dart")));
   });
 
   test('parses a real stack trace correctly', () {