| load(libdir + "asserts.js"); |
| /* |
| * Call the trap with the handler as the this value, the target as the first |
| * argument, and the original arguments as the third argument. |
| * |
| * Hooks that don't return an object must throw. |
| */ |
| var p; |
| var target = function () {}; |
| var handler = { |
| construct: function (target1, args, newTarget) { |
| assertEq(this, handler); |
| assertEq(target1, target); |
| assertEq(args.length, 2); |
| assertEq(args[0], 2); |
| assertEq(args[1], 3); |
| assertEq(newTarget, p); |
| } |
| } |
| for (p of [new Proxy(target, handler), Proxy.revocable(target, handler).proxy]) |
| assertThrowsInstanceOf(function () {new p(2, 3)}, TypeError); |