Chromium Code Reviews| Index: tests/language/await_exceptions_test.dart |
| diff --git a/tests/language/await_exceptions_test.dart b/tests/language/await_exceptions_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..96dffd88255cd44d71f1b6eb255c9fafe457d92c |
| --- /dev/null |
| +++ b/tests/language/await_exceptions_test.dart |
| @@ -0,0 +1,81 @@ |
| +// Copyright (c) 2014, 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. |
| + |
| +// VMOptions=--enable_async --optimization-counter-threshold=5 |
| + |
| +import 'package:expect/expect.dart'; |
| + |
| +import 'dart:async'; |
| + |
| +// It does not matter where a future is generated. |
| +bar(p) async => p; |
| +baz(p) => new Future(() => p); |
| + |
| +test0_1() async { |
| + throw 1; |
| +} |
| + |
| +test0() async { |
| + try { |
| + await test0_1(); |
| + } catch (e) { |
| + Expect.equals(1, e); |
| + } |
| +} |
| + |
| +test1_1() async { |
| + throw 1; |
| +} |
| + |
| +test1_2() async { |
| + try { |
| + await test1_1(); |
| + } catch (e) { |
| + throw e+1; |
| + } |
| +} |
| + |
| +test1() async { |
| + try { |
| + await test1_2(); |
| + } catch (e) { |
| + Expect.equals(2, e); |
| + } |
| +} |
| + |
| +test2() async { |
| + var x; |
| + var test2_1 = () async { |
| + try { |
| + throw 'a'; |
| + } catch (e) { |
| + throw e + 'b'; |
| + } |
| + }; |
| + try { |
| + try { |
| + await test2_1(); |
| + } catch (e) { |
| + var y = await bar(e + 'c'); |
| + throw y; |
| + } |
| + } catch (e) { |
| + x = e + 'd'; |
| + return '?'; |
| + } finally { |
| + print(x); |
|
srdjan
2014/09/05 19:32:10
Why printing in test?
Michael Lippautz (Google)
2014/09/05 19:50:18
Left over. removed.
|
| + return x; |
| + } |
| + return '!'; |
| +} |
| + |
| +main() async { |
| + var result; |
| + for (int i = 0; i < 10; i++) { |
| + await test0(); |
| + await test1(); |
| + result = await test2(); |
| + Expect.equals('abcd', result); |
| + } |
| +} |