diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /js/src/jit-test/tests/debug/Object-getPromiseReactions-03.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | js/src/jit-test/tests/debug/Object-getPromiseReactions-03.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/debug/Object-getPromiseReactions-03.js b/js/src/jit-test/tests/debug/Object-getPromiseReactions-03.js new file mode 100644 index 0000000000..81d639efb7 --- /dev/null +++ b/js/src/jit-test/tests/debug/Object-getPromiseReactions-03.js @@ -0,0 +1,41 @@ +// Debugger.Object.prototype.getPromiseReactions reports reaction records +// created with `then` and `catch`. + +load(libdir + 'match.js'); +load(libdir + 'match-debugger.js'); + +const { Pattern } = Match; +const { OBJECT_WITH_EXACTLY: EXACT } = Pattern; +function EQ(v) { + return new DebuggerIdentical(v); +} + +var g = newGlobal({ newCompartment: true }); +var dbg = new Debugger; +var DOg = dbg.addDebuggee(g); + +g.eval(` + function identity(v) { return v; } + function thrower(e) { throw e; } + function fib(n) { if (n <= 1) return 1; else return fib(n-1) + fib(n-2); } + function triangle(n) { return (n+1) * n / 2; } + + var pResolve, pReject; + var p = new Promise((resolve, reject) => { pResolve = resolve; pReject = reject }); + var p2 = p.then(identity, thrower); + var p3 = p.then(fib); + var p4 = p.catch(triangle); +`); + +var [DOidentity, DOthrower, DOfib, DOtriangle, DOp, DOp2, DOp3, DOp4] = + [g.identity, g.thrower, g.fib, g.triangle, g.p, g.p2, g.p3, g.p4].map(p => DOg.makeDebuggeeValue(p)); + +Match.Pattern([ + EXACT({ resolve: EQ(DOidentity), reject: EQ(DOthrower), result: EQ(DOp2) }), + EXACT({ resolve: EQ(DOfib), result: EQ(DOp3) }), + EXACT({ reject: EQ(DOtriangle), result: EQ(DOp4) }) +]).assert(DOp.getPromiseReactions(), + "promiseReactions doesn't return expected reaction list"); + +g.pResolve(3); +assertEq(DOp.getPromiseReactions().length, 0); |