summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Frame-onPop-generators-07.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/debug/Frame-onPop-generators-07.js')
-rw-r--r--js/src/jit-test/tests/debug/Frame-onPop-generators-07.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/debug/Frame-onPop-generators-07.js b/js/src/jit-test/tests/debug/Frame-onPop-generators-07.js
new file mode 100644
index 0000000000..7872b345e6
--- /dev/null
+++ b/js/src/jit-test/tests/debug/Frame-onPop-generators-07.js
@@ -0,0 +1,40 @@
+// Completion values for generators report yields and initial yields.
+
+load(libdir + "asserts.js");
+load(libdir + 'match.js');
+load(libdir + 'match-debugger.js');
+const { Pattern } = Match;
+const { OBJECT_WITH_EXACTLY: X } = Pattern;
+
+const g = newGlobal({ newCompartment: true });
+g.eval(`
+ function* f() {
+ yield "yielding";
+ return "returning";
+ }
+`);
+
+const dbg = new Debugger(g);
+const completions = [];
+dbg.onEnterFrame = frame => {
+ frame.onPop = completion => {
+ completions.push(completion);
+ };
+};
+
+assertDeepEq([... g.f()], ["yielding"]);
+print(JSON.stringify(completions));
+Pattern([
+ X({
+ return: new DebuggerObjectPattern("Generator", {}),
+ yield: true,
+ initial: true
+ }),
+ X({
+ return: new DebuggerObjectPattern("Object", { value: "yielding", done: false }),
+ yield: true
+ }),
+ X({
+ return: new DebuggerObjectPattern("Object", { value: "returning", done: true })
+ }),
+]).assert(completions);