// 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() { Iterator i = g().iterator; Expect.isTrue(i.moveNext()); Expect.equals("a", i.current); Expect.isTrue(i.moveNext()); Expect.equals("b", i.current); Expect.throws(() => i.moveNext(), (error) => error == "pow!"); } main() { test1(); // //# test1: ok test2(); // //# test2: ok }