// 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.

// @dart = 2.9

// 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());
}
