1
Fork 0
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:
Linus Groh 2020-04-21 19:21:26 +01:00 committed by Andreas Kling
parent c378a1c730
commit 07af2e6b2c
8 changed files with 372 additions and 90 deletions

View 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);
}