summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Object-boundTargetFunction-01.js
blob: f87a0abc13cc9d93d026bae0467eeba9b13d5403 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Smoke tests for bound function things.

var g = newGlobal({newCompartment: true});
var dbg = new Debugger;
var gw = dbg.addDebuggee(g);
var arrw = gw.executeInGlobal("var arr = []; arr;").return;
var pushw = gw.executeInGlobal("var push = arr.push.bind(arr); push;").return;
assertEq(pushw.isBoundFunction, true);
assertEq(pushw.boundThis, arrw);
assertEq(pushw.boundArguments.length, 0);

var arr2 = gw.executeInGlobal("var arr2 = []; arr2").return;
assertEq(pushw.call(arr2, "tuesday").return, 1);
g.eval("assertEq(arr.length, 1);");
g.eval("assertEq(arr[0], 'tuesday');");
g.eval("assertEq(arr2.length, 0);");

g.eval("push = arr.push.bind(arr, 1, 'seven', {x: 'q'});");
pushw = gw.getOwnPropertyDescriptor("push").value;
assertEq(pushw.isBoundFunction, true);
var args = pushw.boundArguments;
assertEq(args.length, 3);
assertEq(args[0], 1);
assertEq(args[1], 'seven');
assertEq(args[2] instanceof Debugger.Object, true);
assertEq(args[2].getOwnPropertyDescriptor("x").value, "q");