blob: c33fa532eb8d6580ad017d9f04ce14b321f36c62 [file] [log] [blame]
// 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());
}