|  | // 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. | 
|  |  | 
|  | // TODO(jmesserly): this is a copy of the language test of the same name, | 
|  | // we can remove this copy when we're running against those tests. | 
|  | import "package:expect/expect.dart"; | 
|  |  | 
|  | bar() sync* { | 
|  | int i = 1; | 
|  | int j = 1; | 
|  | while (true) { | 
|  | yield i; | 
|  | j = i + j; | 
|  | i = j - i; | 
|  | } | 
|  | } | 
|  |  | 
|  | foo() sync* { | 
|  | yield* [1, 2, 3]; | 
|  | yield null; | 
|  | // TODO(jmesserly): added cast here to work around: | 
|  | // https://codereview.chromium.org/1213503002/ | 
|  | yield* bar() as Iterable; | 
|  | } | 
|  |  | 
|  | main() async { | 
|  | Expect.listEquals([1, 2, 3, null, 1, 1, 2, 3, 5], foo().take(9).toList()); | 
|  | } |