Source code
Revision control
Copy as Markdown
Other Tools
// |jit-test| --emit-interpreter-entry
async function plain(a, b) {
var x = await a;
assertEq(x, 1);
assertEq(b, 2);
return x + 1;
}
async function* asyncGen(a) {
var x = await a;
yield x;
yield x + 1;
assertEq(a, 1);
}
async function forAwait(a) {
var sum = 0;
for await (var x of [a, a + 1, a + 2]) {
sum += x;
}
return sum;
}
async function thrower(a) {
await a;
throw "boom";
}
var results = [];
for (var i = 0; i < 30; i++) {
plain(1, 2).then(v => results.push(v));
(async function () {
var values = [];
for await (var v of asyncGen(1)) {
values.push(v);
}
assertEq(values.join(","), "1,2");
results.push("gen");
})();
forAwait(1).then(v => {
assertEq(v, 6);
results.push("forAwait");
});
thrower(1).catch(e => {
assertEq(e, "boom");
results.push("thrower");
});
}
drainJobQueue();
assertEq(results.length, 30 * 4);
assertEq(results.filter(v => v === 2).length, 30);
assertEq(results.filter(v => v === "gen").length, 30);
assertEq(results.filter(v => v === "forAwait").length, 30);
assertEq(results.filter(v => v === "thrower").length, 30);