Cancel async generator only when it yields

Async generators should only react to a cancellation when they
yield a value. Otherwise, the cancellation is ignored.

The example in dartbug.com/23436 should therefore never terminate,
because the generator function contains no yield statement.

This CL fixes bug 23436 by implementing the expected behavior, i.e.
not terminating the generator. If a yield statement is added to the
generator, the finally clause is executed once only, as expected.

BUG=23436
R=floitsch@google.com

Review URL: https://codereview.chromium.org/1683763002 .
1 file changed
tree: 5be2d1c6aee799df35ba27603b89d3238894477f
  1. client/
  2. docs/
  3. pkg/
  4. runtime/
  5. samples/
  6. samples-dev/
  7. sdk/
  8. site/
  9. tests/
  10. third_party/
  11. tools/
  12. utils/
  13. .gitattributes
  14. .gitignore
  15. .mailmap
  16. AUTHORS
  17. CHANGELOG.md
  18. codereview.settings
  19. create_sdk.gyp
  20. dart.gyp
  21. DEPS
  22. LICENSE
  23. PATENTS
  24. PRESUBMIT.py
  25. README.dart-sdk
  26. README.md
  27. WATCHLISTS
README.md

Dart

Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.

Using Dart

Visit the dartlang.org to learn more about the language, tools, getting started, and more.

Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.

Building Dart

Learn how to get the source and prepare your machine to build the SDK.

There are more documents on our wiki.

Contributing to Dart

The easiest way to contribute to Dart is to file issues.

You can also contribute patches, as described in Contributing.

License

See LICENSE.