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