blob: aa5ba928fc3a3bebb933a695e65db60a3ead3587 [file] [log] [blame]
// 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.
library test;
import 'dart:async';
import 'dart:isolate';
var firstFunction;
var finishFunction;
void runFunctions() {
try {
firstFunction();
} catch (e) {
new Timer(Duration.ZERO, finishFunction);
rethrow;
}
}
void startTest(SendPort finishPort, replyPort) {
firstFunction = () { throw new UnsupportedError("ignore exception"); };
finishFunction = () { finishPort.send("done"); };
new Timer(Duration.ZERO, runFunctions);
}
runTest() {
port.receive(startTest);
}
bool globalErrorHandler(IsolateUnhandledException e) {
return e.source is UnsupportedError && e.source.message == "ignore exception";
}
main() {
var port = new ReceivePort();
var timer;
SendPort otherIsolate = spawnFunction(runTest, globalErrorHandler);
otherIsolate.send(port.toSendPort());
port.receive((msg, replyPort) { port.close(); timer.cancel(); });
timer = new Timer(const Duration(seconds: 2), () { throw "failed"; });
}