dart-sdk/tests/language/regress_24935_test.dart
Matthias Hausner fef73d59ad Restore try contexts when breaking out of async for loops
Restore the try context in the finally clause of the implicit
try-finally around await-for loops. This ensures that the context
is restored even when breaking out of the loop.

BUG=24935
R=fschneider@google.com, regis@google.com

Review URL: https://codereview.chromium.org/1661433003 .
2016-02-02 13:33:15 -08:00

24 lines
682 B
Dart

// Copyright (c) 2016, 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';
S() => new Stream.fromIterable([1]);
Future main() async {
L: for (var s = 0; s < 10; s++) {
await for (var s1 in S()){
await for (var s2 in S()){
continue L;
}
}
}
// Regression check: make sure throwing an exception
// after breaking out of the innermost loop does not
// crash the VM. In other words, the expected test
// outcome is an unhandled exception.
throw "ball"; /// 01: runtime error
}