// Copyright (c) 2016, 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.

/// @assertion If the errorAreFatal, onExit and/or onError parameters are
/// provided, the isolate will act as if, respectively, setErrorsFatal,
/// addOnExitListener and addErrorListener were called with the corresponding
/// parameter and was processed before the isolate starts running.
///
/// @description Check that with errorAreFatal set to false the isolate is
/// only suspended on any error. The isolate is passive.
/// @author a.semenov@unipro.ru

import "dart:isolate";

main(List<String> args, List message) {
  SendPort sendPort = message[1];
  ReceivePort receivePort = new ReceivePort();
  dynamic i = 1;

  receivePort.listen(
     (data) {
        sendPort.send(data);
        // An error that should suspend the isolate
        sendPort.send(", " + i);
        sendPort.send("hello");
     }
  );
  message[0].send(receivePort.sendPort);
}
