| Index: tests/language/asyncstar_yield_test.dart
 | 
| diff --git a/tests/language/asyncstar_yield_test.dart b/tests/language/asyncstar_yield_test.dart
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..6a546fac864a53dbd66e2fb962f7040bde018199
 | 
| --- /dev/null
 | 
| +++ b/tests/language/asyncstar_yield_test.dart
 | 
| @@ -0,0 +1,70 @@
 | 
| +// 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.
 | 
| +
 | 
| +import "dart:async";
 | 
| +import "package:expect/expect.dart";
 | 
| +import "package:async_helper/async_helper.dart";
 | 
| +
 | 
| +Stream<int> foo1() async* {
 | 
| +  yield 1;
 | 
| +  var p = await new Future.value(10);
 | 
| +  yield p + 10;
 | 
| +}
 | 
| +
 | 
| +Stream<int> foo2() async* {
 | 
| +  int i = 0;
 | 
| +  while (true) {
 | 
| +    await (new Future.delayed(new Duration(milliseconds: 0), () {}));
 | 
| +    if (i > 10) return;
 | 
| +    yield i;
 | 
| +    i++;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +Stream<int> foo3(p) async* {
 | 
| +  int i = 0;
 | 
| +  bool t = false;
 | 
| +  yield null;
 | 
| +  while (true) {
 | 
| +    i++;
 | 
| +    a: for (int i = 0; i < p; i++) {
 | 
| +      if (!t) {
 | 
| +        for (int j = 0; j < 3; j++) {
 | 
| +          yield -1;
 | 
| +          t = true;
 | 
| +          break a;
 | 
| +        }
 | 
| +      }
 | 
| +      await 4;
 | 
| +      yield i;
 | 
| +    }
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +Completer<bool> finalized = new Completer<bool>();
 | 
| +
 | 
| +Stream<int> foo4() async* {
 | 
| +  int i = 0;
 | 
| +  try {
 | 
| +    while (true) {
 | 
| +      yield i;
 | 
| +      i++;
 | 
| +    }
 | 
| +  } finally {
 | 
| +    // Canceling the stream-subscription should run the finalizer.
 | 
| +    finalized.complete(true);
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +main () async {
 | 
| +  asyncStart();
 | 
| +  Expect.listEquals([1, 20], await (foo1().toList()));
 | 
| +  Expect.listEquals([0, 1, 2, 3], await (foo2().take(4).toList()));
 | 
| +  Expect.listEquals([null, -1, 0, 1, 2, 3, 0, 1, 2, 3],
 | 
| +      await (foo3(4).take(10).toList()));
 | 
| +  Expect.listEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
 | 
| +      await (foo4().take(10).toList()));
 | 
| +  Expect.isTrue(await (finalized.future));
 | 
| +  asyncEnd();
 | 
| +}
 | 
| 
 |