mirror of
https://github.com/RGBCube/serenity
synced 2025-05-20 11:45:06 +00:00
LibJS: Implement basic for..in and for..of loops
This commit is contained in:
parent
c378a1c730
commit
07af2e6b2c
8 changed files with 372 additions and 90 deletions
43
Libraries/LibJS/Tests/for-of-basic.js
Normal file
43
Libraries/LibJS/Tests/for-of-basic.js
Normal file
|
@ -0,0 +1,43 @@
|
|||
load("test-common.js");
|
||||
|
||||
try {
|
||||
assertThrowsError(() => {
|
||||
for (const _ of 123) {}
|
||||
}, {
|
||||
error: TypeError,
|
||||
message: "for..of right-hand side must be iterable"
|
||||
});
|
||||
|
||||
assertThrowsError(() => {
|
||||
for (const _ of {foo: 1, bar: 2}) {}
|
||||
}, {
|
||||
error: TypeError,
|
||||
message: "for..of right-hand side must be iterable"
|
||||
});
|
||||
|
||||
assertVisitsAll(visit => {
|
||||
for (const num of [1, 2, 3]) {
|
||||
visit(num);
|
||||
}
|
||||
}, [1, 2, 3]);
|
||||
|
||||
assertVisitsAll(visit => {
|
||||
for (const char of "hello") {
|
||||
visit(char);
|
||||
}
|
||||
}, ["h", "e", "l", "l", "o"]);
|
||||
|
||||
assertVisitsAll(visit => {
|
||||
for (const char of new String("hello")) {
|
||||
visit(char);
|
||||
}
|
||||
}, ["h", "e", "l", "l", "o"]);
|
||||
|
||||
var char;
|
||||
for (char of "abc");
|
||||
assert(char === "c");
|
||||
|
||||
console.log("PASS");
|
||||
} catch (e) {
|
||||
console.log("FAIL: " + e);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue