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

// Test program for sync* generator functions and yielding in try blocks.

import "package:expect/expect.dart";

f() sync* {
  try {
    yield 1;
    throw "three";
  } catch (e) {
    yield 2;
    yield e;
  } finally {
    yield 4;
  }
}

test1() {
  var s = f().toString();
  Expect.equals("(1, 2, three, 4)", s);
  print(s);
}

g() sync* {
  try {
    yield "a";
    throw "pow!";
  } finally {
    yield "b";
  }
}

test2() {
  var s;
  try {
    s = g().toString();
  } catch (e) {
    Expect.equals("pow!", e);
    Expect.equals("(a, b)", s);
    print(s);
  }
}

main() {
  test1();  /// test1: ok
  test2();  /// test2: ok
}