Index: tests/lib_strong/async/dart2js_uncaught_error_test.dart |
diff --git a/tests/lib_strong/async/dart2js_uncaught_error_test.dart b/tests/lib_strong/async/dart2js_uncaught_error_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6c7f12d7e1068a29bde3baf38a01ea070cde2347 |
--- /dev/null |
+++ b/tests/lib_strong/async/dart2js_uncaught_error_test.dart |
@@ -0,0 +1,46 @@ |
+// 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. |
+ |
+import "dart:async"; |
+import "dart:js"; |
+import "dart:collection" show Queue; |
+import "package:expect/expect.dart"; |
+import "package:async_helper/async_helper.dart"; |
+ |
+var errors = new Queue(); |
+int ctr = 0; |
+ |
+main() { |
+ print("STARTED"); |
+ asyncStart(); |
+ |
+ void errorHandler(self, message, url, line, [column, error]) { |
+ print(">> $message / $ctr"); |
+ var expect = errors.removeFirst(); |
+ if (ctr == 2) { |
+ asyncEnd(); |
+ print("DONE"); |
+ } |
+ Expect.equals(expect[0].toString(), message); |
+ Expect.equals(expect[1].toString(), error["stack"].toString()); |
+ } |
+ context["onerror"] = new JsFunction.withThis(errorHandler); |
+ |
+ void throwit() { |
+ var err = ++ctr; |
+ try { |
+ throw err; |
+ } catch (e, s) { |
+ errors.add([e, s]); |
+ rethrow; |
+ } |
+ } |
+ |
+ () async { |
+ () async { |
+ throwit(); |
+ }(); |
+ throwit(); |
+ }(); |
+} |