// Copyright (C) 2016 Jordan Harband. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- description: | Used to assert the correctness of object behavior in the presence and context of Proxy objects. defines: [allowProxyTraps] ---*/ function allowProxyTraps(overrides) { function throwTest262Error(msg) { return function () { throw new Test262Error(msg); }; } if (!overrides) { overrides = {}; } return { getPrototypeOf: overrides.getPrototypeOf || throwTest262Error('[[GetPrototypeOf]] trap called'), setPrototypeOf: overrides.setPrototypeOf || throwTest262Error('[[SetPrototypeOf]] trap called'), isExtensible: overrides.isExtensible || throwTest262Error('[[IsExtensible]] trap called'), preventExtensions: overrides.preventExtensions || throwTest262Error('[[PreventExtensions]] trap called'), getOwnPropertyDescriptor: overrides.getOwnPropertyDescriptor || throwTest262Error('[[GetOwnProperty]] trap called'), has: overrides.has || throwTest262Error('[[HasProperty]] trap called'), get: overrides.get || throwTest262Error('[[Get]] trap called'), set: overrides.set || throwTest262Error('[[Set]] trap called'), deleteProperty: overrides.deleteProperty || throwTest262Error('[[Delete]] trap called'), defineProperty: overrides.defineProperty || throwTest262Error('[[DefineOwnProperty]] trap called'), enumerate: throwTest262Error('[[Enumerate]] trap called: this trap has been removed'), ownKeys: overrides.ownKeys || throwTest262Error('[[OwnPropertyKeys]] trap called'), apply: overrides.apply || throwTest262Error('[[Call]] trap called'), construct: overrides.construct || throwTest262Error('[[Construct]] trap called') }; }