| // 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. | 
 |  | 
 | import "package:expect/expect.dart"; | 
 | import "package:async_helper/async_helper.dart"; | 
 |  | 
 | // Two loop variables | 
 | test1() async { | 
 |   var r = 0; | 
 |   label: | 
 |   for (var i = 1, | 
 |           j = | 
 |       await //# await_in_init: ok | 
 |               10; | 
 |       i < 10 && | 
 |           j > | 
 |       await //# await_in_condition: ok | 
 |               -5; | 
 |       j--, | 
 |       i += | 
 |       await //# await_in_update: ok | 
 |           1) { | 
 |     if (i < | 
 |         await //# await_in_body: ok | 
 |             5 || | 
 |         j < -5) { | 
 |       continue label; | 
 |     } | 
 |     r++; | 
 |   } | 
 |   Expect.equals(5, r); | 
 | } | 
 |  | 
 | // One loop variable | 
 | test2() async { | 
 |   var r = 0; | 
 |   label: | 
 |   for (var i = | 
 |      await //# await_in_init: ok | 
 |           0; | 
 |       i < | 
 |      await //# await_in_condition: ok | 
 |           10; | 
 |       i += | 
 |      await //# await_in_update: ok | 
 |           1) { | 
 |     if (i < | 
 |         await //# await_in_body: ok | 
 |         5) { | 
 |       continue label; | 
 |     } | 
 |     r++; | 
 |   } | 
 |   Expect.equals(5, r); | 
 | } | 
 |  | 
 | // Variable not declared in initializer; | 
 | test3() async { | 
 |   var r = 0, i, j; | 
 |   label: | 
 |   for (i = | 
 |       await //# await_in_init: ok | 
 |           0; | 
 |       i < | 
 |       await //# await_in_condition: ok | 
 |           10; | 
 |       i += | 
 |       await //# await_in_update: ok | 
 |           1) { | 
 |     if (i < | 
 |         await //# await_in_body: ok | 
 |         5) { | 
 |       continue label; | 
 |     } | 
 |     r++; | 
 |   } | 
 |   Expect.equals(5, r); | 
 | } | 
 |  | 
 | // Nested loop | 
 | test4() async { | 
 |   var r = 0; | 
 |   label: | 
 |   for (var i = | 
 |       await //# await_in_init: ok | 
 |           0; | 
 |       i < | 
 |       await //# await_in_condition: ok | 
 |           10; | 
 |       i += | 
 |       await //# await_in_update: ok | 
 |           1) { | 
 |     if (i < | 
 |         await //# await_in_body: ok | 
 |         5) { | 
 |       for (int i = 0; i < 10; i++) { | 
 |         continue label; | 
 |       } | 
 |     } | 
 |     r++; | 
 |   } | 
 |   Expect.equals(5, r); | 
 | } | 
 |  | 
 | test() async { | 
 |   await test1(); | 
 |   await test2(); | 
 |   await test3(); | 
 |   await test4(); | 
 | } | 
 |  | 
 | main() { | 
 |   asyncStart(); | 
 |   test().then((_) => asyncEnd()); | 
 | } |