mirror of https://github.com/svaarala/duktape.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
199 lines
2.2 KiB
199 lines
2.2 KiB
/*
|
|
* For-loop + continue had a few control flow bugs in the past. The compiler
|
|
* handles an empty C part (for (A;B;C)) differently from a non-empty one, and
|
|
* there was a bug in the empty case with continue statements. This testcase
|
|
* exercises for+continue control paths.
|
|
*/
|
|
|
|
/*===
|
|
check
|
|
body 0
|
|
update
|
|
check
|
|
body 1
|
|
update
|
|
check
|
|
body 2
|
|
update
|
|
check
|
|
body 3
|
|
update
|
|
check
|
|
body 4
|
|
update
|
|
check
|
|
body 5
|
|
update
|
|
check
|
|
body 6
|
|
update
|
|
check
|
|
body 7
|
|
update
|
|
check
|
|
body 8
|
|
update
|
|
check
|
|
body 9
|
|
update
|
|
check
|
|
10
|
|
check
|
|
body 0
|
|
check
|
|
body 1
|
|
check
|
|
body 2
|
|
check
|
|
body 3
|
|
check
|
|
body 4
|
|
check
|
|
body 5
|
|
check
|
|
body 6
|
|
check
|
|
body 7
|
|
check
|
|
body 8
|
|
check
|
|
body 9
|
|
check
|
|
10
|
|
check
|
|
body 0
|
|
update
|
|
check
|
|
body 1
|
|
update
|
|
check
|
|
body 2
|
|
update
|
|
check
|
|
body 3
|
|
update
|
|
check
|
|
body 4
|
|
update
|
|
check
|
|
body 5
|
|
update
|
|
check
|
|
body 6
|
|
update
|
|
check
|
|
body 7
|
|
update
|
|
check
|
|
body 8
|
|
update
|
|
check
|
|
body 9
|
|
update
|
|
check
|
|
10
|
|
check
|
|
body 0
|
|
check
|
|
body 1
|
|
check
|
|
body 2
|
|
check
|
|
body 3
|
|
check
|
|
body 4
|
|
check
|
|
body 5
|
|
check
|
|
body 6
|
|
check
|
|
body 7
|
|
check
|
|
body 8
|
|
check
|
|
body 9
|
|
check
|
|
10
|
|
body 0
|
|
body 1
|
|
body 2
|
|
body 3
|
|
body 4
|
|
body 0
|
|
body 1
|
|
body 2
|
|
body 3
|
|
body 4
|
|
===*/
|
|
|
|
function forContinueTest1a() {
|
|
for (var i = 0; print('check'), i < 10; print('update')) {
|
|
print('body', i);
|
|
i++;
|
|
continue;
|
|
i += 100;
|
|
}
|
|
print(i);
|
|
}
|
|
|
|
function forContinueTest1b() {
|
|
for (var i = 0; print('check'), i < 10;) {
|
|
print('body', i);
|
|
i++;
|
|
continue;
|
|
i += 100;
|
|
}
|
|
print(i);
|
|
}
|
|
|
|
|
|
function forContinueTest2a() {
|
|
var i;
|
|
for (i = 0; print('check'), i < 10; print('update')) {
|
|
print('body', i);
|
|
i++;
|
|
continue;
|
|
i += 100;
|
|
}
|
|
print(i);
|
|
}
|
|
|
|
function forContinueTest2b() {
|
|
var i;
|
|
for (i = 0; print('check'), i < 10;) {
|
|
print('body', i);
|
|
i++;
|
|
continue;
|
|
i += 100;
|
|
}
|
|
print(i);
|
|
}
|
|
|
|
|
|
function forContinueTest3() {
|
|
for (var i in [1,2,3,4,5]) {
|
|
print('body', i);
|
|
continue;
|
|
}
|
|
}
|
|
|
|
function forContinueTest4() {
|
|
var i;
|
|
for (i in [1,2,3,4,5]) {
|
|
print('body', i);
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
try {
|
|
forContinueTest1a();
|
|
forContinueTest1b();
|
|
forContinueTest2a();
|
|
forContinueTest2b();
|
|
forContinueTest3();
|
|
forContinueTest4();
|
|
} catch (e) {
|
|
print(e);
|
|
}
|
|
|
|
|