// 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. // TODO(bkonyi): This test should be moved to compiler/dart2js. 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(); }(); }