summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/onEnterFrame-async-01.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/debug/onEnterFrame-async-01.js')
-rw-r--r--js/src/jit-test/tests/debug/onEnterFrame-async-01.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/debug/onEnterFrame-async-01.js b/js/src/jit-test/tests/debug/onEnterFrame-async-01.js
new file mode 100644
index 0000000000..299516264e
--- /dev/null
+++ b/js/src/jit-test/tests/debug/onEnterFrame-async-01.js
@@ -0,0 +1,32 @@
+// async functions fire onEnterFrame each time they resume, like generators
+
+let g = newGlobal({newCompartment: true});
+g.eval(`
+ async function timeout(n) {
+ for (let i = 0; i < n; i++) {
+ await Promise.resolve(i);
+ }
+ }
+ async function job() {
+ let racer = timeout(5);
+ await timeout(3);
+ await racer;
+ }
+`);
+
+let dbg = Debugger(g);
+let log = "";
+let nicknames = ["job", "t5", "t3"];
+dbg.onEnterFrame = frame => {
+ if (!("nickname" in frame))
+ frame.nickname = nicknames.shift() || "FAIL";
+ log += "(" + frame.nickname;
+ frame.onPop = completion => { log += ")"; };
+};
+
+g.job();
+drainJobQueue();
+assertEq(log,
+ "(job(t5)(t3))" +
+ "(t5)(t3)".repeat(3) +
+ "(t5)(job)(t5)(job)");